Закон сохранения импульса (распад)

 

Dim Time, dt, g, vx(10), vy(10), v0, alfa As Double

Private Sub Command1_Click()

Timer1.Enabled = True

End Sub

 

Private Sub Command2_Click()

Line1.X1 = -10

Line1.X2 = -10

Time = 0

Timer1.Enabled = False

v0 = Text1.Text

alfa = Text2.Text

Shape1(0).Left = 0

Shape1(0).Top = Picture2.Top - Shape1(0).Height

Shape1(1).Left = Shape1(0).Left

Shape1(1).Top = Shape1(0).Top

vx(0) = v0 * Cos(alfa / 360 * 6.28318)

vy(0) = -v0 * Sin(alfa / 360 * 6.28318)

g = 0.01

Text3.Text = 0

Shape1(0).Height = 300

Shape1(1).Height = 300

Shape1(0).Width = 300

Shape1(1).Width = 300

End Sub

 

 

Private Sub Form_Activate()

dt = 20

Picture2.BackColor = RGB(198, 190, 190)

Label4.BackColor = RGB(198, 190, 190)

Picture2.Line (0, 130)-(9600, 130)

For i = 0 To 250

Picture2.Line (i * 70, 130)-(i * 70, 70)

If ((i \ 5) * 5 = i) Then Picture2.Line (i * 70, 130)-(i * 70, 30)

If ((i \ 10) * 10 = i) Then Picture2.Line (i * 70, 130)-(i * 70, 0)

Next i

End Sub

 

Private Sub Timer1_Timer()

Time = Time + dt

If Time < v0 * Sin(alfa / 360 * 6.28318) / g Then

Shape1(0).Left = Shape1(0).Left + vx(0) * dt

Shape1(0).Top = Shape1(0).Top + vy(0) * dt + g * dt * dt / 2

Line1.X1 = Shape1(0).Left + Shape1(0).Width / 2

Line1.X2 = Line1.X1

Line1.Y1 = Shape1(0).Top + Shape1(0).Height

Line1.Y2 = Line1.Y1 + 5000

vy(0) = vy(0) + g * dt

Shape1(1).Left = Shape1(0).Left

Shape1(1).Top = Shape1(0).Top

vx(1) = vx(0)

vy(1) = vy(0)

Else: vx(1) = Text4.Text

vx(0) = 2 * v0 * Cos(alfa / 360 * 6.28318) - vx(1)

Shape1(0).Left = Shape1(0).Left + vx(0) * dt

Shape1(0).Top = Shape1(0).Top + vy(0) * dt + g * dt * dt / 2

vy(0) = vy(0) + g * dt

If Shape1(0).Top > Picture2.Top - Shape1(0).Height Then Timer1.Enabled = False

Shape1(1).Left = Shape1(1).Left + vx(1) * dt

Shape1(1).Top = Shape1(1).Top + vy(1) * dt + g * dt * dt / 2

vy(1) = vy(1) + g * dt

Shape1(0).Height = 250

Shape1(1).Height = 250

Shape1(0).Width = 250

Shape1(1).Width = 250

End If

End Sub