I still get the same error
Graphics 800, 600
Type ball
Field x#, y#
Field v#[2]
Field ent
Field num
Field link[2]
Field linkLen[2]
Field fixed
End Type
;pendulum balls
b2.ball = New ball ;ball #1
b2\x = 400 ;x pos
b2\y = 300 ;y pos
b2\v[1] = 0 ;initial x velocity
b2\v[2] = 0 ;initial y velocity
b2\num = 1 ;ID
b2\link[0] = 1 ;number of links
b2\link[1] = 2 ;what it is linked to
b2\linkLen[1] = 50 ;length of link
b2\fixed = 1 ;fixed or not
b.ball = New ball ;ball #2
b\x = 450
b\y = 250
b\v[1] = 0
b\v[2] = 0
b\num = 2
b\link[0] = 1
b\link[1] = 1
b\linkLen[1] = 50
b\fixed = 0
b3.ball = New ball ;ball #3
b3\x = 550
b3\y = 300
b3\v[1] = 0
b3\v[2] = 0
b3\num = 3
b3\link[0] = 1
b3\link[1] = 1
b3\linkLen[1] = 60
b3\fixed = 0
Global g#[2]
g[1] = 0
g[2] = 2
Local f#[2]
Global f2#[2]
Global v#[2]
Local f3#[2]
While Not KeyHit(1)
; Cls
For b.ball = Each ball
If b\fixed <> 1
For i = 1 To b\link[0]
For b2.ball = Each ball
If b2 <> b And b2\num = b\link[i]
dx# = b\x - b2\x
dy# = b\y - b2\y
d# = Sqr#(dx*dx + dy*dy)
diff# = b\linkLen[i]/d
f[1] = ((dx*diff+b2\x) - b\x)*2
f[2] = ((dy*diff+b2\y) - b\y)*2
; Text 0, 20*b\num, f[1] + ":" + f[2]
v[1] = b\v[1] + g[1]
v[2] = b\v[2] + g[2]
vectorProj(f3) ;projection of v onto f
Color 255, 0, 0
; Line b\x, b\y, b\x + b\v[1]*10, b\y + b\v[2]*10
Color 0, 255, 0
; Line b\x, b\y, b\x + f2[1]*10, b\y + f2[2]*10
Color 0, 0, 255
; Line 400, 300, b\x, b\y
b\v[1] = v[1] - f2[1]*1.5
b\v[2] = v[2] - f2[2]*1.5
Color 255, 0, 255
Line b\x, b\y, b\x + b\v[1]*10, b\y + b\v[2]*10
Color 255, 255, 255
; DebugLog (f[1]*b\v[1]+f[2]*b\v[2])
; DebugLog ""
EndIf
Next
Next
EndIf
Next
For b.ball = Each ball
b\x = b\x + b\v[1]
b\y = b\y + b\v[2]
Color 255, 255, 0
Oval b\x-5, b\y-5, 10, 10, 1
Next
; Flip
Delay 100
Wend
End
;function
Function vectorProj(f[2])
dot# = f[1]*v[1] + f[2]*v[2]
lenF# = f[1]*f[1] + f[2]*f[2]
scalar# = dot/lenF
; DebugLog dot
; DebugLog lenF
; DebugLog ""
f2[1] = f[1] * scalar
f2[2] = f[2] * scalar
End Function
the code as it stands right now...
|