Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

calculating angle between two points on edge of circle Swift SpriteKit

How would you calculate the degrees between two points on the edge of a circle in Swift.

enter image description here

like image 840
PoKoBros Avatar asked Feb 21 '15 01:02

PoKoBros


1 Answers

Given points p1, p2 on a circle with center center, you would compute the difference vectors first:

let v1 = CGVector(dx: p1.x - center.x, dy: p1.y - center.y)
let v2 = CGVector(dx: p2.x - center.x, dy: p2.y - center.y)

Then

let angle = atan2(v2.dy, v2.dx) - atan2(v1.dy, v1.dx)

is the (directed) angle between those vectors in radians, and

var deg = angle * CGFloat(180.0 / M_PI)

the angle in degrees. The computed value can be in the range -360 .. 360, so you might want to normalize it to the range 0 <= deg < 360 with

if deg < 0 { deg += 360.0 }
like image 152
Martin R Avatar answered Sep 19 '22 14:09

Martin R