Quaternion

Methods

Quaternion 3D 회전을 인코딩하는 단위 쿼터니언을 나타냅니다. 오일러 각과 달리, 쿼터니언은 짐벌 락을 방지하고 부드럽게 보간합니다. The Transform.rotation 씬 노드의 property는 a를 저장합니다. Quaternion.

구성 요소는 다음과 같이 저장됩니다. (w, x, y, z) where w 는 스칼라 부분이며 (x, y, z) 벡터 부분을 형성합니다.

from aspose.threed.utilities import Quaternion
import math

# Identity quaternion (no rotation)
q = Quaternion()   # w=1, x=0, y=0, z=0

# Rotation of 90 degrees around the Y axis
q = Quaternion.from_euler_angle(0.0, math.radians(90), 0.0)

Methods: aspose.threed.utilities

from aspose.threed.utilities import Quaternion

Methods

MethodsMethods
Quaternion()항등 쿼터니언 (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)명시적 구성 요소 생성자

Methods

MethodsMethodsMethods
wfloat스칼라(실수) 부분
xfloat벡터 x-성분
yfloat벡터 y-성분
zfloat벡터 z-성분
lengthfloat쿼터니언의 크기

정적 팩토리 메서드

Methods반환 타입Methods
Quaternion.from_euler_angle(pitch, yaw, roll)Quaternion라디안 단위의 오일러 각(pitch=X, yaw=Y, roll=Z)으로부터 생성합니다. 또한 a를 허용합니다. Vector3 를 첫 번째 인수로
Quaternion.from_angle_axis(angle, axis)Quaternion각도(라디안)와 a로부터 구성됩니다 Vector3
Quaternion.from_rotation(orig, dest)Quaterniondirection에서 최단 호 회전 orig 방향으로 dest
Quaternion.interpolate(t, from_q, to_q)QuaternionSLERP 보간; t[0, 1]
Quaternion.slerp(t, v1, v2)Quaternion다음의 별칭: interpolate

인스턴스 메서드

Methods반환 타입Methods
normalize()Quaternion단위 길이 복사본을 반환합니다
conjugate()Quaternion켤레를 반환합니다 (w, -x, -y, -z)
inverse()Quaternion곱셈 역원을 반환합니다; 발생시킵니다 ValueError 길이가 0인 경우
dot(q)float다른 쿼터니언과의 내적
concat(rhs)Quaternion해밀턴 곱 (두 회전의 합성)
euler_angles()Vector3Euler 각(라디안)을 다음과 같이 추출합니다 Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix44×4 회전 행렬로 변환합니다; 선택적으로 변환을 포함합니다 Vector3
to_angle_axis(angle, axis)None각도(라디안)와 축으로 분해합니다; 결과는 단일 요소 리스트에 기록됩니다 angle[0] 그리고 axis[0]

Methods

from aspose.threed import Scene
from aspose.threed.utilities import Quaternion, Vector3
import math

scene = Scene()
node = scene.root_node.create_child_node("rotated_box")

# Rotate 45 degrees around the Y axis
angle = math.radians(45)
q = Quaternion.from_euler_angle(0.0, angle, 0.0)
node.transform.rotation = q

# SLERP between two rotations
q_start = Quaternion.from_euler_angle(0, 0, 0)
q_end   = Quaternion.from_euler_angle(0, math.pi, 0)
q_mid   = Quaternion.slerp(0.5, q_start, q_end)

# Convert to matrix (useful for manual transforms)
mat = q.to_matrix()

# Extract Euler angles back
angles = q.euler_angles()   # Vector3(roll, pitch, yaw)
print(math.degrees(angles.y))   # ~45.0

또 보기

 한국어