Quaternion — Aspose.3D FOSS for Java

Example

Quaternion repræsenterer en unit quaternion, der bruges til rotation. Den undgår gimbal lock og giver glat interpolation mellem orienteringer. Den Transform Klassen gemmer rotation som en Quaternion tilgængelig via getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()Identitetsquaternion (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Konstrueres ud fra fire komponenter

Offentlige felter

Quaternion bruger offentlige felter til komponentadgang (ikke getter/setter-metoder):

ExampleExampleExampleExample
wdoubleq.wSkalar (reel) del
xdoubleq.xX-komponent af vektordelen
ydoubleq.yY-komponent af vektordelen
zdoubleq.zZ-komponent af vektordelen

Beregnede egenskaber

ExampleExampleExampleExample
lengthdoublegetLength()Størrelsen af quaternionen (skal være 1.0 for en unit quaternion)

Statiske felter

ExampleExampleExample
IDENTITYQuaternionDen identitetskvaternion (1, 0, 0, 0) – ingen rotation

Statiske metoder

ExampleReturtypeExample
Quaternion.fromEuler(double x, double y, double z)QuaternionOpretter en kvaternion fra Euler-vinkler i grader
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionOpretter en kvaternion fra en vinkel (radianer) og rotationsakse

Instansmetoder

ExampleReturtypeExample
normalize()QuaternionReturnerer en kopi med enhedslængde
conjugate()QuaternionReturnerer konjugatet (negativ vektor-del)
inverse()QuaternionReturnerer den multiplikative invers
toEulerAngles()Vector3Konverterer til Euler-vinkler i grader
toMatrix()Matrix4Konverterer til en 4x4 rotationsmatrix

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 også

 Dansk