@@ -43,11 +43,11 @@ struct [[nodiscard]] Basis {
43
43
Vector3 (0 , 0 , 1 )
44
44
};
45
45
46
- _FORCE_INLINE_ const Vector3 &operator [](int axis ) const {
47
- return rows[axis ];
46
+ _FORCE_INLINE_ const Vector3 &operator [](int p_row ) const {
47
+ return rows[p_row ];
48
48
}
49
- _FORCE_INLINE_ Vector3 &operator [](int axis ) {
50
- return rows[axis ];
49
+ _FORCE_INLINE_ Vector3 &operator [](int p_row ) {
50
+ return rows[p_row ];
51
51
}
52
52
53
53
void invert ();
@@ -58,21 +58,19 @@ struct [[nodiscard]] Basis {
58
58
59
59
_FORCE_INLINE_ real_t determinant () const ;
60
60
61
- void from_z (const Vector3 &p_z);
62
-
63
61
void rotate (const Vector3 &p_axis, real_t p_angle);
64
62
Basis rotated (const Vector3 &p_axis, real_t p_angle) const ;
65
63
66
64
void rotate_local (const Vector3 &p_axis, real_t p_angle);
67
65
Basis rotated_local (const Vector3 &p_axis, real_t p_angle) const ;
68
66
69
- void rotate (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ);
70
- Basis rotated (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ) const ;
67
+ void rotate (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ);
68
+ Basis rotated (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) const ;
71
69
72
70
void rotate (const Quaternion &p_quaternion);
73
71
Basis rotated (const Quaternion &p_quaternion) const ;
74
72
75
- Vector3 get_euler_normalized (EulerOrder p_order = EULER_ORDER_YXZ) const ;
73
+ Vector3 get_euler_normalized (EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) const ;
76
74
void get_rotation_axis_angle (Vector3 &p_axis, real_t &p_angle) const ;
77
75
void get_rotation_axis_angle_local (Vector3 &p_axis, real_t &p_angle) const ;
78
76
Quaternion get_rotation_quaternion () const ;
@@ -81,9 +79,9 @@ struct [[nodiscard]] Basis {
81
79
82
80
Vector3 rotref_posscale_decomposition (Basis &rotref) const ;
83
81
84
- Vector3 get_euler (EulerOrder p_order = EULER_ORDER_YXZ) const ;
85
- void set_euler (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ);
86
- static Basis from_euler (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ) {
82
+ Vector3 get_euler (EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) const ;
83
+ void set_euler (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ);
84
+ static Basis from_euler (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) {
87
85
Basis b;
88
86
b.set_euler (p_euler, p_order);
89
87
return b;
@@ -103,27 +101,25 @@ struct [[nodiscard]] Basis {
103
101
104
102
void scale_orthogonal (const Vector3 &p_scale);
105
103
Basis scaled_orthogonal (const Vector3 &p_scale) const ;
106
-
107
- void make_scale_uniform ();
108
- float get_uniform_scale () const ;
104
+ real_t get_uniform_scale () const ;
109
105
110
106
Vector3 get_scale () const ;
111
107
Vector3 get_scale_abs () const ;
112
- Vector3 get_scale_local () const ;
108
+ Vector3 get_scale_global () const ;
113
109
114
110
void set_axis_angle_scale (const Vector3 &p_axis, real_t p_angle, const Vector3 &p_scale);
115
- void set_euler_scale (const Vector3 &p_euler, const Vector3 &p_scale, EulerOrder p_order = EULER_ORDER_YXZ);
111
+ void set_euler_scale (const Vector3 &p_euler, const Vector3 &p_scale, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ);
116
112
void set_quaternion_scale (const Quaternion &p_quaternion, const Vector3 &p_scale);
117
113
118
114
// transposed dot products
119
- _FORCE_INLINE_ real_t tdotx (const Vector3 &v ) const {
120
- return rows[0 ][0 ] * v [0 ] + rows[1 ][0 ] * v [1 ] + rows[2 ][0 ] * v [2 ];
115
+ _FORCE_INLINE_ real_t tdotx (const Vector3 &p_v ) const {
116
+ return rows[0 ][0 ] * p_v [0 ] + rows[1 ][0 ] * p_v [1 ] + rows[2 ][0 ] * p_v [2 ];
121
117
}
122
- _FORCE_INLINE_ real_t tdoty (const Vector3 &v ) const {
123
- return rows[0 ][1 ] * v [0 ] + rows[1 ][1 ] * v [1 ] + rows[2 ][1 ] * v [2 ];
118
+ _FORCE_INLINE_ real_t tdoty (const Vector3 &p_v ) const {
119
+ return rows[0 ][1 ] * p_v [0 ] + rows[1 ][1 ] * p_v [1 ] + rows[2 ][1 ] * p_v [2 ];
124
120
}
125
- _FORCE_INLINE_ real_t tdotz (const Vector3 &v ) const {
126
- return rows[0 ][2 ] * v [0 ] + rows[1 ][2 ] * v [1 ] + rows[2 ][2 ] * v [2 ];
121
+ _FORCE_INLINE_ real_t tdotz (const Vector3 &p_v ) const {
122
+ return rows[0 ][2 ] * p_v [0 ] + rows[1 ][2 ] * p_v [1 ] + rows[2 ][2 ] * p_v [2 ];
127
123
}
128
124
129
125
bool is_equal_approx (const Basis &p_basis) const ;
@@ -140,31 +136,35 @@ struct [[nodiscard]] Basis {
140
136
_FORCE_INLINE_ Basis operator +(const Basis &p_matrix) const ;
141
137
_FORCE_INLINE_ void operator -=(const Basis &p_matrix);
142
138
_FORCE_INLINE_ Basis operator -(const Basis &p_matrix) const ;
143
- _FORCE_INLINE_ void operator *=(const real_t p_val);
144
- _FORCE_INLINE_ Basis operator *(const real_t p_val) const ;
139
+ _FORCE_INLINE_ void operator *=(real_t p_val);
140
+ _FORCE_INLINE_ Basis operator *(real_t p_val) const ;
141
+ _FORCE_INLINE_ void operator /=(real_t p_val);
142
+ _FORCE_INLINE_ Basis operator /(real_t p_val) const ;
145
143
146
144
bool is_orthogonal () const ;
145
+ bool is_orthonormal () const ;
146
+ bool is_conformal () const ;
147
147
bool is_diagonal () const ;
148
148
bool is_rotation () const ;
149
149
150
- Basis lerp (const Basis &p_to, const real_t & p_weight) const ;
151
- Basis slerp (const Basis &p_to, const real_t & p_weight) const ;
150
+ Basis lerp (const Basis &p_to, real_t p_weight) const ;
151
+ Basis slerp (const Basis &p_to, real_t p_weight) const ;
152
152
void rotate_sh (real_t *p_values);
153
153
154
154
operator String () const ;
155
155
156
156
/* create / set */
157
157
158
- _FORCE_INLINE_ void set (real_t xx , real_t xy , real_t xz , real_t yx , real_t yy , real_t yz , real_t zx , real_t zy , real_t zz ) {
159
- rows[0 ][0 ] = xx ;
160
- rows[0 ][1 ] = xy ;
161
- rows[0 ][2 ] = xz ;
162
- rows[1 ][0 ] = yx ;
163
- rows[1 ][1 ] = yy ;
164
- rows[1 ][2 ] = yz ;
165
- rows[2 ][0 ] = zx ;
166
- rows[2 ][1 ] = zy ;
167
- rows[2 ][2 ] = zz ;
158
+ _FORCE_INLINE_ void set (real_t p_xx , real_t p_xy , real_t p_xz , real_t p_yx , real_t p_yy , real_t p_yz , real_t p_zx , real_t p_zy , real_t p_zz ) {
159
+ rows[0 ][0 ] = p_xx ;
160
+ rows[0 ][1 ] = p_xy ;
161
+ rows[0 ][2 ] = p_xz ;
162
+ rows[1 ][0 ] = p_yx ;
163
+ rows[1 ][1 ] = p_yy ;
164
+ rows[1 ][2 ] = p_yz ;
165
+ rows[2 ][0 ] = p_zx ;
166
+ rows[2 ][1 ] = p_zy ;
167
+ rows[2 ][2 ] = p_zz ;
168
168
}
169
169
_FORCE_INLINE_ void set_columns (const Vector3 &p_x, const Vector3 &p_y, const Vector3 &p_z) {
170
170
set_column (0 , p_x);
@@ -194,20 +194,20 @@ struct [[nodiscard]] Basis {
194
194
rows[2 ].zero ();
195
195
}
196
196
197
- _FORCE_INLINE_ Basis transpose_xform (const Basis &m ) const {
197
+ _FORCE_INLINE_ Basis transpose_xform (const Basis &p_m ) const {
198
198
return Basis (
199
- rows[0 ].x * m [0 ].x + rows[1 ].x * m [1 ].x + rows[2 ].x * m [2 ].x ,
200
- rows[0 ].x * m [0 ].y + rows[1 ].x * m [1 ].y + rows[2 ].x * m [2 ].y ,
201
- rows[0 ].x * m [0 ].z + rows[1 ].x * m [1 ].z + rows[2 ].x * m [2 ].z ,
202
- rows[0 ].y * m [0 ].x + rows[1 ].y * m [1 ].x + rows[2 ].y * m [2 ].x ,
203
- rows[0 ].y * m [0 ].y + rows[1 ].y * m [1 ].y + rows[2 ].y * m [2 ].y ,
204
- rows[0 ].y * m [0 ].z + rows[1 ].y * m [1 ].z + rows[2 ].y * m [2 ].z ,
205
- rows[0 ].z * m [0 ].x + rows[1 ].z * m [1 ].x + rows[2 ].z * m [2 ].x ,
206
- rows[0 ].z * m [0 ].y + rows[1 ].z * m [1 ].y + rows[2 ].z * m [2 ].y ,
207
- rows[0 ].z * m [0 ].z + rows[1 ].z * m [1 ].z + rows[2 ].z * m [2 ].z );
199
+ rows[0 ].x * p_m [0 ].x + rows[1 ].x * p_m [1 ].x + rows[2 ].x * p_m [2 ].x ,
200
+ rows[0 ].x * p_m [0 ].y + rows[1 ].x * p_m [1 ].y + rows[2 ].x * p_m [2 ].y ,
201
+ rows[0 ].x * p_m [0 ].z + rows[1 ].x * p_m [1 ].z + rows[2 ].x * p_m [2 ].z ,
202
+ rows[0 ].y * p_m [0 ].x + rows[1 ].y * p_m [1 ].x + rows[2 ].y * p_m [2 ].x ,
203
+ rows[0 ].y * p_m [0 ].y + rows[1 ].y * p_m [1 ].y + rows[2 ].y * p_m [2 ].y ,
204
+ rows[0 ].y * p_m [0 ].z + rows[1 ].y * p_m [1 ].z + rows[2 ].y * p_m [2 ].z ,
205
+ rows[0 ].z * p_m [0 ].x + rows[1 ].z * p_m [1 ].x + rows[2 ].z * p_m [2 ].x ,
206
+ rows[0 ].z * p_m [0 ].y + rows[1 ].z * p_m [1 ].y + rows[2 ].z * p_m [2 ].y ,
207
+ rows[0 ].z * p_m [0 ].z + rows[1 ].z * p_m [1 ].z + rows[2 ].z * p_m [2 ].z );
208
208
}
209
- Basis (real_t xx , real_t xy , real_t xz , real_t yx , real_t yy , real_t yz , real_t zx , real_t zy , real_t zz ) {
210
- set (xx, xy, xz, yx, yy, yz, zx, zy, zz );
209
+ Basis (real_t p_xx , real_t p_xy , real_t p_xz , real_t p_yx , real_t p_yy , real_t p_yz , real_t p_zx , real_t p_zy , real_t p_zz ) {
210
+ set (p_xx, p_xy, p_xz, p_yx, p_yy, p_yz, p_zx, p_zy, p_zz );
211
211
}
212
212
213
213
void orthonormalize ();
@@ -281,18 +281,30 @@ _FORCE_INLINE_ Basis Basis::operator-(const Basis &p_matrix) const {
281
281
return ret;
282
282
}
283
283
284
- _FORCE_INLINE_ void Basis::operator *=(const real_t p_val) {
284
+ _FORCE_INLINE_ void Basis::operator *=(real_t p_val) {
285
285
rows[0 ] *= p_val;
286
286
rows[1 ] *= p_val;
287
287
rows[2 ] *= p_val;
288
288
}
289
289
290
- _FORCE_INLINE_ Basis Basis::operator *(const real_t p_val) const {
290
+ _FORCE_INLINE_ Basis Basis::operator *(real_t p_val) const {
291
291
Basis ret (*this );
292
292
ret *= p_val;
293
293
return ret;
294
294
}
295
295
296
+ _FORCE_INLINE_ void Basis::operator /=(real_t p_val) {
297
+ rows[0 ] /= p_val;
298
+ rows[1 ] /= p_val;
299
+ rows[2 ] /= p_val;
300
+ }
301
+
302
+ _FORCE_INLINE_ Basis Basis::operator /(real_t p_val) const {
303
+ Basis ret (*this );
304
+ ret /= p_val;
305
+ return ret;
306
+ }
307
+
296
308
Vector3 Basis::xform (const Vector3 &p_vector) const {
297
309
return Vector3 (
298
310
rows[0 ].dot (p_vector),
0 commit comments