Quaternion — Aspose.3D FOSS for Java

Example

Quaternion reprezentuoja vieneto kvaternioną, naudojamą rotacijai. Jis išvengia gimbal lock ir suteikia sklandų interpolavimą tarp orientacijų. Šis Transform klasė saugo rotaciją kaip Quaternion prieinama per getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()Identiteto kvaternionas (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Kuriamas iš keturių komponentų

Vieši laukai

Quaternion naudoja vieši laukai komponentų prieigai (ne getter/setter metodams):

ExampleExampleExampleExample
wdoubleq.wSkaliarinė (reali) dalis
xdoubleq.xX komponentas vektorinės dalies
ydoubleq.yY komponentas vektoriaus dalyje
zdoubleq.zZ komponentas vektoriaus dalyje

Apskaičiuotos savybės

ExampleExampleExampleExample
lengthdoublegetLength()Kvantorinio modulis (turėtų būti 1.0 vienetiniam kvantoriui)

Statiniai laukai

ExampleExampleExample
IDENTITYQuaternionIdentiteto kvantorius (1, 0, 0, 0) – nėra sukimo

Statiniai metodai

ExampleGrąžinimo tipasExample
Quaternion.fromEuler(double x, double y, double z)QuaternionSukuria kvaternioną iš Eulerio kampų laipsniais
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionSukuria kvaternioną iš kampo (radijusų) ir sukimosi ašies

Instanciniai metodai

ExampleGrąžinimo tipasExample
normalize()QuaternionGrąžina vieneto ilgio kopiją
conjugate()QuaternionGrąžina konjugatą (neigiamą vektorinę dalį)
inverse()QuaternionGrąžina daugybos inversą
toEulerAngles()Vector3Konvertuoja į Eulerio kampus laipsniais
toMatrix()Matrix4Konvertuoja į 4x4 sukimo matricą

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

Žr. taip pat

 Lietuvių