Ich versuche, einen Punkt um den Ursprung zu drehen, und ich habe andere Möglichkeiten gesehen, dies zu tun, aber ich verstehe immer noch nicht, warum mein ursprünglicher Code nicht richtig funktioniert. Hier ist der ursprüngliche Algorithmus, den ich konstruiert habe.Drehen eines Punktes mit Math.Asin()
decimal[] values = new decimal[] {5.6, 2.4, 8.7};
decimal hypotenuse = (decimal)Math.Sqrt((double)(values[0] * values[0]) + (double)(values[1] * values[1]) + (double)(values[2] * values[2]));
decimal x = values[0]/hypotenuse;
decimal y = values[1]/hypotenuse;
decimal z = values[2]/hypotenuse;
decimal checkerhypotenuse = (decimal)Math.Sqrt((double)(x * x) + (double)(y * y) + (double)(z * z));
values[0] = (decimal)Math.Sin(Math.Asin((double)x) + (double)RotationX) * hypotenuse;
values[1] = (decimal)Math.Cos(Math.Acos((double)y) + (double)RotationX) * hypotenuse;
Werte ist eine Sammlung von x, y und z-Koordinaten für meine Punkte. und anstatt Ergebnisse zurückzugeben, rotiert es nicht richtig. RotationX ist die Menge im Bogenmaß, um die sich die Rotation um den Ursprung ändern sollte.
Das Konzept davon ist, wenn Sin (Arcsin (Theta)) = Theta, dann Sin (Arcsin (Theta) + zusätzliche Grade der Rotation) Checkerhypotenuse sollte immer gleich 1, und es scheint zu.