Закон сохранения импульса (распад)
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