이 페이지에서

QQuaternion Class

QQuaternion 클래스는 벡터와 스칼라로 구성된 쿼터니언을 나타냅니다. 더 보기...

헤더: #include <QQuaternion>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

공개 유형

(since 6.11) struct Axes
(since 6.11) struct Axis
(since 6.11) struct EulerAngles

공개 함수

QQuaternion()
QQuaternion(const QVector4D &vector)
QQuaternion(float scalar, const QVector3D &vector)
QQuaternion(float scalar, float xpos, float ypos, float zpos)
QQuaternion conjugated() const
(since 6.11) QQuaternion::EulerAngles<float> eulerAngles() const
void getAxisAndAngle(float *x, float *y, float *z, float *angle) const
void getAxisAndAngle(QVector3D *axis, float *angle) const
QQuaternion inverted() const
bool isIdentity() const
bool isNull() const
float length() const
float lengthSquared() const
void normalize()
QQuaternion normalized() const
QVector3D rotatedVector(const QVector3D &vector) const
float scalar() const
void setScalar(float scalar)
void setVector(const QVector3D &vector)
void setVector(float x, float y, float z)
void setX(float x)
void setY(float y)
void setZ(float z)
(since 6.11) QQuaternion::Axes toAxes() const
QVector3D toEulerAngles() const
QMatrix3x3 toRotationMatrix() const
QVector4D toVector4D() const
QVector3D vector() const
float x() const
float y() const
float z() const
operator QVariant() const
QQuaternion &operator*=(const QQuaternion &quaternion)
QQuaternion &operator*=(float factor)
QQuaternion &operator+=(const QQuaternion &quaternion)
QQuaternion &operator-=(const QQuaternion &quaternion)
QQuaternion &operator/=(float divisor)

정적 공용 멤버

float dotProduct(const QQuaternion &q1, const QQuaternion &q2)
(since 6.11) QQuaternion fromAxes(QQuaternion::Axes axes)
QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
QQuaternion fromAxisAndAngle(const QVector3D &axis, float angle)
QQuaternion fromAxisAndAngle(float x, float y, float z, float angle)
QQuaternion fromDirection(const QVector3D &direction, const QVector3D &up)
QQuaternion fromEulerAngles(float pitch, float yaw, float roll)
(since 6.11) QQuaternion fromEulerAngles(QQuaternion::EulerAngles<float> angles)
QQuaternion fromEulerAngles(const QVector3D &angles)
QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3)
QQuaternion nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)
QQuaternion rotationTo(const QVector3D &from, const QVector3D &to)
QQuaternion slerp(const QQuaternion &q1, const QQuaternion &q2, float t)
bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2)
bool operator!=(const QQuaternion &q1, const QQuaternion &q2)
QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2)
QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
QQuaternion operator*(const QQuaternion &quaternion, float factor)
QQuaternion operator*(float factor, const QQuaternion &quaternion)
QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2)
QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)
QQuaternion operator-(const QQuaternion &quaternion)
QQuaternion operator/(const QQuaternion &quaternion, float divisor)
QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
bool operator==(const QQuaternion &q1, const QQuaternion &q2)
QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)

상세 설명

쿼터니언은 3차원 공간에서의 회전을 표현하는 데 사용되며, x, y, z 좌표로 지정된 3차원 회전축과 회전 각도를 나타내는 스칼라로 구성됩니다.

멤버 함수 문서

[constexpr noexcept] QQuaternion::QQuaternion()

단위 사원수 (1, 0, 0, 0), 즉 벡터 (0, 0, 0)와 스칼라 1로 구성된 사원수를 생성합니다.

[explicit constexpr noexcept] QQuaternion::QQuaternion(const QVector4D &vector)

vector 의 성분들을 사용하여 쿼터니언을 생성합니다.

[constexpr noexcept] QQuaternion::QQuaternion(float scalar, const QVector3D &vector)

지정된 vector 및 scalar 를 사용하여 쿼터니언 벡터를 생성합니다.

vector() 및 scalar()도 참조하십시오 .

