I introduced a Small Basic sample code about 2-dimensional vector in my last blog. A 2-D vector has two elements. A point in the plane has x coordinate and y coordinate. This kind of coordinate is called Cartesian coordinates.
Today, I'd like to introduce another coordinate system - polar coordinates. In polar coordinates, a point is represented with r (the length from the origin) and θ (the angle between the vector and the x axis). A sample program TJB764 shows both coordinates.
Conversion from polar coordinates to Cartesian coordinates
This is easy.
Small Basic code is as follows. A variable a means θ above.
x
=
r
*
Math
.
Cos
(
a
)
y
=
r
*
Math
.
Sin
(
a
)
Conversion from Cartesian coordinates to polar coodinates
This is basically easy.
Small Basic code is:
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
Then
' this condition is needed for SB 1.2
a
=
0
Else
a
=
Math
.
ArcTan
(
y
/
x
)
*
180
/
Math
.
Pi
EndIf
If
x
<
0
Then
a
=
a
+
180
ElseIf
x
>
0
And
y
<
0
Then
a
=
a
+
360
EndIf
EndSub
I already wrote about this subroutine in this blog titled Small Basic Game Programming - Game Math. But the last one causes divide by zero error in Small Basic 1.2.
Math function tan-1 is Math.ArcTan() operation in Small Basic. The graph of this operation is: