2015-02-21 21 views
10

Jak obliczyć stopnie między dwoma punktami na krawędzi okręgu w Swift.obliczanie kąta między dwoma punktami na krawędzi okręgu Swift SpriteKit

enter image description here

+0

Czy wiesz na pewno, że jest to koło? Podoba Ci się centrum koła? Ponieważ dwa punkty nie tworzą okręgu, ponieważ nieskończoną liczbę różnych okręgów można opisać dwoma punktami - potrzebujesz trzeciego, albo na kole, albo na początku. – corsiKa

+0

znam również pochodzenie również @ coriKa – PoKoBros

+0

Więc możesz po prostu użyć arctan (delta y/delta x). Nie wiem, jaki to szybki klawisz Sprite, więc nie byłbym pewien formatu tego kodu. Edycja: większość języków programowania używających try używa radianów, więc twoje wyniki mogą być w radianach. Jeśli istnieje funkcja konwersji na stopnie, po prostu użyj tego; w przeciwnym razie użyj wzoru, aby przekonwertować go na stopnie, którym jest rads * 180/pi – Muhatashim

Odpowiedz

21

punktów przyznanych p1, p2 na okręgu o środku center, byś obliczyć wektory różnicowe pierwszy:

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) 

Następnie

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

jest (skierowany) kąt między tymi wektorami w radianach i

var deg = angle * CGFloat(180.0/M_PI) 

kąt w stopniach. Obliczona wartość może mieścić się w przedziale -360 .. 360, więc może chcą znormalizować go w zakresie od 0 ° < < = 360 z

if deg < 0 { deg += 360.0 } 
+0

czy ten kod będzie działał na iPadzie? wszystko, co się wydarzy, to to, że krąg się trochę powiększy. – PoKoBros

+2

@PoKoBros: To tylko matematyka, działa na każdym urządzeniu. Oblicza tylko kąt, więc co masz na myśli mówiąc "krąg powiększy się nieco"? –

+0

Mam na myśli tylko, że promień koła podwoi się w ok. IPadzie – PoKoBros

Powiązane problemy