Quaternion — Aspose.3D FOSS for Java

Properties

Quaternion đại diện cho một quaternion đơn vị được sử dụng cho việc quay. Nó tránh gimbal lock và cung cấp phép nội suy mượt mà giữa các hướng. The Transform lớp lưu trữ phép quay dưới dạng một Quaternion có thể truy cập qua getRotation() / setRotation().

Properties: com.aspose.threed

import com.aspose.threed.*;

Properties

PropertiesProperties
Quaternion()Quaternion Định danh (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Khởi tạo từ bốn thành phần

Các trường công khai

Quaternion sử dụng các trường công khai để truy cập các thành phần (không phải phương thức getter/setter):

PropertiesPropertiesPropertiesProperties
wdoubleq.wPhần vô hướng (thực)
xdoubleq.xThành phần X của phần vector
ydoubleq.yThành phần Y của phần vector
zdoubleq.zThành phần Z của phần vector

Các thuộc tính tính toán

PropertiesPropertiesPropertiesProperties
lengthdoublegetLength()Độ lớn của quaternion (nên là 1.0 đối với một quaternion đơn vị)

Trường tĩnh

PropertiesPropertiesProperties
IDENTITYQuaternionQuaternion đồng nhất (1, 0, 0, 0) – không quay

Phương thức tĩnh

PropertiesKiểu trả vềProperties
Quaternion.fromEuler(double x, double y, double z)QuaternionTạo một quaternion từ các góc Euler tính bằng độ
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionTạo một quaternion từ một góc (radian) và trục quay

Các phương thức của đối tượng

PropertiesKiểu trả vềProperties
normalize()QuaternionTrả về một bản sao có độ dài đơn vị
conjugate()QuaternionTrả về phần liên hợp (phần vectơ bị đảo dấu)
inverse()QuaternionTrả về nghịch đảo nhân
toEulerAngles()Vector3Chuyển đổi sang các góc Euler tính bằng độ
toMatrix()Matrix4Chuyển đổi sang ma trận quay 4x4

Properties

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

Xem thêm

 Tiếng Việt