KanoopGuiQt 1.3.0
Qt GUI utility library
Loading...
Searching...
No Matches
quaternion.h
1#ifndef QUATERNION_H
2#define QUATERNION_H
3#include <Kanoop/gui/libkanoopgui.h>
4#include <QQuaternion>
5
6/**
7 * @brief QQuaternion subclass adding string serialization helpers.
8 *
9 * Quaternion forwards all QQuaternion constructors and adds toString() for
10 * human-readable output and fromString() for round-trip parsing.
11 */
12class LIBKANOOPGUI_EXPORT Quaternion : public QQuaternion
13{
14public:
15 /** @brief Default constructor — identity quaternion. */
16 constexpr Quaternion() noexcept :
17 QQuaternion() {}
18 /**
19 * @brief Construct with explicit initialization.
20 * @param initialization Qt initialization flag
21 */
22 explicit Quaternion(Qt::Initialization initialization) noexcept :
23 QQuaternion(initialization) {}
24 /**
25 * @brief Construct from scalar and vector components.
26 * @param scalar Scalar (w) component
27 * @param xpos X component
28 * @param ypos Y component
29 * @param zpos Z component
30 */
31 constexpr Quaternion(float scalar, float xpos, float ypos, float zpos) noexcept :
32 QQuaternion(scalar, xpos, ypos, zpos) {}
33#ifndef QT_NO_VECTOR3D
34 /**
35 * @brief Construct from a scalar and a 3D vector.
36 * @param scalar Scalar (w) component
37 * @param vector 3D vector (x, y, z)
38 */
39 constexpr Quaternion(float scalar, const QVector3D &vector) noexcept :
40 QQuaternion(scalar, vector) {}
41#endif
42#ifndef QT_NO_VECTOR4D
43 /**
44 * @brief Construct from a 4D vector.
45 * @param vector 4D vector (x, y, z, w)
46 */
47 constexpr explicit Quaternion(const QVector4D &vector) noexcept :
48 QQuaternion(vector) {}
49#endif
50
51 /**
52 * @brief Format this quaternion as a comma-separated string.
53 * @return String of the form "x, y, z, scalar"
54 */
55 QString toString() const { return QString("%1, %2, %3, %4").arg(x()).arg(y()).arg(z()).arg(scalar()); }
56
57 /**
58 * @brief Parse a quaternion from a comma-separated string.
59 * @param value String of the form "x, y, z, scalar"
60 * @return Parsed Quaternion
61 */
62 static Quaternion fromString(const QString& value);
63};
64
65#endif // QUATERNION_H
QQuaternion subclass adding string serialization helpers.
Definition quaternion.h:13
constexpr Quaternion(float scalar, const QVector3D &vector) noexcept
Construct from a scalar and a 3D vector.
Definition quaternion.h:39
constexpr Quaternion(float scalar, float xpos, float ypos, float zpos) noexcept
Construct from scalar and vector components.
Definition quaternion.h:31
Quaternion(Qt::Initialization initialization) noexcept
Construct with explicit initialization.
Definition quaternion.h:22
QString toString() const
Format this quaternion as a comma-separated string.
Definition quaternion.h:55
static Quaternion fromString(const QString &value)
Parse a quaternion from a comma-separated string.
constexpr Quaternion(const QVector4D &vector) noexcept
Construct from a 4D vector.
Definition quaternion.h:47
constexpr Quaternion() noexcept
Default constructor — identity quaternion.
Definition quaternion.h:16