Vectors

Blitz3D Forums/Blitz3D Beginners Area/Vectors

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?