ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ ΠΊΡΠΈΠ²ΠΎΡΠΈΠΏΠ½ΠΎ-ΡΠ°ΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠΉ ΠΊΡΠ»ΠΈΡΠΎΠΉ
ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌΡ Π² ΠΌΠΌ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ ΠΌΠ°ΡΡΡΠ°Π±Ρ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠ³Π»ΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²Π΅Π΄ΡΡΠ΅Π³ΠΎ Π·Π²Π΅Π½Π° ΠΠ. ΠΠ΅Π΄ΡΡΠ΅Π΅ Π·Π²Π΅Π½ΠΎ ΠΠ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΎΠ±ΠΎΡΠΎΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ XY (ΠΊΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ°ΡΠ°, Π Π½Π° ΡΡ Π΅ΠΌΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°). ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΠ»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΡΠΌΡΠ»Ρ: Π Π³ΡΠ°ΡΠ΅… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ ΠΊΡΠΈΠ²ΠΎΡΠΈΠΏΠ½ΠΎ-ΡΠ°ΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠΉ ΠΊΡΠ»ΠΈΡΠΎΠΉ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π€Π΅Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π³Π΅Π½ΡΡΡΠ²ΠΎ ΠΏΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΠΠ‘ΠΠΠΠ‘ΠΠΠ ΠΠΠ‘Π£ΠΠΠ Π‘Π’ΠΠΠΠΠ«Π ΠΠΠ¨ΠΠΠΠ‘Π’Π ΠΠΠ’ΠΠΠ¬ΠΠ«Π Π£ΠΠΠΠΠ Π‘ΠΠ’ΠΠ’ Π€Π°ΠΊΡΠ»ΡΡΠ΅Ρ: ΠΌΠ°ΡΠΈΠ½ΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΠ°ΡΠ΅Π΄ΡΠ°: Π‘ΠΠΠ ΠΠ£Π Π‘ΠΠΠΠ― Π ΠΠΠΠ’Π ΠΠΠ‘Π¦ΠΠΠΠΠΠ: «ΠΠΈΠ½Π³Π²ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π‘ΠΠΠ »
Π’ΠΠΠ Π ΠΠΠΠ’Π«: «ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ ΠΊΡΠΈΠ²ΠΎΡΠΈΠΏΠ½ΠΎ-ΡΠ°ΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠΉ ΠΊΡΠ»ΠΈΡΠΎΠΉ»
ΠΠ°ΡΠΈΠ°Π½Ρ № 3−9
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»:
Π‘ΡΡΠ΄Π΅Π½Ρ Π³ΡΡΠΏΠΏΡ Π27−4ΠΊ ΠΠΎΠΏΡΠ»ΠΎΠ² Π.Π.
ΠΠΎΡΠΊΠ²Π° — 2013
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. ΠΡΠ°ΠΏΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ
2. ΠΡΠ°ΠΏΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
2.1 ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
2.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° «Kopylov_Mechanics» Π² MS Visual C#
2.3 Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ΅Π½Ρ
2.4 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ
2.5 ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΠΠ²ΠΈΠΆΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
2.6 Void Picture
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Main.cs
Options.cs
ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π‘ΠΠΠ »
ΠΠΠΠ
1. ΠΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΠ»ΠΎΡΠΊΠΎΠ³ΠΎ ΡΡΡΠ°ΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π½ΠΎΠΌΠ΅ΡΡ Π·Π°Π΄Π°Π½ΠΈΡ.
2. ΠΠ΅Π΄ΡΡΠ΅Π΅ Π·Π²Π΅Π½ΠΎ ΠΠ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΎΠ±ΠΎΡΠΎΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ XY (ΠΊΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ°ΡΠ°, Π Π½Π° ΡΡ Π΅ΠΌΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°).
3. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΡΠ°ΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΡ Π·Π°Π΄Π°Π½ΠΈΡ.
ΠΠΠΠΠΠΠ
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠ°Π½Π΅Π»Ρ ΠΏΠ°Π΄Π°ΡΡΠΈΡ ΠΌΠ΅Π½Ρ, ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΠΎΠ±Π»Π°ΡΡΡ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ:
1. ΠΠ²ΠΎΠ΄ Π½Π΅Π·Π°Π΄Π°Π½Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°:
1.1 ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²Π΅Π΄ΡΡΠ΅Π³ΠΎ Π·Π²Π΅Π½Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ;
1.2 ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ Π΄Π»ΠΈΠ½ Π·Π²Π΅Π½ΡΠ΅Π² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π² ΠΌΠΌ;
1.3 ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ°Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π² ΠΌΠΌ;
1.4 ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°;
1.5 ΠΌΠ°ΡΡΡΠ°Π± ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡ Π΅ΠΌΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°.
2. ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°.
3. ΠΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΡΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°.
4. ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 12 ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° Π²Π΅Π΄ΡΡΠ΅Π³ΠΎ Π·Π²Π΅Π½Π° ΠΠ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ Π² ΠΌΠΌ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ ΠΌΠ°ΡΡΡΠ°Π±Ρ.
5. ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌΡ Π² ΠΌΠΌ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ ΠΌΠ°ΡΡΡΠ°Π±Ρ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠ³Π»ΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²Π΅Π΄ΡΡΠ΅Π³ΠΎ Π·Π²Π΅Π½Π° ΠΠ.
6. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠ½ΠΊΡΠ΅ 1.
7. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΈ Π·Π°Π΄Π°Π½Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
ΠΠ»ΠΈΠ½Π° Π·Π²Π΅Π½Π° ΠΠ = 150 ΠΌΠΌ Π’. D-Lx = -270
Π’. D-Ly = -40
Π’.D-Le = 150
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ°Π½Π½Π°Ρ ΠΊΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π»ΠΈΠ½Ρ Π·Π²Π΅Π½ΡΠ΅Π², Π½Π΅ Π½Π°ΡΡΡΠ°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°, ΡΠ°ΠΊ ΠΆΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π°. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±Π°.
ΠΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
1. ΠΡΠ°ΠΏΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ
* ΠΠ½Π°Π»ΠΈΠ· Π·Π°Π΄Π°Π½ΠΈΡ
* ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°
* ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°ΡΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°
* Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C#
2. ΠΡΠ°ΠΏΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
2.1 ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
2.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° «Kopylov_Mechanics» Π² MS Visual C#
1. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Visual Π‘#. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π€Π°ΠΉΠ» -> Π‘ΠΎΠ·Π΄Π°ΡΡ -> ΠΡΠΎΠ΅ΠΊΡ
2. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Visual C#?Π ΠΎΠΊΠ½Π΅ ΠΏΠΎ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows Forms
Π Π³ΡΠ°ΡΠ΅ ΠΈΠΌΡ Π²Π²ΠΎΠ΄ΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π² Π³ΡΠ°ΡΠ΅ Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΡΡΡ Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
3. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΠ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ
2.3 Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ΅Π½Ρ ΠΠ»Ρ ΠΌΠ΅Π½Ρ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ:
ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ «ΠΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²» Π½Π° ΡΠΎΡΠΌΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌ 5(Π‘ΡΠ°ΡΡ, Π‘ΡΠΎΠΏ, ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Save, Load) ΠΊΠ½ΠΎΠΏΠΎΠΊ, 1 NumericUpDown (Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΠ²Π°Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ) ΠΈ PictureBox
ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π° ΡΠΎΡΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
2.4 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ
Main.cs:
1.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π²ΡΠ²ΠΎΠ΄Π° (ΡΠ°ΡΠ½ΠΈΡΡ)
void Hinge
1.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ «ΡΡΠ΅ΡΠ³ΠΎΠ½ΠΈΠΊΠΎΠ²» Π΄Π»Ρ ΡΠ°ΡΠ½ΠΈΡΠΎΠ²
void Pillar
1.3 ΠΠ°ΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
void NewSizes
1.4 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²:
void Plunger
1.5 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ «ΡΠΎΡΠΊΠΈ» E :
void Base
1.6 Π Π°ΡΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π½ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π»ΠΈΠ½ΠΈΠΉ Π΄Π»Ρ ΠΎΠΊΠ½Π° Π²ΡΠ²ΠΎΠ΄Π°:
void Picture ()
1.7 ΠΠ΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «Π‘ΡΠ°ΡΡ»:
private void pysk_Click
1.8 Π’Π°ΠΉΠΌΠ΅Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π° ΠΎΠΏΡ. ΠΠΎΠ»-Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ)(ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² NumericUpDown Ρ Name DgUD) :
private void DgUD_ValueChanged
1.9 ΠΡΠ·ΠΎΠ² Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ :
private void btPrm_Click
Options.cs:
1.10 ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΡΠΌΡ:
private void PrmForm_Shown
1.11 ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΡΠΎΡΠΌΡ:
private void PrmForm_FormClosing
1.12 ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ TextBox Ρ name «mash»:
private void mash_TextChanged
1.13 ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠ:
private void ok_Click
1.14 ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ cancel
private void cancel_Click
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΠΎΡΠΎΠΉ ΡΠΎΡΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
ΠΠ»ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠ΅ΠΉ ΠΌΡΡΠΈ Π½Π° Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² «ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ». ΠΠ°Π»Π΅Π΅ ΠΊΠ½ΠΎΠΏΠΊΠ° «Π΄ΠΎΠ±Π°Π²ΠΈΡΡ», Π° ΠΏΠΎΡΠ»Π΅ «Π€ΠΎΡΠΌΠ° Windows…». Π Ρ Π½Π°Ρ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½ΠΎΠ²Π°Ρ ΡΠΎΡΠΌΠ° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ «FormN.cs» Π³Π΄Π΅ N ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΡΠΌΡ (Π΅ΡΠ»ΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅)
2.5 ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΠ»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΡΠΌΡΠ»Ρ:
1.1 ΡΠΎΡΠΊΠ° B
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ³ΠΎΠ»:
Ang = Math. Acos (CyA / AB) + Math. PI / 2;
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠΎΡΠΊΡ B ΠΏΠΎ 2 ΠΎΡΡΠΌ x ΠΈ y:
Bx = Ax + AB * Scl * (float)Math.Cos (Ang);
By = Ay — AB * Scl * (float)Math.Sin (Ang);
1.2 ΡΠΎΡΠΊΠ° D
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ³ΠΎΠ»:
a = Math. Atan2(Cy — By, Bx — Cx)
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠΎΡΠΊΡ D ΠΏΠΎ 2 ΠΎΡΡΠΌ x ΠΈ y:
Dx = Cx + CD * (float)Math.Cos (a) * Scl;
Dy = Cy — CD * (float)Math.Sin (a) * Scl;
1.3 Π’ΠΎΡΠΊΠ° E
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ³ΠΎΠ»:
a = Math. Asin ((Dx — Ex) / DE / Scl);
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠΎΡΠΊΡ E ΠΏΠΎ 2 ΠΎΡΡΠΌ x ΠΈ y:
Ey = Dy + DE * (float)Math.Cos (a) * Scl;
Ex — Π½Π°ΠΌ Π΄Π°Π½Π° ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ
2.6 Viod Picture ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΡΠ°ΡΡΠ΅ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° pirtureBox
void Picture ()
{
using (Graphics Gr = Graphics. FromImage (PB.Image))
{
Gr.SmoothingMode = SmoothingMode. HighQuality;
Gr.Clear (Color.White);
Font Fn = new Font («Bodoni MT», 10, FontStyle. Bold);
Gr.DrawString («AB = «+ AB. ToString () + «mm», Fn, Brushes. Black, 0, 0);
Gr.DrawString («CD = «+ CD. ToString () + «mm», Fn, Brushes. Black, 0, 20);
Gr.DrawString («DE = «+ DE. ToString () + «mm», Fn, Brushes. Black, 0, 40);
Gr.DrawString («CyA = «+ CyA. ToString () + «mm», Fn, Brushes. Black, 0, 60);
Gr.DrawString («ΠΠ°ΡΡΡΠ°Π± = «+ Scl. ToString () + «pix/mm», Fn, Brushes. Black, 0, 80);
Pillar (Gr, Ax, Ay, «A»);
Base (Gr);
Bx = Ax + AB * Scl * (float)Math.Cos (Ang);
By = Ay — AB * Scl * (float)Math.Sin (Ang);
Gr.DrawLine (Pens.Black, Bx, By, Ax, Ay);
double a = Math. Atan2(Cy — By, Bx — Cx);
Dx = Cx + CD * (float)Math.Cos (a) * Scl ;
Dy = Cy — CD * (float)Math.Sin (a) * Scl;
Gr.DrawLine (Pens.Black, Dx, Dy, Cx, Cy);
Hinge (Gr, Ax, Ay, «A»);
Pillar (Gr, Cx, Cy, «C»);
Plunger (Gr, Bx, By, a, «B»);
a = Math. Asin ((Dx — Ex) / DE / Scl);
Ey = Dy + DE * (float)Math.Cos (a) * Scl;
Gr.DrawLine (Pens.Black, Dx, Dy, Ex, Ey);
Hinge (Gr, Dx, Dy, «D»);
Plunger (Gr, Ex, Ey, Math. PI / 2, «E»);
PB.Refresh ();
}
}
ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° visual ΡΠ°ΠΉΠ»
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΈ ΠΎΡΠ²ΠΎΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ MS Visual C#.
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Main.cs:
using System;
using System.Collections.Generic;
using System. Drawing;
using System.Drawing.Drawing2D;
using System. Text;
using System. IO;
using System.Windows.Forms;
namespace Kopylov_Mechanics
{
public partial class MyForm: Form
{
float Ax = 400;
float Ay = 200;
public float AB = 80;
public float CD = 450 + 40; // Cx ->
public float DE = 200;
public float DxEx = -130; //d
public float CyA = 0;
public float CyB = 130;
float AxD;
float CAx;
double Ang, dAng;
float Bx, By, Cx, Cy, Dx, Dy, Ex, Ey;
public float Scl = 1;
public int Clockwise = -1;
public bool PrmClose;
bool bExit, bStop;
long lPause;
public MyForm ()
{
InitializeComponent ();
NewSizes (false);
}
private void MyForm_Resize (object sender, EventArgs e)
{
if (PB.Width > 0 && PB. Height > 0)
{
if (PB.Image ≠ null) PB.Image.Dispose ();
PB.Image = new Bitmap (PB.Width, PB. Height);
Picture ();
}
}
void Hinge (Graphics Gr, float x, float y, string ch)
{
Gr.FillEllipse (Brushes.Gray, x — 5, y — 5, 10, 10);
Gr.DrawEllipse (Pens.Black, x — 5, y — 5, 10, 10);
Gr.DrawString (ch, new Font («Bodoni MT», 10, FontStyle. Bold), Brushes. Black, x + 5, y — 20);
}
void Pillar (Graphics Gr, float x, float y, string ch)
{
PointF[] Tr = { new PointF (0, 0), new PointF (10, 20), new PointF (-10, 20) };
for (int i = 0; i < 3; i++)
{
Tr[i]. X += x;
Tr[i]. Y += y;
}
Gr.DrawPolygon (Pens.Black, Tr);
Hinge (Gr, x, y, ch);
PointF Pnt1=PointF.Add (Tr[2], new SizeF (-7, 0));
PointF Pnt2=PointF.Add (Tr[1], new SizeF (7, 0));
Gr.FillRectangle (new HatchBrush (HatchStyle.BackwardDiagonal, Color. Black, Color. White),
new RectangleF (Pnt1, new SizeF (Pnt2.X — Pnt1. X, 10)));
Gr.DrawLine (Pens.Black, Pnt1, Pnt2);
}
void NewSizes (bool bNewPrm)
{
do
{
AxD = (CD — 130) / 2;
CAx = CD — AxD ;
if (!bStop && !bNewPrm) Ang = Math. Acos (CyA / AB) + Math. PI / 2;
Cx = 50* Scl; // Cx
float AC = (float)Math.Sqrt ((Ax — Cx) * (Ax — Cx) + CyA * Scl * CyA * Scl);
if (Cx >= 30)
{
Cy = Ay — CyA * Scl ;
Ex = 670 * Scl ;
DgUD_ValueChanged (DgUD, new EventArgs ());
}
else Ax += 31 — Cx;
if (Cy < 130) Ay += 131 — Cy;
double a = Math. Asin (AB * Scl / AC);
a -= Math. Asin (CyA * Scl / AC);
Dy = Ay — CyA * Scl — CD * Scl * (float)Math.Sin (a);
if (Dy < 30) Ay += 31 — Dy;
} while (Cx < 30 || Cy < 130 || Dy < 30);
}
void Plunger (Graphics Gr, float x, float y, double a, string ch)
{
float HalfW = 15;
float HalfH = 8;
double an = Math. Atan (HalfH / HalfW);
float HalfD = HalfW / (float)Math.Cos (an);
PointF[] Rc = new PointF[4];
Rc[0] = new PointF (x + HalfD * (float)Math.Cos (a + an), y — HalfD * (float)Math.Sin (a + an));
Rc[1] = new PointF (x + HalfD * (float)Math.Cos (a — an), y — HalfD * (float)Math.Sin (a — an));
double aa = a + Math. PI + an;
Rc[2] = new PointF (x + HalfD * (float)Math.Cos (aa), y — HalfD * (float)Math.Sin (aa));
aa = a + Math. PI — an;
Rc[3] = new PointF (x + HalfD * (float)Math.Cos (aa), y — HalfD * (float)Math.Sin (aa));
Gr.FillPolygon (Brushes.White, Rc);
Gr.DrawPolygon (Pens.Black, Rc);
Hinge (Gr, x, y, ch);
}
void Base (Graphics Gr)
{
Gr.FillRectangle (new HatchBrush (HatchStyle.BackwardDiagonal, Color. Black, Color. White),
Ex — 20, Ay, 10, DE * 2 * Scl);
Gr.DrawLine (Pens.Black, Ex — 10, Ay, Ex — 10, Ay + DE * 2 * Scl);
}
void Way ()
{
using (Graphics Gr = Graphics. FromImage (PB.Image))
{
System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath ();
}
}
void Picture ()
{
using (Graphics Gr = Graphics. FromImage (PB.Image))
{
Gr.SmoothingMode = SmoothingMode. HighQuality;
Gr.Clear (Color.White);
Font Fn = new Font («Bodoni MT», 10, FontStyle. Bold);
Gr.DrawString («AB = «+ AB. ToString () + «mm», Fn, Brushes. Black, 0, 0);
Gr.DrawString («CD = «+ CD. ToString () + «mm», Fn, Brushes. Black, 0, 20);
Gr.DrawString («DE = «+ DE. ToString () + «mm», Fn, Brushes. Black, 0, 40);
Gr.DrawString («CyA = «+ CyA. ToString () + «mm», Fn, Brushes. Black, 0, 60);
Gr.DrawString («ΠΠ°ΡΡΡΠ°Π± = «+ Scl. ToString () + «pix/mm», Fn, Brushes. Black, 0, 80);
Pillar (Gr, Ax, Ay, «A»);
Base (Gr);
Bx = Ax + AB * Scl * (float)Math.Cos (Ang);
By = Ay — AB * Scl * (float)Math.Sin (Ang);
Gr.DrawLine (Pens.Black, Bx, By, Ax, Ay);
double a = Math. Atan2(Cy — By, Bx — Cx);
Dx = Cx + CD * (float)Math.Cos (a) * Scl ;
Dy = Cy — CD * (float)Math.Sin (a) * Scl;
Gr.DrawLine (Pens.Black, Dx, Dy, Cx, Cy);
Hinge (Gr, Ax, Ay, «A»);
Pillar (Gr, Cx, Cy, «C»);
Plunger (Gr, Bx, By, a, «B»);
a = Math. Asin ((Dx — Ex) / DE / Scl);
Ey = Dy + DE * (float)Math.Cos (a) * Scl;
Gr.DrawLine (Pens.Black, Dx, Dy, Ex, Ey);
Hinge (Gr, Dx, Dy, «D»);
Plunger (Gr, Ex, Ey, Math. PI / 2, «E»);
PB.Refresh ();
}
}
private void pysk_Click (object sender, EventArgs e)
{
NewSizes (true);
double Pi2 = Math. PI * 2;
bExit = false;
bStop = false;
long lOldTicks;
this.Focus ();
do
{
lOldTicks = DateTime.Now.Ticks;
Picture ();
Way ();
if (!bStop)
{
Ang += dAng;
if (Ang >= Pi2) Ang -= Pi2;
else if (Ang <= -Pi2) Ang += Pi2;
}
do
{
Application.DoEvents ();
} while (DateTime.Now.Ticks — lOldTicks < lPause);
} while (!bExit);
}
private void DgUD_ValueChanged (object sender, EventArgs e)
{
lPause = 625 000; //1/16
dAng = (double)DgUD.Value / 180 * Math. PI * Clockwise / (10 000 000 / lPause);
this.Focus ();
}
private void MyForm_FormClosing (object sender, FormClosingEventArgs e)
{
bExit = true;
}
private void btStop_Click (object sender, EventArgs e)
{
bStop = true;
}
private void btPrm_Click (object sender, EventArgs e)
{
Options Prm = new Options (this);
Prm.ShowDialog ();
NewSizes (true);
Picture ();
}
private void btSave_Click (object sender, EventArgs e)
{
}
bool fRead (StreamReader SR, out float fres)
{
string str = SR. ReadLine ().Replace («.», «,»);
string[] arr = str. Split ('=');
return float. TryParse (arr[1], out fres);
}
bool iRead (StreamReader SR, out int ires)
{
string str = SR. ReadLine ();
string[] arr = str. Split ('=');
return int. TryParse (arr[1], out ires);
}
private void btLoad_Click (object sender, EventArgs e)
{
}
private void btSave_Click1(object sender, EventArgs e)
{
SD.InitialDirectory = Application. StartupPath;
if (SD.ShowDialog () == DialogResult. OK)
{
StreamWriter SW = new StreamWriter (SD.FileName);
for (int i = 0; i < 8; i++)
{
switch (i)
{
case 0: SW. WriteLine («AB=» + AB. ToString ()); break;
case 1: SW. WriteLine («CD=» + CD. ToString ()); break;
case 2: SW. WriteLine («DE=» + DE. ToString ()); break;
case 3: SW. WriteLine («CyA=» + CyA. ToString ()); break;
case 4: SW. WriteLine («ΠΠ°ΡΡΡΠ°Π±=» + Scl. ToString ()); break;
case 5: SW. WriteLine («Π£Π³ΠΎΠ»=» + Ang. ToString ()); break;
case 6: SW. WriteLine («Clockwise=» + Clockwise. ToString ()); break;
default: SW. WriteLine («w=» + DgUD.Value.ToString ()); break;
}
}
SW.Close ();
}
}
private void btLoad_Click1(object sender, EventArgs e)
{
OD.InitialDirectory = Application. StartupPath;
if (OD.ShowDialog () == DialogResult. OK)
{
int ires;
float fres;
StreamReader SR = new StreamReader (OD.FileName);
for (int i = 0; SR. Peek () >= 0; i++)
{
switch (i)
{
case 0: if (fRead (SR, out fres)) AB = fres; break;
case 1: if (fRead (SR, out fres)) CD = fres; break;
case 2: if (fRead (SR, out fres)) DE = fres; break;
case 3: if (fRead (SR, out fres)) CyA = fres; break;
case 4: if (fRead (SR, out fres)) Scl = fres; break;
case 5: if (fRead (SR, out fres)) Ang = fres; break;
case 6: if (iRead (SR, out ires)) Clockwise = ires; break;
default: if (iRead (SR, out ires)) DgUD. Value = ires; break; ;
}
}
SR.Close ();
PrmClose = true;
btPrm_Click (param, new EventArgs ());
PrmClose = false;
}
}
private void CBChange_CheckedChanged (object sender, EventArgs e)
{
}
}
}
Options.cs:
using System;
using System.Collections.Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System.Windows.Forms;
namespace Kopylov_Mechanics
{
public partial class Options: Form
{
MyForm MF;
float Scl;
bool bSave;
public Options (MyForm Owner)
{
InitializeComponent ();
MF = Owner;
}
private void PrmForm_Shown (object sender, EventArgs e)
{
AB.Value = (decimal)MF.AB;
CD.Value = (decimal)MF.CD;
DE.Value = (decimal)MF.DE;
CyA.Value = (decimal)MF.CyA;
Scl = MF. Scl;
Mash.Text = Scl. ToString ();
if (MF.Clockwise == -1) RB1. Checked = true;
else RB2. Checked = true;
if (MF.PrmClose) ok_Click (ok, new EventArgs ());
}
private void PrmForm_FormClosing (object sender, FormClosingEventArgs e)
{
if (bSave)
{
MF.AB = (float)AB.Value;
MF.CD = (float)CD.Value;
MF.DE = (float)DE.Value;
MF.CyA = (float)CyA.Value;
MF.Scl = Scl;
MF.Clockwise = RB1. Checked? -1: 1;
}
}
private void mash_TextChanged (object sender, EventArgs e)
{
float res;
Mash.Text = Mash.Text.Replace («.», «,»);
if (float.TryParse (Mash.Text, out res)) Scl = res;
else Mash. Text = Scl. ToString ();
}
private void ok_Click (object sender, EventArgs e)
{
if (AB.Value < CyA. Value) MessageBox. Show («ΠΠ²Π΅Π½ΠΎ AB ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ CyA!»);
else
{
float AxD = ((float)CD.Value — 150) / 2;
float CAx = (float)CD.Value — AxD;
float CA = (float)Math.Sqrt (CAx * CAx + (float)CyA.Value * (float)CyA.Value);
if ((float)AB.Value > CA) MessageBox. Show («ΠΠ²Π΅Π½ΠΎ AB Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ CA !»);
else
{
float AD = (float)CD.Value — CA;
if (AD < (float)AB.Value) MessageBox. Show («Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ AD ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π·Π²Π΅Π½Π° AB !»);
else
{
float CE = (float)CD.Value — MF. DxEx;
float cos = CE / (float)(CD.Value — DE. Value);
if (cos < 1) MessageBox. Show («ΠΠ²Π΅Π½Π° DE ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΠΎΡΠ½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ !»);
else bSave = true;
}
}
}
if (bSave) Close ();
}
private void cancel_Click (object sender, EventArgs e)
{
Close ();
}
}
}