Quaternion — Aspose.3D FOSS for Java

Overview

Quaternion เป็นควอเทอร์เนียนหน่วยที่ใช้สำหรับการหมุน. มันหลีกเลี่ยงการล็อกกิมบอลและให้การแทรกแซงอย่างราบรื่นระหว่างการวางแนวทางต่าง ๆ. The Transform คลาสเก็บการหมุนเป็น a Quaternion เข้าถึงได้ผ่าน getRotation() / setRotation().

Overview: com.aspose.threed

import com.aspose.threed.*;

Overview

OverviewOverview
Quaternion()ควอเทอร์เนียนเอกลักษณ์ (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)สร้างจากส่วนประกอบสี่ส่วน

ฟิลด์สาธารณะ

Quaternion การใช้ ฟิลด์สาธารณะ สำหรับการเข้าถึงส่วนประกอบ (ไม่ใช่เมธอด getter/setter):

OverviewOverviewOverviewOverview
wdoubleq.wส่วน Scalar (จริง)
xdoubleq.xส่วนประกอบ X ของส่วนเวกเตอร์
ydoubleq.yส่วนประกอบ Y ของส่วนเวกเตอร์
zdoubleq.zส่วนประกอบ Z ของส่วนเวกเตอร์

คุณสมบัติที่คำนวณ

OverviewOverviewOverviewOverview
lengthdoublegetLength()ขนาดของควอเทอร์เนียน (ควรเป็น 1.0 สำหรับควอเทอร์เนียนหน่วย)

ฟิลด์สถิตย์

OverviewOverviewOverview
IDENTITYQuaternionควอเทอร์เนียนเอกลักษณ์ (1, 0, 0, 0) – ไม่มีการหมุน

เมธอดสถิตย์

Overviewประเภทผลลัพธ์Overview
Quaternion.fromEuler(double x, double y, double z)Quaternionสร้างควอเทอร์เนียนจากมุมออยเลอร์ในหน่วยองศา
Quaternion.fromAngleAxis(double angle, Vector3 axis)Quaternionสร้างควอเทอร์เนียนจากมุม (เรเดียน) และแกนการหมุน

เมธอดอินสแตนซ์

Overviewประเภทผลลัพธ์Overview
normalize()Quaternionคืนสำเนาที่มีความยาวเป็นหน่วย
conjugate()Quaternionคืนค่าคอนจูเกต (ส่วนเวกเตอร์ที่ถูกทำให้เป็นลบ)
inverse()Quaternionคืนค่าตัวผกผันเชิงคูณ
toEulerAngles()Vector3แปลงเป็นมุมออยเลอร์ในหน่วยองศา
toMatrix()Matrix4แปลงเป็นเมทริกซ์การหมุน 4x4

Overview

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

ดูเพิ่มเติม

 ภาษาไทย