If mx <> mxLast Or my <> myLast Then
If line <> "" Then
Shapes.Remove(line)
EndIf
line = Shapes.AddLine(x0,y0, mx,my)
mxLast = mx
myLast = my
EndIf
EndSub
Sub OnKeyDown
If GraphicsWindow.LastKey = "Escape" Then
Program.End()
EndIf
EndSub
' ////////// SUBs \\\\\\\\\\
Sub Math_CartesianToPolar
' Math | convert Cartesian coodinate to polar coordinate
' param x, y - Cartesian coordinate
' return r, a - polar Coordinate (0<=a<360)
r = Math.SquareRoot(x*x + y*y)
If x = 0 And y > 0 Then
a = 90 ' [degree]
ElseIf x = 0 And y < 0 Then
a = -90
ElseIf x = 0 And y = 0 Then
a = 0
Else
a = Math.ArcTan(y/x) * 180 / Math.Pi
EndIf
' at this point -90<=a<=90
If x < 0 Then
a = a + 180
ElseIf x >= 0 And y < 0 Then
a = a + 360
EndIf
' at this point 0<=a<360 counterclockwise
'a = Math.Remainder(360 - a, 360) ' clockwise
a = 0.01 * Math.Round(100*a)
r = 0.01 * Math.Round(100*r)
EndSub
Sub Math_PolarToCartesian
' Math | convert polar coodinate to Cartesian coordinate
' param r, a - polar Coordinate
' return x, y - Cartesian coordinate
_a = Math.GetRadians(a)
x = r * Math.Cos(_a)
y = r * Math.Sin(_a)
x = 0.01 * Math.Round(100*x)
y = 0.01 * Math.Round(100*y)
EndSub
Sub DrawGrid
' param x1, x2 - x range
' param dx - delta x
' param y1, y2 - y range
' param dy - delta y
' param color - color for grid
GraphicsWindow.PenColor = color
For x = x1 To x2 Step dx
GraphicsWindow.DrawLine(x,y1, x,y2)
EndFor
For y = y1 To y2 Step dy
GraphicsWindow.DrawLine(x1,y, x2,y)
EndFor
EndSub