QQuaternion Class
Q쿼터니언 클래스는 벡터와 스칼라로 구성된 쿼터니언을 나타냅니다. 더 보기...
Header: | #include <QQuaternion> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 상속된 멤버를 포함한 모든 멤버 목록
- Q쿼터니언은 3D 렌더링의 일부입니다.
공용 함수
QQuaternion() | |
QQuaternion(const QVector4D &vector) | |
QQuaternion(float scalar, const QVector3D &vector) | |
QQuaternion(float scalar, float xpos, float ypos, float zpos) | |
QQuaternion | conjugated() const |
void | getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const |
void | getAxisAndAngle(float *x, float *y, float *z, float *angle) const |
void | getAxisAndAngle(QVector3D *axis, float *angle) const |
void | getEulerAngles(float *pitch, float *yaw, float *roll) 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) |
QVector3D | toEulerAngles() const |
QMatrix3x3 | toRotationMatrix() const |
QVector4D | toVector4D() const |
QVector3D | vector() const |
float | x() const |
float | y() const |
float | z() const |
QVariant | 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) |
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) |
QQuaternion | fromEulerAngles(const QVector3D &eulerAngles) |
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 &quaternion) |
QQuaternion | operator-(const QQuaternion &q1, const QQuaternion &q2) |
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) |
멤버 함수 문서
[constexpr noexcept]
QQuaternion::QQuaternion()
벡터 (0, 0, 0, 0)와 스칼라 1로 아이덴티티 쿼터니언 (1, 0, 0, 0)을 구성합니다.
[explicit constexpr noexcept]
QQuaternion::QQuaternion(const QVector4D &vector)
vector 의 구성 요소로 쿼터니언을 구축합니다.
[constexpr noexcept]
QQuaternion::QQuaternion(float scalar, const QVector3D &vector)
지정된 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()도 참조하세요 .
[static]
QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
3개의 축을 사용하여 쿼터니언을 구성합니다 (xAxis, yAxis, zAxis).
참고: 축은 오르토노멀이라고 가정합니다.
getAxes() 및 fromRotationMatrix()도 참조하세요 .
[static]
QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)
지정된 3D를 중심으로 angle 도 회전하는 것에 해당하는 정규화된 쿼터니언을 생성합니다 axis.
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 도 회전하는 쿼터니언을 생성합니다(순서대로).
getEulerAngles()도 참조하세요 .
[static]
QQuaternion QQuaternion::fromEulerAngles(const QVector3D &eulerAngles)
이 함수는 오버로드된 함수입니다.
eulerAnglesz축을 중심으로z() 도, x축을 중심으로x() 도, y축을 중심으로y() 도(순서대로)의 회전에 해당하는 쿼터니언을 생성합니다.
toEulerAngles()도 참조하세요 .
[static]
QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
회전 행렬 rot3x3 에 해당하는 쿼터니언을 생성합니다.
참고: 주어진 회전 행렬이 정규화되지 않은 경우 결과 쿼터니언에는 스케일링 정보가 포함됩니다.
toRotationMatrix() 및 fromAxes()도 참조하세요 .
void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const
쿼터니언을 정의하는 3개의 직교축(xAxis, yAxis, zAxis)을 반환합니다.
fromAxes() 및 toRotationMatrix()도 참조하세요 .
void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const
이 쿼터니언에 해당하는 3D 축(x, y, z)과 회전 각도 angle (도 단위)를 추출합니다.
fromAxisAndAngle()도 참조하세요 .
void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const
이 함수는 오버로드된 함수입니다.
이 쿼터니언에 해당하는 3D 축 axis 및 회전 각도 angle (도 단위)를 추출합니다.
fromAxisAndAngle()도 참조하세요 .
void QQuaternion::getEulerAngles(float *pitch, float *yaw, float *roll) const
이 쿼터니언에 해당하는 roll, pitch, yaw 오일러 각도(도 단위)를 계산합니다.
fromEulerAngles()도 참조하세요 .
[constexpr noexcept]
QQuaternion QQuaternion::inverted() const
이 쿼터니언의 역을 반환합니다. 이 쿼터니언이 널이면 널 쿼터니언이 반환됩니다.
[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()
현재 쿼터니언을 제자리에서 정규화합니다. 널 쿼터니언이거나 쿼터니언의 길이가 1에 매우 가까우면 아무 일도 일어나지 않습니다.
length() 및 normalized()도 참조하세요 .
QQuaternion QQuaternion::normalized() const
이 쿼터니언의 정규화된 단위 형태를 반환합니다.
이 쿼터니언이 널이면 널 쿼터니언이 반환됩니다. 쿼터니언의 길이가 1에 매우 가까우면 쿼터니언이 그대로 반환됩니다. 그렇지 않으면 길이 1의 정규화된 쿼터니언 형태가 반환됩니다.
normalize(), length() 및 dotProduct()도 참조하세요 .
QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const
이 쿼터니언으로 vector 을 회전하여 3D 공간에 새로운 벡터를 생성합니다. 다음 코드
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()도 참조하세요 .
QVector3D QQuaternion::toEulerAngles() const
이 함수는 과부하된 함수입니다.
이 쿼터니언에 해당하는 롤, 피치, 요 오일러 각도(도 단위)를 계산합니다.
fromEulerAngles()도 참조하세요 .
QMatrix3x3 QQuaternion::toRotationMatrix() const
이 쿼터니언에 해당하는 회전 행렬을 생성합니다.
참고: 이 쿼터니언이 정규화되지 않으면 결과 회전 행렬에 스케일링 정보가 포함됩니다.
fromRotationMatrix() 및 getAxes()도 참조하세요 .
[constexpr noexcept]
QVector4D QQuaternion::toVector4D() const
이 쿼터니언을 4D 벡터로 반환합니다.
[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()도 참조하세요 .
QVariant 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 으로 회전하여 3D 공간에 새로운 벡터를 생성합니다.
[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 &quaternion)
이 함수는 오버로드된 함수입니다.
주어진 quaternion 의 세 구성 요소의 부호를 모두 변경하여 형성된 QQuaternion 객체를 반환합니다.
QQuaternion(0,0,0,0) - quaternion
와 동일합니다.
[constexpr noexcept]
QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)
q1 에서 q2 을 빼서 형성된 QQuaternion 객체를 반환합니다; 각 구성 요소는 개별적으로 빼집니다.
QQuaternion::operator-=()도 참조하세요 .
[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 데이터 유형 직렬화도참조하십시오 .
© 2025 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.