[SWIFT] Finden Sie den Winkel zwischen zwei Vektoren

Kommentar

Wenn der durch den Vektor $ \ vec {a} = (a_1, a_2), \ vec {b} = (b_1, b_2) $ gebildete Winkel, der nicht $ \ vec {0} $ ist, $ \ theta $ ist, gilt Folgendes.

\begin{align}
\cos\theta &= \frac{\vec{a}\cdot\vec{b}}{|\vec{a}||\vec{b}|} \\
&=\frac{a_1 b_1 + a_2 b_2}{\sqrt{a_1^2 + a_2^2}\sqrt{b_1^2 + b_2^2}}
\end{align}

Wenn der hier erhaltene inverse Kosinus (Bogenkosinus) von cos $ \ theta $ erhalten wird, kann $ \ theta $ erhalten werden.

Code

func angleBetween(_ vec1: simd_float3, and vec2: simd_float3) -> Float {
   let cosT = (vec1.x * vec2.x + vec1.z * vec2.z) / (sqrt(pow(vec1.x, 2) +
              pow(vec1.z, 2)) * sqrt(pow(vec2.x, 2) + pow(vec2.z, 2)))
   let deg = acos(cosT) * 180 / Float.pi
   return deg
}
let v1 = simd_float3(20, 0, 20)
let v2 = simd_float3(0, 0, 20)
let angle = angleBetween(v1, and: v2)

print(angle) //45 Grad

Recommended Posts

Finden Sie den Winkel zwischen zwei Vektoren
So ermitteln Sie den Abstand und den Winkel zwischen zwei Punkten in einer Ebene
Finden Sie den Unterschied zwischen Listentypen
So finden Sie den durchschnittlichen Winkel
Berechnen Sie den Abstand zwischen Breiten- und Längengrad zweier Punkte
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Geben Sie die Differenz zwischen jedem Feld zweier Objekte in Java aus
[Android, Java] Methode zum Ermitteln des abgelaufenen Datums aus zwei Daten