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: