# Cartesian and Polar Coordinates in Small Basic

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: Comments (0)
Skip to main content