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
Odpowiedz
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 }
czy ten kod będzie działał na iPadzie? wszystko, co się wydarzy, to to, że krąg się trochę powiększy. – PoKoBros
@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"? –
Mam na myśli tylko, że promień koła podwoi się w ok. IPadzie – PoKoBros
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
znam również pochodzenie również @ coriKa – PoKoBros
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