Sub Process_Globals
Dim Accelerometer As PhoneAccelerometer
Dim AccX As Double
Dim AccY As Double
Dim Timer1 As Timer
Dim xx(100) As Double
Dim yy(100) As Double
Dim vx(100) As Double
Dim vy(100) As Double
Dim ax(100) As Double
Dim ay(100) As Double
Dim r(100) As Double
Dim dt As Double
Dim w As Double
Dim h As Double
Dim diffx As Double
Dim diffy As Double
Dim dist1 As Double
Dim dist2 As Double
Dim xval As Double
Dim yval As Double
End Sub
Sub Globals
Dim Canvas1 As Canvas
End Sub
Sub Activity_Create(FirstTime As Boolean)
canvas1.Initialize(Activity)
Globe
End Sub
Sub Globe
w = Canvas1.Bitmap.Width
h = Canvas1.Bitmap.Height
xx(0) = w/2
yy(0) = h/2
vx(0) = Rnd(-5,5)
vy(0) = Rnd(-5,5)
ax(0) = 0
ay(0) = 0
r(0) = 100
For i = 1 To 99
xx(i) = Rnd(0,w)
yy(i) = Rnd(0,h)
vx(i) = Rnd(-50,50)
vy(i) = Rnd(-50,50)
ax(0) = 0
ay(0) = 0
r(i) = Rnd(10,15)
Next
dt = .1
Accelerometer.StartListening("Accelerometer")
Timer1.Initialize("MainEvent", 10)
Timer1.Enabled = True
End Sub
Sub MainEvent_Tick
For i = 0 To 99
For j = 0 To 99
ax(j) = 0.0;
ay(j) = 0.0;
Next
For j = 0 To 99
If i <> j Then
diffx = xx(i) - xx(j)
diffy = yy(i) - yy(j)
dist1 = Sqrt(Power(diffx,2)+Power(diffy,2))
dist2 = r(i) + r(j)
If dist1 < dist2 Then
deltaDistance = (dist2 - dist1)
xval = (((deltaDistance * 10.0) / dist2) * diffx)
yval = (((deltaDistance * 10.0) / dist2) * diffy)
ax(i) = ax(i) + xval
ay(i) = ay(i) + yval
End If
End If
Next
vx(i) = (vx(i) + (ax(i) * dt)) * .99 + AccX
vy(i) = (vy(i) + (ay(i) * dt)) * .99 + AccY
xx(i) = xx(i) + (vx(i) * dt)
yy(i) = yy(i) + (vy(i) * dt)
If xx(i)-r(i) < 0 Then
vx(i) = -vx(i)
xx(i) = 0 + r(i)
End If
If yy(i)-r(i) < 0 Then
vy(i) = -vy(i)
yy(i) = 0 + r(i)
End If
If xx(i)+r(i) > w Then
vx(i) = -vx(i)
xx(i) = w - r(i)
End If
If yy(i)+r(i) > h Then
vy(i) = -vy(i)
yy(i) = h - r(i)
End If
Next
Canvas1.DrawColor(Colors.Black)
Canvas1.DrawCircle(xx(0),yy(0),r(0),Colors.Red,True,5)
For i = 1 To 99
Canvas1.DrawCircle(xx(i),yy(i),r(i),Colors.Green,True,5)
Next
Activity.Invalidate
DoEvents
End Sub
Sub Activity_Touch (Action As Int, X As Float, Y As Float)
xx(0) = x
yy(0) = y
vx(0) = 0
vy(0) = 0
End Sub
Sub Activity_Resume
Accelerometer.StartListening("Accelerometer")
Timer1.Enabled = True
End Sub
Sub Activity_Pause (UserClosed As Boolean)
Accelerometer.StopListening
Timer1.Enabled = False
End Sub
Sub Accelerometer_AccelerometerChanged (X As Float, Y As Float, Z As Float)
AccX = -(x/10) * 100
Accy = (y/10) * 100
End Sub