ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Анимация ΠΊΡ€ΠΈΠ²ΠΎΡˆΠΈΠΏΠ½ΠΎ-ΡˆΠ°Ρ‚ΡƒΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° с присоСдинСнной кулисой

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠΠ½ΠΈΠΌΠ°Ρ†ΠΈΡŽ двиТСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, построСнному Π² ΠΌΠΌ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρƒ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΡƒΠ³Π»ΠΎΠ²ΠΎΠΉ скорости Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π·Π²Π΅Π½Π° ΠΠ’. Π’Π΅Π΄ΡƒΡ‰Π΅Π΅ Π·Π²Π΅Π½ΠΎ ΠΠ’ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΎΠ±ΠΎΡ€ΠΎΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ 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 ();

}

}

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