# About SpriteKit Coordinate Systems

Learn how a node conforms to its coordinate systems.

### Overview

When a node is placed in the node tree, its `position`

property places it within a coordinate system provided by its parent. SpriteKit uses the same coordinate system on both iOS and macOS.

### Points as Position Units

When a node is placed in the node tree, its `position`

property places it within a coordinate system provided by its parent. SpriteKit uses the same coordinate system on both iOS and macOS. Figure 1 shows the SpriteKit coordinate system. Coordinate values are measured in points, as in `UIKit`

or `AppKit`

; where necessary, points are converted to pixels when the scene is rendered. A positive x coordinate goes to the right and a positive y coordinate goes up the screen.

###### Figure 1 SpriteKit coordinate system

### Polar Coordinate Rotation

SpriteKit also has a standard rotation convention. shows the polar coordinate convention. An angle of 0 radians specifies the positive x axis. A positive angle is in the counterclockwise direction.

###### Figure 2 Polar coordinate conventions (rotation)

Nodes are rotated by setting their `zRotation`

property to the required angle in radians. If you prefer to work in degrees, the following code shows how you can write an extension to `CGFloat`

that converts between the two. The example in Listing 1 rotates spriteNode by 30 degrees counterclockwise.

```
extension CGFloat {
func degreesToRadians() -> CGFloat {
return self * CGFloat.pi / 180
}
}
let rabbitTexture = SKTexture(imageNamed: "rabbit.png")
let spriteNode = SKSpriteNode(texture: rabbitTexture)
spriteNode.zRotation = CGFloat(30).degreesToRadians()
```