Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «НаписаниС скриптов для Blender 2.49Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 28

Автор Michel Anders

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ сгораниС β€” коррСляция слоТных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Ρ‚Π°ΠΊΡ‚Π½Ρ‹ΠΉ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сгорания. Π£ Ρ‚Π°ΠΊΠΎΠ³ΠΎ двигатСля Π΅ΡΡ‚ΡŒ мноТСство двиТущихся частСй, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… связаны слоТным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ частями двигатСля, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ. На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ пСрСчислСны названия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° обратимся ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ частям ΠΌΠΎΡ‚ΠΎΡ€Π°. (Π― Π½Π΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΈ Π½Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ названия, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹, Π½ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΈΡ… Π²Π΅Ρ‰Π°Ρ…. Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ сюда http://en.wikipedia.org/wiki/Four-stroke_cycle.)




camshaft – Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Π»

outlet valve – выпускной ΠΊΠ»Π°ΠΏΠ°Π½

inlet valve – впускной ΠΊΠ»Π°ΠΏΠ°Π½

cylinder – Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€

piston – ΠΏΠΎΡ€ΡˆΠ΅Π½ΡŒ

connecting rod – ΡˆΠ°Ρ‚ΡƒΠ½

drive shaft  β€“ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π΅Π½Ρ‡Π°Ρ‚Ρ‹ΠΉ Π²Π°Π»


ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ части, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, для управлСния Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ частями, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡ‚ΡŒΡΡ: Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΡ€ΡˆΠ½ΠΈ Π² Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°Ρ… Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π·Π° счСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ воспламСнСнного Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°, ΠΎΠ½ΠΈ Ρ‚ΠΎΠ»ΠΊΠ°ΡŽΡ‚ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π²Π°Π» (ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π΅Π½Ρ‡Π°Ρ‚Ρ‹ΠΉ Π²Π°Π») с соСдинСнным ΠΌΠ°Ρ…ΠΎΠ²Ρ‹ΠΌ колСсом ΠΈ  Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Π»ΠΎΠΌ (ΠΈΠ»ΠΈ Π² нашСм случаС с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ здСсь), Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ возвращаСтся ΠΊ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π²Π°Π»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ выпускных ΠΈ впускных ΠΊΠ»Π°ΠΏΠ°Π½ΠΎΠ². ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ нСпосрСдствСнно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π° ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ  стимулируСт Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ. Π’ нашСй установкС ΠΌΠ°Ρ…ΠΎΠ²ΠΎΠ΅ колСсо Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π²Π°Π» ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, Π° Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π²Π°Π», Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ вСсти Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΡ€ΡˆΠ΅Π½ΡŒ ΠΈ Π΅Π³ΠΎ ΡˆΠ°Ρ‚ΡƒΠ½. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ энСргиСй Π»Π°ΠΌΠΏΡ‹, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π² Π½Π°ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈΠΊ свСчи заТигания, вращая Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π²Π°Π».

Π’Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π²Π°Π» просто Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ…ΠΎΠ²ΠΎΠ³ΠΎ колСса, ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ (это ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ограничСния copy rotation ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ здСсь ΠΌΡ‹ всё Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· pydrivers). Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ pydrivers для ΠΊΠ°Π½Π°Π»Π° RotX Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° это:

ob('Flywheel').RotX/(2*m.pi)*36

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π΅ΡƒΠΊΠ»ΡŽΠΆΠΈΠΌ, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ - вращСния ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ pydriver-выраТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π² градусах, ΠΏΠΎΠ΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° 10.

Π’Ρ‹ΡΡˆΠ°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈ ΠΎΠ±Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π°Π»Π° Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ…ΠΎΠ²ΠΎΠ³ΠΎ колСса, Π½ΠΎ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½ΠΎΠΉ Π² Π΄Π²Π° Ρ€Π°Π·Π° ΠΈ с ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ вращСния:

m.degrees(ob('Flywheel').RotX*-0.5)/10.0

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ функциям Π² матСматичСском ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠŸΠΈΡ‚ΠΎΠ½Π° math, ΠΌΡ‹ Π½Π΅ стали ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² градусы ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π°  воспользовались Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ degrees(), поставляСмой с  ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ math.

ΠœΡ‹ смодСлировали Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Π» с ΠΊΡƒΠ»Π°Ρ‡ΠΊΠΎΠΌ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Π²Π½ΠΈΠ·. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ оси X Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π°Π»Π° Π½Π° Π²Ρ…ΠΎΠ΄Π΅ посрСдством вращСния Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Π°Π»Π°, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ двигаСтся Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π½ΠΎΠΉ скорости. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅Π³ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ вращСния Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ΡΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρƒ воспламСнСния Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ»Π°ΠΏΠ°Π½ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Π²Π½ΠΈΠ· ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ»Π°ΠΏΠ°Π½ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ искрой воспламСнСния:

ob('DriveShaftPart').RotX/(2*m.pi)*18+9




Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π°Π»Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ запаздывания (здСсь 24, Π½ΠΎ настройка этого двигатСля Π½Π΅ совсСм соотвСтствуСт Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ΅):

ob('DriveShaftPart').RotX/(2*m.pi)*18+24


Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ€ΡˆΠ½Ρ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Π½ΠΎ Π΅Π³ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ слоТно для вычислСния. Нас интСрСсуСт Π΄Π»ΠΈΠ½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° Q β€” смотритС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ рисунок β€” ΠΈ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Π°Π»Π° ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π³Π΄Π΅ ΡˆΠ°Ρ‚ΡƒΠ½ (L Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅) соСдиняСтся с ΠΏΠΎΡ€ΡˆΠ½Π΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π»ΠΈΠ½Π° ΡˆΠ°Ρ‚ΡƒΠ½Π° постоянна, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Q Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΡ‚ ΡƒΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Ξ± Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Π°Π»Π°. РасстояниС ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π° Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Π°Π»Π°, Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π³Π΄Π΅ ΡˆΠ°Ρ‚ΡƒΠ½ связан с Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ Π²Π°Π»ΠΎΠΌ, фиксировано. ΠœΡ‹ Π½Π°Π·ΠΎΠ²Π΅ΠΌ это расстояниС R. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ со сторонами Q, L, ΠΈ R ΠΈ извСстСн ΡƒΠ³ΠΎΠ» Ξ±. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Ρ€ΠΈ ΠΈΠ· этих Π΄Π°Π½Π½Ρ‹Ρ… (L, R, ΠΈ Ξ±) извСстны, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ  Q, ΠΏΡ€ΠΈ использовании Ρ‚Π΅ΠΎΡ€Π΅ΠΌΡ‹ косинусов (http://ru.wikipedia.org/wiki/Π’Π΅ΠΎΡ€Π΅ΠΌΠ°_косинусов).   ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ   ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ q() Π² Ρ„Π°ΠΉΠ»Π΅ pydrivers.py, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ Q, ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… L, R, ΠΈ Ξ±:

 def q(l,r,a): return r*cos(a)+sqrt(l**2-(r*sin(a))**2)

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для ΠΊΠ°Π½Π°Π»Π° ΠΏΠΎΡ€ΡˆΠ½Ρ LocZ просто обращаСтся ΠΊ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

p.q(1.542,0.655,ob('DriveShaftPart').RotX)

Π’ΠΎΡ‡Π½Ρ‹Π΅ значСния для L ΠΈ R Π±Ρ‹Π»ΠΈ взяты ΠΈΠ· мСша, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Ρ€ΡˆΠΈΠ½ ΡˆΠ°Ρ‚ΡƒΠ½Π° ΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Π°Π»Π° Π² ΠΎΠΊΠ½Π΅ Transform Properties. (ΠΊΠ½ΠΎΠΏΠΊΠ° N Π² ΠΎΠΊΠ½Π΅ 3D-Π²ΠΈΠ΄Π°)

Для самого ΡˆΠ°Ρ‚ΡƒΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для LocZ-ΠΊΠ°Π½Π°Π»Π°, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ соСдинСниС ΠΏΠΎΡ€ΡˆΠ½Ρ ΠΈ ΡˆΠ°Ρ‚ΡƒΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ совпадали.

Однако, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡˆΠ°Ρ‚ΡƒΠ½Π° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ оси Z, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ вращаСтся Π²ΠΎΠΊΡ€ΡƒΠ³ оси X с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅ΠΉ ΡˆΠ°Ρ‚ΡƒΠ½ с ΠΏΠΎΡ€ΡˆΠ½Π΅ΠΌ. Π£Π³ΠΎΠ» вращСния (Ξ³ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅) ΠΌΠΎΠΆΠ½ΠΎ вывСсти ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ L, R, ΠΈ Ξ±:

def topa(l,r,a):

    Q=q(l,r,a)

    ac=acos((Q**2+l**2-r**2)/(2*Q*l))

    if a%(2*pi)>pi : ac = -ac

    return -ac

Pydriver Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для RotX Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

m.degrees(p.topa(1.542,0.655,ob('DriveShaftPart').RotX))/1 0.0

Впускной ΠΈ выпускной ΠΊΠ»Π°ΠΏΠ°Π½Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π°Π»ΠΎΠ². ΠžΡ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠ΅ ΠΊΡƒΠ»Π°Ρ‡ΠΊΠ° ΠΎΡ‡Π΅Π½ΡŒ слоТно, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ здСсь ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π΅ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°, Π° аппроксимируСм Π΅Π΅, ΠΎΠ½Π° выглядит достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»Π°ΠΏΠ°Π½ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Ρ‰Π΅ ΠΎΠΆΠΈΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΠΏΠ°Π½Π° ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΡ‚ ΡƒΠ³Π»Π° вращСния:




НаконСц, Π² pydrivers.py ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ spike(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π°Π»Π° ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 0.0 ΠΈ 1.0 ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π΅Π·ΠΊΠΎ возрастаСт Π² Ρ€Π°ΠΉΠΎΠ½Π΅ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°:

def spike(angle):

    t = (cos(angle)+1.0)/2.0

    return t**4

БСйчас ΠΊΠ»Π°ΠΏΠ°Π½ двиТСтся Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ, Π½ΠΎ линия, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ слСдуСт, Π½Π°ΠΊΠ»ΠΎΠ½Π΅Π½Π° Π½Π° 10 градусов (Π²ΠΏΠ΅Ρ€Π΅Π΄ для впускного ΠΊΠ»Π°ΠΏΠ°Π½Π°, Π½Π°Π·Π°Π΄ для выпускного ΠΊΠ»Π°ΠΏΠ°Π½Π°), Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ придСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ двумя ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ, LocZ ΠΈ LocY, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ  Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для создания Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠ³ΠΎ двиТСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² pydrivers.py:

def valveZ(angle,tilt,travel,offset):

    return cos(radians(tilt))*spike(angle)*travel+offset

def valveY(angle,tilt,travel,offset):

    return sin(radians(tilt))*spike(angle)*travel+offset

ОбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ расстояниС Π² зависимости ΠΎΡ‚ ΡƒΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ  ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Tilt (Π½Π°ΠΊΠ»ΠΎΠ½) - Π½Π°ΠΊΠ»ΠΎΠ½ ΠΊΠ»Π°ΠΏΠ°Π½Π° (Π² градусах), travel β€” максимальная Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ»Π°ΠΏΠ°Π½ вдоль Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ, Π° offset (компСнсация) - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΊΠ»Π°ΠΏΠ°Π½Π°. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ pydriver-выраТСния для LocZ ΠΈ LocY-ΠΊΠ°Π½Π°Π»ΠΎΠ² впускного ΠΊΠ»Π°ΠΏΠ°Π½Π°:

p.valveZ(ob('CamInlet').RotX+m.pi,-10.0,-0.1,6.55)

ΠΈ

p.valveY(ob('CamInlet').RotX+m.pi,-10.0,-0.1,-0.03)

(ВыраТСния для выпускного ΠΊΠ»Π°ΠΏΠ°Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹, Π½ΠΎ с ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ³Π»ΠΎΠΌ tilt.)

Π”ΠΎ сих ΠΏΠΎΡ€, всС IPO-ΠΊΠ°Π½Π°Π»Ρ‹ Π±Ρ‹Π»ΠΈ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ располоТСниС ΠΈ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅. Но Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ, вСдь Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠ½Π΅Ρ€Π³ΠΈΡŽ Π»Π°ΠΌΠΏΡ‹, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π² свСчу заТигания. Π’ pydrivers.py ΠΌΡ‹ для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ  topi(), которая, Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ ΡƒΠ³Π»Π° вращСния двиТущСгося ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ³ΠΎΠ» h (Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…) ΠΈ ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ i. topi() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эту ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Ссли ΡƒΠ³ΠΎΠ» Π΄Π²ΠΈΠ³Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° находится ΠΌΠ΅ΠΆΠ΄Ρƒ 0 ΠΈ h, ΠΈ ноль, Ссли ΡƒΠ³ΠΎΠ» Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π·Π°  ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ этого ряда. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠ³ΠΎΠ» Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ большС, Ρ‡Π΅ΠΌ 2*pi (ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΈΠ³Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ большС Ρ‡Π΅ΠΌ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³), ΠΌΡ‹ исправляСм это Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ дСлСния ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ:

def topi(a,h,i):

    m = a%(2*pi)

    r=0.0

    if m<h: r=i

    return r

pydriver-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для ΠΊΠ°Π½Π°Π»Π° энСргии (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ "Energ" Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠšΡ€ΠΈΠ²Ρ‹Ρ… IPO), ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

    p.topi(ob('DriveShaftPart').RotX/2+m.pi,0.3,0.5)