Quaternion — Aspose.3D FOSS for Java

Example

Quaternion representerar en unit quaternion som används för rotation. Den undviker gimbal lock och ger smidig interpolation mellan orienteringar. Den Transform klass lagrar rotation som en Quaternion tillgänglig via getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()Identitetskvaternion (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Konstruktor från fyra komponenter

Publika fält

Quaternion använder publika fält för komponentåtkomst (inte getter/setter‑metoder):

ExampleExampleExampleExample
wdoubleq.wSkalär (reell) del
xdoubleq.xX‑komponent av vektordelen
ydoubleq.yY‑komponent av vektordelen
zdoubleq.zZ‑komponent av vektordelen

Beräknade egenskaper

ExampleExampleExampleExample
lengthdoublegetLength()Magnituden av kvaternionen (bör vara 1.0 för en unit quaternion)

Statiska fält

ExampleExampleExample
IDENTITYQuaternionIdentitetskvaternionen (1, 0, 0, 0) – ingen rotation

Statiska metoder

ExampleReturtypExample
Quaternion.fromEuler(double x, double y, double z)QuaternionSkapar en kvaternion från Eulervinklar i grader
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionSkapar en kvaternion från en vinkel (radianer) och rotationsaxel

Instansmetoder

ExampleReturtypExample
normalize()QuaternionReturnerar en kopia med enhetslängd
conjugate()QuaternionReturnerar konjugatet (negativ vektordel)
inverse()QuaternionReturnerar den multiplikativa inversen
toEulerAngles()Vector3Omvandlar till Eulervinklar i grader
toMatrix()Matrix4Omvandlar till en 4x4-rotationsmatris

Example

import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.*;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("rotated");

// Create from Euler angles (degrees)
Quaternion q = Quaternion.fromEuler(0.0, 90.0, 0.0);
node.getTransform().setRotation(q);

// Read back as Euler
Vector3 euler = node.getTransform().getEulerAngles();
System.out.println(euler);   // approximately (0, 90, 0)

// Create from angle-axis
Quaternion q2 = Quaternion.fromAngleAxis(Math.toRadians(45), Vector3.UNIT_Y);
node.getTransform().setRotation(q2);

// Combine rotations via multiply
Quaternion start = Quaternion.IDENTITY;
Quaternion end = Quaternion.fromEuler(0.0, 180.0, 0.0);
Quaternion combined = Quaternion.multiply(start, end);

Se även

 Svenska