[constexpr noexcept] QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)

벡터 (xpos, ypos, zpos)와 scalar 를 사용하여 쿼터니언을 생성합니다.

[constexpr noexcept] QQuaternion QQuaternion::conjugated() const

이 쿼터니언의 공액(-x, -y, -z, 스칼라)을 반환합니다.

[static constexpr noexcept] float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2)

q1 와 q2 의 내적을 반환합니다.

length()도 참조하십시오 .

[since 6.11] QQuaternion::EulerAngles<float> QQuaternion::eulerAngles() const

이 쿼터니언에 해당하는 오일러 각(도 단위)을 반환합니다.

이 함수는 Qt 6.11에서 도입되었습니다.

fromEulerAngles()도 참조하십시오 .

[static, since 6.11] QQuaternion QQuaternion::fromAxes(QQuaternion::Axes axes)

axes 에 포함된 축을 사용하여 쿼터니언을 생성합니다.

참고: 축들은 직교 정규축으로 가정합니다.

이 함수는 Qt 6.11에서 도입되었습니다.

toAxes() 및 fromRotationMatrix()도 참조하십시오 .

[static] QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

이것은 오버로드된 함수입니다.

[static] QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)

지정된 3D 축 axis 을 중심으로 angle 도 회전하는 것에 해당하는 정규화된 쿼터니언을 생성합니다.

getAxisAndAngle()도 참조하십시오 .

[static] QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle)

3D 축을 중심으로 angle 도 회전하는 것에 해당하는 정규화된 쿼터니언을 생성합니다 (x, y, z).

getAxisAndAngle()도 참조하십시오 .

[static] QQuaternion QQuaternion::fromDirection(const QVector3D &direction, const QVector3D &up)

지정된 전방 방향 direction 과 상향 방향 up 을 사용하여 쿼터니언을 생성합니다. 상향 방향이 지정되지 않았거나 전방 벡터와 상향 벡터가 일직선상에 있는 경우, 새로운 직교 정규화된 상향 방향이 생성됩니다.

fromAxes() 및 rotationTo()도 참조하십시오 .

[static] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)

z축을 중심으로 roll 도, x축을 중심으로 pitch 도, y축을 중심으로 yaw 도(이 순서대로) 회전하는 데 해당하는 쿼터니언을 생성합니다.

eulerAngles(), toEulerAngles(), fromEulerAngles(QQuaternion::EulerAngles<float>)도 참조하십시오 .

[static, since 6.11] QQuaternion QQuaternion::fromEulerAngles(QQuaternion::EulerAngles<float> angles)

다음과 동일합니다.

fromEulerAngles(angles.pitch, angles.yaw, angles.roll);

이것은 오버로드된 함수입니다.

이 함수는 Qt 6.11에서 도입되었습니다.

eulerAngles(), toEulerAngles() 및 fromEulerAngles()도 참조하십시오 .

[static] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &angles)

angles: angles.z() 도만큼 z축을 중심으로, angles.x() 도만큼 x축을 중심으로, angles.y() 도만큼 y축을 중심으로 회전하는 쿼터니언을 생성합니다(이 순서대로).

이 함수는 오버로드된 함수입니다.

toEulerAngles()도 참조하십시오 .

[static] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)

회전 행렬 rot3x3 에 해당하는 쿼터니언을 생성합니다.

참고: 주어진 회전 행렬이 정규화되지 않은경우 , 결과 쿼터니언에는 스케일링 정보가 포함됩니다.

toRotationMatrix() 및 fromAxes()도 참조하십시오 .

void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const

이 쿼터니언에 해당하는 3D 축(x, y, z)과 회전 각도 angle (도 단위)를 추출합니다.

x, y, z 및 angle 은 모두 유효한,nullptr 가 아닌 포인터여야 하며, 그렇지 않은 경우 동작이 정의되지 않습니다.

fromAxisAndAngle()도 참조하십시오 .

void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const

이 쿼터니언에 해당하는 3D 축 axis 과 회전 각도 angle (도 단위)를 추출합니다.

axis 와 angle 는 모두 유효하고,nullptr 가 아닌 포인터여야 하며, 그렇지 않은 경우 동작이 정의되지 않습니다.

이 함수는 오버로드된 함수입니다.

fromAxisAndAngle()도 참조하십시오 .

[constexpr noexcept] QQuaternion QQuaternion::inverted() const

이 쿼터니언의 역수를 반환합니다. 이 쿼터니언이 null인 경우, null 쿼터니언이 반환됩니다.

isNull() 및 length()도 참조하십시오 .

[constexpr noexcept] bool QQuaternion::isIdentity() const

이 쿼터니언의 x, y, z 성분이 0.0으로 설정되고 스칼라 성분이 1.0으로 설정된 경우 true 를 반환하며, 그렇지 않은 경우 false 를 반환합니다.

[constexpr noexcept] bool QQuaternion::isNull() const

이 쿼터니언의 x, y, z 및 스칼라 성분이 0.0으로 설정된 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.

float QQuaternion::length() const

쿼터니언의 길이를 반환합니다. 이를 “노름”이라고도 합니다.

lengthSquared(), normalized(), dotProduct()도 참조하십시오 .

float QQuaternion::lengthSquared() const

쿼터니언의 길이를 제곱한 값을 반환합니다.

참고: 계산 비용은적지만 , 이 함수는 length()이 대부분의 경우 방지하는 오버플로우 및 언더플로우에 취약합니다.

length() 및 dotProduct()도 참조하십시오 .

[static] QQuaternion QQuaternion::nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)

q1 와 q2 사이의 최단 선형 경로를 따라 보간합니다. t 값은 0과 1 사이여야 하며, 이는 q1 와 q2 사이의 이동 거리를 나타냅니다. 결과는 normalized()이 됩니다.

t 가 0 이하이면 q1 가 반환됩니다. t 가 1 이상이면 q2 가 반환됩니다.

nlerp() 함수는 일반적으로 slerp()보다 빠르며, 일부 응용 분야에서는 충분히 만족스러운 구면 보간에 대한 근사값을 제공합니다.

slerp()함수도 참조하십시오 .

void QQuaternion::normalize()

현재 쿼터니언을 제자리에서 정규화합니다. 쿼터니언이 null이거나 길이가 1에 매우 가까운 경우에는 아무 작업도 수행되지 않습니다.

length() 및 normalized()도 참조하십시오 .

QQuaternion QQuaternion::normalized() const

이 쿼터니언의 정규화된 단위 형태를 반환합니다.

이 쿼터니언이 null인 경우, null 쿼터니언이 반환됩니다. 쿼터니언의 길이가 1에 매우 가까운 경우, 쿼터니언은 있는 그대로 반환됩니다. 그렇지 않은 경우, 길이가 1인 쿼터니언의 정규화된 형태가 반환됩니다.

normalize(), length(), dotProduct()도 참조하십시오 .

QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const

vector 를 이 쿼터니언으로 회전시켜 3차원 공간에서 새로운 벡터를 생성합니다. 다음 코드는:

QVector3D result = q.rotatedVector(vector);

다음과 동일합니다:

QVector3D result = (q * QQuaternion(0, vector) * q.conjugated()).vector();

[static] QQuaternion QQuaternion::rotationTo(const QVector3D &from, const QVector3D &to)

벡터 from 가 나타내는 방향에서 벡터 to 가 나타내는 방향으로 회전하는 데 필요한 최단 호 쿼터니언을 반환합니다.

fromDirection()도 참조하십시오 .

[constexpr noexcept] float QQuaternion::scalar() const

이 쿼터니언의 스칼라 성분을 반환합니다.

setScalar(), x(), y(), z()도 참조하십시오 .

[constexpr noexcept] void QQuaternion::setScalar(float scalar)

이 쿼터니언의 스칼라 성분을 scalar 로 설정합니다.

scalar(), setX(), setY(), setZ()도 참조하십시오 .

[constexpr noexcept] void QQuaternion::setVector(const QVector3D &vector)

