Quaternion — Aspose.3D FOSS for Java

Example

Quaternion predstavlja jedinični kvaternion koji se koristi za rotaciju. Izbegava gimbal lock i omogućava glatku interpolaciju između orijentacija. Ovaj Transform klasa čuva rotaciju kao Quaternion pristupa se putem getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()Identitet kvaternion (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Konstrukcija iz četiri komponente

Javna polja

Quaternion koristi javna polja za pristup komponentama (ne metode getter/setter):

ExampleExampleExampleExample
wdoubleq.wSkalarni (realni) deo
xdoubleq.xX komponenta vektorskog dela
ydoubleq.yY komponenta vektorskog dela
zdoubleq.zZ komponenta vektorskog dela

Izračunata svojstva

ExampleExampleExampleExample
lengthdoublegetLength()Magnituda kvaterniona (treba biti 1.0 za jedinični kvaternion)

Статичка поља

ExampleExampleExample
IDENTITYQuaternionIdentitetni kvaternion (1, 0, 0, 0) – bez rotacije

Статичке методе

ExampleTip povratne vrednostiExample
Quaternion.fromEuler(double x, double y, double z)QuaternionKreira kvaternion iz Eulerovih uglova u stepenima
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionKreira kvaternion iz ugla (radijani) i ose rotacije

Metode instance

ExampleTip povratne vrednostiExample
normalize()QuaternionVraća kopiju jedinične dužine
conjugate()QuaternionVraća konjugovanu (negirani vektorski deo)
inverse()QuaternionVraća multiplikativni inverz
toEulerAngles()Vector3Konvertuje u Eulerove uglove u stepenima
toMatrix()Matrix4Pretvara u 4x4 matricu rotacije

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

Vidi takođe

 Српски