Ich brauche Hilfe, die Mathematik hinter diesem Code zu verstehen. x Komponente der zurückgegebenen vec2 und der y-Komponente der zurückgegebenen vec2. Kann mir jemand erklären, was sie repräsentieren? Ich kenne nur diese Funktion bestimmt die Position des Vektors in Kugelkoordinaten.Berechnung von Euler-Winkeln
glm::vec2 calcEulerAngles(const glm::vec3& vec)
{
glm::vec3 v = glm::normalize(vec);
glm::vec2 result(acos(v.z), atan2(v.y, v.x));
while (result.y < 0.0)
result.y += TwoPi;
return glm::vec2(glm::degrees(result.x), glm::degrees(result.y));
}
Können Sie mir erklären, wie ist cos (theta) * sin (phi) = acos (z_value) und sin (theta) * sin (phi) = atan2 (yvalue, xvalue)? – BabaMara
Es ist 'cos (phi) = z => phi = acos (z)'. Wenn Sie 'y' und' x' teilen, erhalten Sie 'y/x = sin theta/cos theta = tan (Theta)'. Somit ist "Theta = Atan (Theta)". Sie verwenden 'atan2', um auch Winkel größer als 90 ° zu erhalten. –
Entschuldigung für dumme Frage, aber "=>" wäre? – BabaMara