이 쿼터니언의 벡터 성분을 vector 로 설정합니다.

vector() 및 setScalar()도 참조하십시오 .

[constexpr noexcept] void QQuaternion::setVector(float x, float y, float z)

이 쿼터니언의 벡터 성분을 (x, y, z)로 설정합니다.

vector() 및 setScalar()도 참조하십시오 .

[constexpr noexcept] void QQuaternion::setX(float x)

이 쿼터니언 벡터의 x 좌표를 지정된 x 좌표로 설정합니다.

x(), setY(), setZ(), setScalar()도 참조하십시오 .

[constexpr noexcept] void QQuaternion::setY(float y)

이 쿼터니언 벡터의 y 좌표를 지정된 y 좌표로 설정합니다.

y(), setX(), setZ(), setScalar()도 참조하십시오 .

[constexpr noexcept] void QQuaternion::setZ(float z)

이 쿼터니온 벡터의 z 좌표를 지정된 z 좌표로 설정합니다.

z(), setX(), setY(), setScalar()도 참조하십시오 .

[static] QQuaternion QQuaternion::slerp(const QQuaternion &q1, const QQuaternion &q2, float t)

q1 와 q2 사이의 최단 구면 경로를 따라 보간합니다. t 값은 0과 1 사이여야 하며, 이는 q1 와 q2 사이의 이동할 구면 거리를 나타냅니다.

t 가 0 이하인 경우, q1 가 반환됩니다. t 가 1 이상인 경우, q2 가 반환됩니다.

nlerp()도 참조하십시오 .

[since 6.11] QQuaternion::Axes QQuaternion::toAxes() const

이 쿼터니언을 정의하는 세 개의 직교 정규 축을 반환합니다.

이 함수는 Qt 6.11에서 도입되었습니다.

QQuaternion::Axes, fromAxes(QQuaternion::Axes) 및 toRotationMatrix()도 참조하십시오 .

QVector3D QQuaternion::toEulerAngles() const

이 쿼터니언에 해당하는 롤, 피치, 요의 오일러 각도(도 단위)를 계산합니다.

fromEulerAngles()도 참조하십시오 .

QMatrix3x3 QQuaternion::toRotationMatrix() const

이 쿼터니온에 해당하는 회전 행렬을 생성합니다.

참고: 이 쿼터니언이 정규화되지 않은경우 , 결과 회전 행렬에는 스케일링 정보가 포함됩니다.

fromRotationMatrix() 및 toAxes()도 참조하십시오 .

[constexpr noexcept] QVector4D QQuaternion::toVector4D() const

이 쿼터니언을 4차원 벡터로 반환합니다.

[constexpr noexcept] QVector3D QQuaternion::vector() const

이 쿼터니언의 벡터 성분을 반환합니다.

setVector() 및 scalar()도 참조하십시오 .

[constexpr noexcept] float QQuaternion::x() const

이 쿼터니언 벡터의 x 좌표를 반환합니다.

setX(), y(), z(), scalar()도 참조하십시오 .

[constexpr noexcept] float QQuaternion::y() const

이 쿼터니온 벡터의 y 좌표를 반환합니다.

setY(), x(), z(), scalar()도 참조하십시오 .

[constexpr noexcept] float QQuaternion::z() const

이 쿼터니언 벡터의 z 좌표를 반환합니다.

setZ(), x(), y(), scalar()도 참조하십시오 .

QQuaternion::operator QVariant() const

쿼터니언을 ` QVariant` 형식으로 반환합니다.

[constexpr noexcept] QQuaternion &QQuaternion::operator*=(const QQuaternion &quaternion)

이 쿼터니언에 quaternion 를 곱한 후, 이 쿼터니언에 대한 참조를 반환합니다.

[constexpr noexcept] QQuaternion &QQuaternion::operator*=(float factor)

이 쿼터니언의 성분들에 주어진 factor 를 곱한 후, 이 쿼터니언에 대한 참조를 반환합니다.

operator/=()도 참조하십시오 .

[constexpr noexcept] QQuaternion &QQuaternion::operator+=(const QQuaternion &quaternion)

