Quaternion — Aspose.3D FOSS for Java

Methods

Quaternion representa un quaternió unitari utilitzat per a la rotació. Evita el bloqueig de gimbal i proporciona una interpolació suau entre orientacions. El Transform classe emmagatzema la rotació com a una Quaternion accessible via getRotation() / setRotation().

Methods: com.aspose.threed

import com.aspose.threed.*;

Methods

MethodsMethods
Quaternion()Quaternió d’identitat (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Construeix a partir de quatre components

Camps públics

Quaternion utilitza camps públics per a l’accés als components (no mètodes getter/setter):

MethodsMethodsMethodsMethods
wdoubleq.wPart escalar (real)
xdoubleq.xComponent X de la part vectorial
ydoubleq.yComponent Y de la part vectorial
zdoubleq.zComponent Z de la part vectorial

Propietats calculades

MethodsMethodsMethodsMethods
lengthdoublegetLength()Magnitud del quaternió (hauria de ser 1.0 per a un quaternió unitari)

Camps estàtics

MethodsMethodsMethods
IDENTITYQuaternionEl quaternió d’identitat (1, 0, 0, 0) – cap rotació

Mètodes estàtics

MethodsTipus de retornMethods
Quaternion.fromEuler(double x, double y, double z)QuaternionCrea un quaternió a partir d’angles d’Euler en graus
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionCrea un quaternió a partir d’un angle (radians) i l’eix de rotació

Mètodes d’instància

MethodsTipus de retornMethods
normalize()QuaternionRetorna una còpia de longitud unitària
conjugate()QuaternionRetorna el conjugat (part vectorial negada)
inverse()QuaternionRetorna l’invers multiplicatiu
toEulerAngles()Vector3Converteix a angles d’Euler en graus
toMatrix()Matrix4Converteix a una matriu de rotació 4x4

Methods

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);

Vegeu també

 Català