That library is almost identical to the one I made.
The problem is that new vectors are being made constantly; there were about 2000 vector objects made in the first 3 seconds by my Euler algorithm:
Function Approximate_Next_Quantities(b.Tbody)
delta_t# = 1/Float(EULER_STEPS)
t# = 0
left_a.Tvector = New Tvector
right_a.Tvector = New Tvector
average_a.Tvector = New Tvector
v.Tvector = New Tvector
r.Tvector = New Tvector
; set initial values
v = b\v
r = b\r
temp_v.Tvector = New Tvector
temp_r.Tvector = New Tvector
For i = 0 To EULER_STEPS-1
left_a = Acceleration_Function(t, v, r)
temp_v = Add_Vectors(v,Multiply_Scalar_Vector(delta_t,left_a))
temp_r = Add_Vectors(r,Multiply_Scalar_Vector(delta_t,v))
right_a = Acceleration_Function(t+delta_t, temp_v, temp_r)
average_a = Multiply_Scalar_Vector(0.5,Add_Vectors(left_a,right_a))
v = Add_Vectors(v,Multiply_Scalar_Vector(delta_t,average_a))
r = Add_Vectors(r,Multiply_Scalar_Vector(delta_t,v))
t = t + delta_t
Next
b\next_v = v.Tvector
b\next_r = r.Tvector
;Delete objects
Delete left_a
Delete right_a
Delete average_a
Delete temp_v
Delete temp_r
End Function
Function Acceleration_Function.Tvector(t#,v.Tvector,r.Tvector)
u.Tvector = New Tvector
u\x = 0
u\y = 0.1
Return u
End Function
Is there a way I can do this properly?
The problem is that new vectors are being made constantly; there were about 2000 vector objects made in the first 3 seconds by my Euler algorithm:
Function Approximate_Next_Quantities(b.Tbody)
delta_t# = 1/Float(EULER_STEPS)
t# = 0
left_a.Tvector = New Tvector
right_a.Tvector = New Tvector
average_a.Tvector = New Tvector
v.Tvector = New Tvector
r.Tvector = New Tvector
; set initial values
v = b\v
r = b\r
temp_v.Tvector = New Tvector
temp_r.Tvector = New Tvector
For i = 0 To EULER_STEPS-1
left_a = Acceleration_Function(t, v, r)
temp_v = Add_Vectors(v,Multiply_Scalar_Vector(delta_t,left_a))
temp_r = Add_Vectors(r,Multiply_Scalar_Vector(delta_t,v))
right_a = Acceleration_Function(t+delta_t, temp_v, temp_r)
average_a = Multiply_Scalar_Vector(0.5,Add_Vectors(left_a,right_a))
v = Add_Vectors(v,Multiply_Scalar_Vector(delta_t,average_a))
r = Add_Vectors(r,Multiply_Scalar_Vector(delta_t,v))
t = t + delta_t
Next
b\next_v = v.Tvector
b\next_r = r.Tvector
;Delete objects
Delete left_a
Delete right_a
Delete average_a
Delete temp_v
Delete temp_r
End Function
Function Acceleration_Function.Tvector(t#,v.Tvector,r.Tvector)
u.Tvector = New Tvector
u\x = 0
u\y = 0.1
Return u
End Function
Is there a way I can do this properly?