지정된 quaternion 를 이 쿼터니언에 더하고, 이 쿼터니언에 대한 참조를 반환합니다.

operator-=()도 참조하십시오 .

[constexpr noexcept] QQuaternion &QQuaternion::operator-=(const QQuaternion &quaternion)

지정된 quaternion 를 이 쿼터니언에서 빼고, 이 쿼터니언에 대한 참조를 반환합니다.

operator+=()도 참조하십시오 .

[constexpr] QQuaternion &QQuaternion::operator/=(float divisor)

이 쿼터니언의 성분들을 주어진 divisor 로 나눈 뒤, 이 쿼터니언에 대한 참조를 반환합니다.

operator*=()도 참조하십시오 .

관련 비멤버 함수

[constexpr noexcept] bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2)

q1 와 q2 가 같을 경우, 부동소수점 비교 시 약간의 오차 범위를 허용하여 ` true `를 반환하고, 그렇지 않은 경우 `false`를 반환합니다.

[constexpr noexcept] bool operator!=(const QQuaternion &q1, const QQuaternion &q2)

q1 가 q2 와 같지 않을 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다. 이 연산자는 정확한 부동소수점 비교를 사용합니다.

[constexpr noexcept] QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2)

쿼터니언 곱셈을 사용하여 q1 와 q2 를 곱합니다. 결과는 q1 와 q2 에 지정된 두 회전을 모두 적용한 것과 같습니다.

QQuaternion::operator*=()도 참조하십시오 .

QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)

벡터 ` vec `를 쿼터니언 ` quaternion `을 사용하여 회전시켜 3차원 공간에서 새로운 벡터를 생성합니다.

[constexpr noexcept] QQuaternion operator*(const QQuaternion &quaternion, float factor)

주어진 ` quaternion`에 주어진 ` factor`를 곱한 값의 복사본을 반환합니다.

QQuaternion::operator*=()도 참조하십시오 .

[constexpr noexcept] QQuaternion operator*(float factor, const QQuaternion &quaternion)

지정된 ` quaternion`에 지정된 ` factor`을 곱한 값의 복사본을 반환합니다.

QQuaternion::operator*=()도 참조하십시오 .

[constexpr noexcept] QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2)

주어진 쿼터니언 q1 과 q2 의 합을 나타내는 QQuaternion 객체를 반환합니다. 각 성분은 개별적으로 더해집니다.

QQuaternion::operator+=()도 참조하십시오 .

[constexpr noexcept] QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)

q2 를 q1 에서 뺀 값으로 구성된 ` QQuaternion ` 객체를 반환합니다. 각 성분은 별도로 뺍니다.

QQuaternion::operator-=()도 참조하십시오 .

[constexpr noexcept] QQuaternion operator-(const QQuaternion &quaternion)

주어진 ` quaternion`의 세 구성 요소 모두의 부호를 변경하여 생성된 ` QQuaternion ` 객체를 반환합니다.

QQuaternion(0,0,0,0) - quaternion 와 동일합니다.

이 함수는 오버로드된 함수입니다.

[constexpr] QQuaternion operator/(const QQuaternion &quaternion, float divisor)

주어진 ` quaternion `의 모든 성분을 주어진 ` divisor`로 나눈 결과로 형성된 ` QQuaternion ` 객체를 반환합니다.

QQuaternion::operator/=()도 참조하십시오 .

QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)

지정된 ` quaternion `를 지정된 ` stream `에 기록하고, 해당 스트림에 대한 참조를 반환합니다.

Qt 데이터 유형 직렬화항목도 참조하십시오 .

[constexpr noexcept] bool operator==(const QQuaternion &q1, const QQuaternion &q2)

q1 가 q2 와 같으면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다. 이 연산자는 정확한 부동소수점 비교를 사용합니다.

QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)

지정된 ` stream `에서 쿼터니언을 읽어 지정된 ` quaternion `에 저장하고, 해당 스트림에 대한 참조를 반환합니다.

'Qt 데이터 유형 직렬화'항목도 참조하십시오 .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.