19#include <QtQuick3DUtils/private/qtquick3dutilsglobal_p.h>
20#include <QtQuick3DUtils/private/qssgdataref_p.h>
22#include <QtGui/QVector2D>
23#include <QtGui/QVector3D>
24#include <QtGui/QQuaternion>
25#include <QtGui/QMatrix3x3>
26#include <QtGui/QMatrix4x4>
27#include <QtGui/QColor>
29#include <QtCore/qdebug.h>
30#include <QtCore/QString>
31#include <QtCore/qloggingcategory.h>
32#include <QtCore/QIODevice>
33#include <QtCore/qmath.h>
35class tst_RotationDataClass;
41template<
int MINATTENUATION = 0,
int MAXATTENUATION = 1000>
43template<
int MINATTENUATION = 0,
int MAXATTENUATION = 1000>
77 float *writePtr(
matrix.data());
79 writePtr[0 * 4 + 2] *= -1;
80 writePtr[1 * 4 + 2] *= -1;
81 writePtr[2 * 4 + 0] *= -1;
82 writePtr[2 * 4 + 1] *= -1;
84 writePtr[3 * 4 + 2] *= -1;
108template<
typename TDataType>
112 byteSize /
sizeof(TDataType));
115Q_QUICK3DUTILS_EXPORT
const char *
nonNull(
const char *
src);
132 , m_dirty(Dirty::Quaternion)
137 , m_dirty(Dirty::Euler)
143 m_dirty = Dirty::Quaternion;
149 m_dirty = Dirty::Euler;
154 if (
a.m_dirty == Dirty::None &&
b.m_dirty == Dirty::None)
155 return fuzzyQuaternionCompare(
a.m_quatRot,
b.m_quatRot);
164 if (
a.m_dirty == Dirty::None)
173 if (
a.m_dirty == Dirty::None)
174 return fuzzyQuaternionCompare(
a.m_quatRot, rotation);
176 return fuzzyQuaternionCompare(
QQuaternion(
a), rotation);
182 if (m_dirty == Dirty::Euler) {
184 m_dirty = Dirty::None;
192 if (m_dirty == Dirty::Quaternion) {
194 m_dirty = Dirty::None;
206 friend class ::tst_RotationDataClass;
211 constexpr float e = std::numeric_limits<float>::epsilon();
224 mutable Dirty m_dirty { Dirty::None };
231 if (!node->debugObjectName.isEmpty())
233 node->debugObjectName =
src->objectName();
234 if (node->debugObjectName.isEmpty())
236 if (node->debugObjectName.isEmpty())
The QColor class provides colors based on RGB, HSV or CMYK values.
The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
The QQuaternion class represents a quaternion consisting of a vector and scalar.
static QQuaternion fromEulerAngles(const QVector3D &eulerAngles)
QQuaternion normalized() const
Returns the normalized unit form of this quaternion.
static constexpr float dotProduct(const QQuaternion &q1, const QQuaternion &q2)
QMatrix3x3 toRotationMatrix() const
QVector3D toEulerAngles() const
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static QString static QString asprintf(const char *format,...) Q_ATTRIBUTE_FORMAT_PRINTF(1
The QVector2D class represents a vector or vertex in 2D space.
The QVector3D class represents a vector or vertex in 3D space.
The QVector4D class represents a vector or vertex in 4D space.
RotationData(const QVector3D &r)
friend bool operator!=(const RotationData &a, const RotationData &b)
RotationData & operator=(const QQuaternion &r) noexcept
QVector3D getEulerRotation() const
QMatrix3x3 toRotationMatrix() const
RotationData(const QQuaternion &r)
QQuaternion getQuaternionRotation() const
friend bool operator==(const RotationData &a, const RotationData &b)
RotationData & operator=(const QVector3D &r) noexcept
void ensureDebugObjectName(T *node, QObject *src)
Combined button and popup list for selecting options.
Q_DECL_CONSTEXPR float translateConstantAttenuation(float attenuation)
Q_DECL_CONSTEXPR float translateQuadraticAttenuation(float attenuation)
Q_DECL_CONSTEXPR float translateLinearAttenuation(float attenuation)
QVector4D Q_QUICK3DUTILS_EXPORT sRGBToLinear(const QColor &color)
QColor Q_QUICK3DUTILS_EXPORT sRGBToLinearColor(const QColor &color)
QMatrix3x3 Q_QUICK3DUTILS_EXPORT getUpper3x3(const QMatrix4x4 &m)
void Q_QUICK3DUTILS_EXPORT normalize(QMatrix4x4 &m)
void flip(QMatrix4x4 &matrix)
QVector3D Q_QUICK3DUTILS_EXPORT rotate(const QMatrix4x4 &m, const QVector3D &v)
QVector3D Q_QUICK3DUTILS_EXPORT getScale(const QMatrix4x4 &m)
QVector3D Q_QUICK3DUTILS_EXPORT getPosition(const QMatrix4x4 &m)
QVector3D Q_QUICK3DUTILS_EXPORT rotated(const QQuaternion &q, const QVector3D &v)
bool Q_QUICK3DUTILS_EXPORT isFinite(const QQuaternion &q)
bool Q_QUICK3DUTILS_EXPORT isSane(const QQuaternion &q)
bool Q_QUICK3DUTILS_EXPORT isUnit(const QQuaternion &q)
float Q_QUICK3DUTILS_EXPORT magnitude(const QQuaternion &q)
QVector3D Q_QUICK3DUTILS_EXPORT inverseRotated(const QQuaternion &q, const QVector3D &v)
float Q_QUICK3DUTILS_EXPORT magnitude(const QVector2D &v)
float Q_QUICK3DUTILS_EXPORT magnitude(const QVector3D &v)
float Q_QUICK3DUTILS_EXPORT magnitudeSquared(const QVector3D &v)
QVector3D minimum(const QVector3D &v1, const QVector3D &v2) Q_DECL_NOTHROW
float Q_QUICK3DUTILS_EXPORT normalize(QVector3D &v)
QVector3D maximum(const QVector3D &v1, const QVector3D &v2) Q_DECL_NOTHROW
bool Q_QUICK3DUTILS_EXPORT isFinite(const QVector3D &v)
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2) noexcept
constexpr float qRadiansToDegrees(float radians)
constexpr float qDegreesToRadians(float degrees)
constexpr const T & qMin(const T &a, const T &b)
constexpr const T & qBound(const T &min, const T &val, const T &max)
constexpr const T & qMax(const T &a, const T &b)
constexpr T qAbs(const T &t)
GLint GLfloat GLfloat GLfloat v2
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr offset
GLuint GLenum GLenum transform
GLdouble GLdouble GLdouble GLdouble q
GLint GLenum GLboolean normalized
QSSGDataRef< TDataType > PtrAtOffset(quint8 *baseData, quint32 offset, quint32 byteSize)
QVector3D radToDeg(const QVector3D &v)
QVector3D degToRad(const QVector3D &v)
Q_QUICK3DUTILS_EXPORT const char * nonNull(const char *src)