@@ -44,11 +44,11 @@ struct [[nodiscard]] Basis {
4444 Vector3 (0 , 0 , 1 )
4545 };
4646
47- _FORCE_INLINE_ const Vector3 &operator [](int axis ) const {
48- return rows[axis ];
47+ _FORCE_INLINE_ const Vector3 &operator [](int p_row ) const {
48+ return rows[p_row ];
4949 }
50- _FORCE_INLINE_ Vector3 &operator [](int axis ) {
51- return rows[axis ];
50+ _FORCE_INLINE_ Vector3 &operator [](int p_row ) {
51+ return rows[p_row ];
5252 }
5353
5454 void invert ();
@@ -59,21 +59,19 @@ struct [[nodiscard]] Basis {
5959
6060 _FORCE_INLINE_ real_t determinant () const ;
6161
62- void from_z (const Vector3 &p_z);
63-
6462 void rotate (const Vector3 &p_axis, real_t p_angle);
6563 Basis rotated (const Vector3 &p_axis, real_t p_angle) const ;
6664
6765 void rotate_local (const Vector3 &p_axis, real_t p_angle);
6866 Basis rotated_local (const Vector3 &p_axis, real_t p_angle) const ;
6967
70- void rotate (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ);
71- Basis rotated (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ) const ;
68+ void rotate (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ);
69+ Basis rotated (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) const ;
7270
7371 void rotate (const Quaternion &p_quaternion);
7472 Basis rotated (const Quaternion &p_quaternion) const ;
7573
76- Vector3 get_euler_normalized (EulerOrder p_order = EULER_ORDER_YXZ) const ;
74+ Vector3 get_euler_normalized (EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) const ;
7775 void get_rotation_axis_angle (Vector3 &p_axis, real_t &p_angle) const ;
7876 void get_rotation_axis_angle_local (Vector3 &p_axis, real_t &p_angle) const ;
7977 Quaternion get_rotation_quaternion () const ;
@@ -82,9 +80,9 @@ struct [[nodiscard]] Basis {
8280
8381 Vector3 rotref_posscale_decomposition (Basis &rotref) const ;
8482
85- Vector3 get_euler (EulerOrder p_order = EULER_ORDER_YXZ) const ;
86- void set_euler (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ);
87- static Basis from_euler (const Vector3 &p_euler, EulerOrder p_order = EULER_ORDER_YXZ) {
83+ Vector3 get_euler (EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) const ;
84+ void set_euler (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ);
85+ static Basis from_euler (const Vector3 &p_euler, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ) {
8886 Basis b;
8987 b.set_euler (p_euler, p_order);
9088 return b;
@@ -104,27 +102,25 @@ struct [[nodiscard]] Basis {
104102
105103 void scale_orthogonal (const Vector3 &p_scale);
106104 Basis scaled_orthogonal (const Vector3 &p_scale) const ;
107-
108- void make_scale_uniform ();
109- float get_uniform_scale () const ;
105+ real_t get_uniform_scale () const ;
110106
111107 Vector3 get_scale () const ;
112108 Vector3 get_scale_abs () const ;
113- Vector3 get_scale_local () const ;
109+ Vector3 get_scale_global () const ;
114110
115111 void set_axis_angle_scale (const Vector3 &p_axis, real_t p_angle, const Vector3 &p_scale);
116- void set_euler_scale (const Vector3 &p_euler, const Vector3 &p_scale, EulerOrder p_order = EULER_ORDER_YXZ);
112+ void set_euler_scale (const Vector3 &p_euler, const Vector3 &p_scale, EulerOrder p_order = EulerOrder:: EULER_ORDER_YXZ);
117113 void set_quaternion_scale (const Quaternion &p_quaternion, const Vector3 &p_scale);
118114
119115 // transposed dot products
120- _FORCE_INLINE_ real_t tdotx (const Vector3 &v ) const {
121- return rows[0 ][0 ] * v [0 ] + rows[1 ][0 ] * v [1 ] + rows[2 ][0 ] * v [2 ];
116+ _FORCE_INLINE_ real_t tdotx (const Vector3 &p_v ) const {
117+ return rows[0 ][0 ] * p_v [0 ] + rows[1 ][0 ] * p_v [1 ] + rows[2 ][0 ] * p_v [2 ];
122118 }
123- _FORCE_INLINE_ real_t tdoty (const Vector3 &v ) const {
124- return rows[0 ][1 ] * v [0 ] + rows[1 ][1 ] * v [1 ] + rows[2 ][1 ] * v [2 ];
119+ _FORCE_INLINE_ real_t tdoty (const Vector3 &p_v ) const {
120+ return rows[0 ][1 ] * p_v [0 ] + rows[1 ][1 ] * p_v [1 ] + rows[2 ][1 ] * p_v [2 ];
125121 }
126- _FORCE_INLINE_ real_t tdotz (const Vector3 &v ) const {
127- return rows[0 ][2 ] * v [0 ] + rows[1 ][2 ] * v [1 ] + rows[2 ][2 ] * v [2 ];
122+ _FORCE_INLINE_ real_t tdotz (const Vector3 &p_v ) const {
123+ return rows[0 ][2 ] * p_v [0 ] + rows[1 ][2 ] * p_v [1 ] + rows[2 ][2 ] * p_v [2 ];
128124 }
129125
130126 bool is_equal_approx (const Basis &p_basis) const ;
@@ -141,31 +137,35 @@ struct [[nodiscard]] Basis {
141137 _FORCE_INLINE_ Basis operator +(const Basis &p_matrix) const ;
142138 _FORCE_INLINE_ void operator -=(const Basis &p_matrix);
143139 _FORCE_INLINE_ Basis operator -(const Basis &p_matrix) const ;
144- _FORCE_INLINE_ void operator *=(const real_t p_val);
145- _FORCE_INLINE_ Basis operator *(const real_t p_val) const ;
140+ _FORCE_INLINE_ void operator *=(real_t p_val);
141+ _FORCE_INLINE_ Basis operator *(real_t p_val) const ;
142+ _FORCE_INLINE_ void operator /=(real_t p_val);
143+ _FORCE_INLINE_ Basis operator /(real_t p_val) const ;
146144
147145 bool is_orthogonal () const ;
146+ bool is_orthonormal () const ;
147+ bool is_conformal () const ;
148148 bool is_diagonal () const ;
149149 bool is_rotation () const ;
150150
151- Basis lerp (const Basis &p_to, const real_t & p_weight) const ;
152- Basis slerp (const Basis &p_to, const real_t & p_weight) const ;
151+ Basis lerp (const Basis &p_to, real_t p_weight) const ;
152+ Basis slerp (const Basis &p_to, real_t p_weight) const ;
153153 void rotate_sh (real_t *p_values);
154154
155155 operator String () const ;
156156
157157 /* create / set */
158158
159- _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 ) {
160- rows[0 ][0 ] = xx ;
161- rows[0 ][1 ] = xy ;
162- rows[0 ][2 ] = xz ;
163- rows[1 ][0 ] = yx ;
164- rows[1 ][1 ] = yy ;
165- rows[1 ][2 ] = yz ;
166- rows[2 ][0 ] = zx ;
167- rows[2 ][1 ] = zy ;
168- rows[2 ][2 ] = zz ;
159+ _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 ) {
160+ rows[0 ][0 ] = p_xx ;
161+ rows[0 ][1 ] = p_xy ;
162+ rows[0 ][2 ] = p_xz ;
163+ rows[1 ][0 ] = p_yx ;
164+ rows[1 ][1 ] = p_yy ;
165+ rows[1 ][2 ] = p_yz ;
166+ rows[2 ][0 ] = p_zx ;
167+ rows[2 ][1 ] = p_zy ;
168+ rows[2 ][2 ] = p_zz ;
169169 }
170170 _FORCE_INLINE_ void set_columns (const Vector3 &p_x, const Vector3 &p_y, const Vector3 &p_z) {
171171 set_column (0 , p_x);
@@ -195,20 +195,20 @@ struct [[nodiscard]] Basis {
195195 rows[2 ].zero ();
196196 }
197197
198- _FORCE_INLINE_ Basis transpose_xform (const Basis &m ) const {
198+ _FORCE_INLINE_ Basis transpose_xform (const Basis &p_m ) const {
199199 return Basis (
200- rows[0 ].x * m [0 ].x + rows[1 ].x * m [1 ].x + rows[2 ].x * m [2 ].x ,
201- rows[0 ].x * m [0 ].y + rows[1 ].x * m [1 ].y + rows[2 ].x * m [2 ].y ,
202- rows[0 ].x * m [0 ].z + rows[1 ].x * m [1 ].z + rows[2 ].x * m [2 ].z ,
203- rows[0 ].y * m [0 ].x + rows[1 ].y * m [1 ].x + rows[2 ].y * m [2 ].x ,
204- rows[0 ].y * m [0 ].y + rows[1 ].y * m [1 ].y + rows[2 ].y * m [2 ].y ,
205- rows[0 ].y * m [0 ].z + rows[1 ].y * m [1 ].z + rows[2 ].y * m [2 ].z ,
206- rows[0 ].z * m [0 ].x + rows[1 ].z * m [1 ].x + rows[2 ].z * m [2 ].x ,
207- rows[0 ].z * m [0 ].y + rows[1 ].z * m [1 ].y + rows[2 ].z * m [2 ].y ,
208- rows[0 ].z * m [0 ].z + rows[1 ].z * m [1 ].z + rows[2 ].z * m [2 ].z );
200+ rows[0 ].x * p_m [0 ].x + rows[1 ].x * p_m [1 ].x + rows[2 ].x * p_m [2 ].x ,
201+ rows[0 ].x * p_m [0 ].y + rows[1 ].x * p_m [1 ].y + rows[2 ].x * p_m [2 ].y ,
202+ rows[0 ].x * p_m [0 ].z + rows[1 ].x * p_m [1 ].z + rows[2 ].x * p_m [2 ].z ,
203+ rows[0 ].y * p_m [0 ].x + rows[1 ].y * p_m [1 ].x + rows[2 ].y * p_m [2 ].x ,
204+ rows[0 ].y * p_m [0 ].y + rows[1 ].y * p_m [1 ].y + rows[2 ].y * p_m [2 ].y ,
205+ rows[0 ].y * p_m [0 ].z + rows[1 ].y * p_m [1 ].z + rows[2 ].y * p_m [2 ].z ,
206+ rows[0 ].z * p_m [0 ].x + rows[1 ].z * p_m [1 ].x + rows[2 ].z * p_m [2 ].x ,
207+ rows[0 ].z * p_m [0 ].y + rows[1 ].z * p_m [1 ].y + rows[2 ].z * p_m [2 ].y ,
208+ rows[0 ].z * p_m [0 ].z + rows[1 ].z * p_m [1 ].z + rows[2 ].z * p_m [2 ].z );
209209 }
210- 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 ) {
211- set (xx, xy, xz, yx, yy, yz, zx, zy, zz );
210+ 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 ) {
211+ set (p_xx, p_xy, p_xz, p_yx, p_yy, p_yz, p_zx, p_zy, p_zz );
212212 }
213213
214214 void orthonormalize ();
@@ -282,18 +282,30 @@ _FORCE_INLINE_ Basis Basis::operator-(const Basis &p_matrix) const {
282282 return ret;
283283}
284284
285- _FORCE_INLINE_ void Basis::operator *=(const real_t p_val) {
285+ _FORCE_INLINE_ void Basis::operator *=(real_t p_val) {
286286 rows[0 ] *= p_val;
287287 rows[1 ] *= p_val;
288288 rows[2 ] *= p_val;
289289}
290290
291- _FORCE_INLINE_ Basis Basis::operator *(const real_t p_val) const {
291+ _FORCE_INLINE_ Basis Basis::operator *(real_t p_val) const {
292292 Basis ret (*this );
293293 ret *= p_val;
294294 return ret;
295295}
296296
297+ _FORCE_INLINE_ void Basis::operator /=(real_t p_val) {
298+ rows[0 ] /= p_val;
299+ rows[1 ] /= p_val;
300+ rows[2 ] /= p_val;
301+ }
302+
303+ _FORCE_INLINE_ Basis Basis::operator /(real_t p_val) const {
304+ Basis ret (*this );
305+ ret /= p_val;
306+ return ret;
307+ }
308+
297309Vector3 Basis::xform (const Vector3 &p_vector) const {
298310 return Vector3 (
299311 rows[0 ].dot (p_vector),
0 commit comments