1 #ifndef RAYLIB_CPP_INCLUDE_VECTOR4_HPP_
2 #define RAYLIB_CPP_INCLUDE_VECTOR4_HPP_
4 #ifndef RAYLIB_CPP_NO_MATH
9 #include "./raylib.hpp"
10 #include "./raymath.hpp"
11 #include "./raylib-cpp-utils.hpp"
31 set(ColorNormalize(color));
34 GETTERSETTER(
float, X, x)
35 GETTERSETTER(
float, Y, y)
36 GETTERSETTER(
float, Z, z)
37 GETTERSETTER(
float, W, w)
44 bool operator==(const ::Vector4& other) {
51 bool operator!=(const ::Vector4& other) {
52 return !(*
this == other);
55 inline ::Rectangle ToRectangle() {
59 operator ::Rectangle()
const {
63 #ifndef RAYLIB_CPP_NO_MATH
64 Vector4 Multiply(const ::Vector4& vector4)
const {
65 return QuaternionMultiply(*
this, vector4);
68 Vector4 operator*(const ::Vector4& vector4)
const {
69 return QuaternionMultiply(*
this, vector4);
72 Vector4 Lerp(const ::Vector4& vector4,
float amount)
const {
73 return QuaternionLerp(*
this, vector4, amount);
76 Vector4 Nlerp(const ::Vector4& vector4,
float amount)
const {
77 return QuaternionNlerp(*
this, vector4, amount);
80 Vector4 Slerp(const ::Vector4& vector4,
float amount)
const {
81 return QuaternionSlerp(*
this, vector4, amount);
84 Matrix ToMatrix()
const {
85 return QuaternionToMatrix(*
this);
88 float Length()
const {
89 return QuaternionLength(*
this);
92 Vector4 Normalize()
const {
93 return QuaternionNormalize(*
this);
96 Vector4 Invert()
const {
97 return QuaternionInvert(*
this);
100 void ToAxisAngle(::Vector3 *outAxis,
float *outAngle) {
101 QuaternionToAxisAngle(*
this, outAxis, outAngle);
104 std::pair<Vector3, float> ToAxisAngle() {
108 QuaternionToAxisAngle(*
this, &outAxis, &outAngle);
110 std::pair<Vector3, float> out(outAxis, outAngle);
115 Vector4 Transform(const ::Matrix& matrix) {
116 return ::QuaternionTransform(*
this, matrix);
119 static Vector4 Identity() {
120 return ::QuaternionIdentity();
123 static Vector4 FromVector3ToVector3(const ::Vector3& from , const ::Vector3& to) {
124 return ::QuaternionFromVector3ToVector3(from , to);
127 static Vector4 FromMatrix(const ::Matrix& matrix) {
128 return ::QuaternionFromMatrix(matrix);
131 static Vector4 FromAxisAngle(const ::Vector3& axis,
const float angle) {
132 return ::QuaternionFromAxisAngle(axis, angle);
135 static Vector4 FromEuler(
const float yaw,
const float pitch,
const float roll) {
136 return ::QuaternionFromEuler(yaw, pitch, roll);
139 static Vector4 FromEuler(const ::Vector3& vector3) {
140 return ::QuaternionFromEuler(vector3.x, vector3.y, vector3.z);
144 return ::QuaternionToEuler(*
this);
148 inline Color ColorFromNormalized()
const {
149 return ::ColorFromNormalized(*
this);
153 return ColorFromNormalized();
157 inline void set(const ::Vector4& vec4) {
166 typedef Vector4 Quaternion;
169 #endif // RAYLIB_CPP_INCLUDE_VECTOR4_HPP_