Quaternion — Aspose.3D FOSS for Java

Example

Quaternion מייצג קווטרניון יחיד המשמש לסיבוב. הוא מונע נעילת גימבל ומספק אינטרפולציה חלקה בין אוריינטציות. ה Transform class מאחסנת סיבוב כ Quaternion זמין דרך getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()קוואטרניון זהות (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)בונה מארבעה רכיבים

שדות ציבוריים

Quaternion משתמש שדות ציבוריים לגישה לרכיבים (לא לשיטות getter/setter):

ExampleExampleExampleExample
wdoubleq.wחלק סקלרי (ממשי)
xdoubleq.xהרכיב X של חלק הווקטור
ydoubleq.yהמרכיב Y של חלק הווקטור
zdoubleq.zהמרכיב Z של חלק הווקטור

מאפיינים מחושבים

ExampleExampleExampleExample
lengthdoublegetLength()הגודל של הקווטרניון (צריך להיות 1.0 לקווטרניון יחיד)

שדות סטטיים

ExampleExampleExample
IDENTITYQuaternionהקווטרניון הזהותי (1, 0, 0, 0) – ללא סיבוב

מתודות סטטיות

Exampleסוג החזרהExample
Quaternion.fromEuler(double x, double y, double z)Quaternionיוצר קווטרניון מזוויות אוילר במעלות
Quaternion.fromAngleAxis(double angle, Vector3 axis)Quaternionיוצר קווטרניון מזווית (רדיאנים) וציר סיבוב

מתודות של מופע

Exampleסוג החזרהExample
normalize()Quaternionמחזיר עותק באורך יחידה
conjugate()Quaternionמחזיר את הקונוגט (החלק הווקטורי המנוגד)
inverse()Quaternionמחזיר את ההופכי הכפלי
toEulerAngles()Vector3ממיר לזוויות אוילר במעלות
toMatrix()Matrix4ממיר למטריצת סיבוב בגודל 4x4

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

ראה גם

 עברית