OROCHI
 
Loading...
Searching...
No Matches
GxVector.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13GX_CORE_NAMESPACE_BEGIN()
14
15struct GxFloat2;
16struct GxFloat3;
17struct GxFloat4;
18struct GxSize;
19struct GxPoint2;
20struct GxRect;
21struct GxVector2;
22struct GxVector3;
23struct GxVector4;
24struct GxMatrixAffine;
25struct GxMatrix44;
26struct GxQuaternion;
27struct GxColorHDR;
28class GxStreamWriter;
29
30//===========================================================================
32//===========================================================================
33GX_ALIGN16_BEGIN struct GxVector2 : public GxStructBase
34{
35 //-------------------------------------------------------------
37 //-------------------------------------------------------------
39public:
40 GX_RTTI_STRUCT(GxVector2)
41
42
43 static constexpr u32 DIMENSION = 2;
45 static const GxVector2 ZERO;
47 static const GxVector2 ONE;
49 static const GxVector2 AXIS_X;
51 static const GxVector2 AXIS_Y;
53 static const GxVector2 MIN;
55 static const GxVector2 MAX;
56
58 //-------------------------------------------------------------
60 //-------------------------------------------------------------
62
64 GxVector2(void) : _x(0.f), _y(0.f){}
66 GX_FORCE_INLINE GxVector2(f32 x, f32 y);
68 GX_FORCE_INLINE GxVector2(const GxFloat2& float2);
70 GX_FORCE_INLINE GxVector2(const f32* pFloatArray);
72 GX_FORCE_INLINE GxVector2(const GxPoint2& poiot);
73
75 GX_FORCE_INLINE GxVector2(const GxVector2& vector);
76
78 //-------------------------------------------------------------
80 //-------------------------------------------------------------
82
84 GX_FORCE_INLINE GxVector2& operator = (const GxVector2& vector);
86 GX_FORCE_INLINE GxVector2& operator += (f32 scalar);
88 GX_FORCE_INLINE GxVector2& operator -= (f32 scalar);
90 GX_FORCE_INLINE GxVector2& operator *= (f32 scalar);
92 GX_FORCE_INLINE GxVector2& operator /= (f32 scalar);
94 GX_FORCE_INLINE GxVector2& operator += (const GxVector2& vector);
96 GX_FORCE_INLINE GxVector2& operator -= (const GxVector2& vector);
98 GX_FORCE_INLINE GxVector2& operator *= (const GxVector2& vector);
100 GX_FORCE_INLINE GxVector2& operator /= (const GxVector2& vector);
102 friend GX_FORCE_INLINE const GxVector2 operator + (const GxVector2& vector) { return vector; }
104 friend GX_FORCE_INLINE const GxVector2 operator - (const GxVector2& vector) { return vector * -1.0f; }
106 friend GX_FORCE_INLINE const GxVector2 operator + (const GxVector2& vector, f32 scalar);
108 friend GX_FORCE_INLINE const GxVector2 operator - (const GxVector2& vector, f32 scalar);
110 friend GX_FORCE_INLINE const GxVector2 operator * (const GxVector2& vector, f32 scalar);
112 friend GX_FORCE_INLINE const GxVector2 operator * (f32 scalar, const GxVector2& vector);
114 friend GX_FORCE_INLINE const GxVector2 operator / (const GxVector2& vector, f32 scalar);
116 friend GX_FORCE_INLINE const GxVector2 operator + (const GxVector2& vector0, const GxVector2& vector1);
118 friend GX_FORCE_INLINE const GxVector2 operator - (const GxVector2& vector0, const GxVector2& vector1);
120 friend GX_FORCE_INLINE const GxVector2 operator * (const GxVector2& vector0, const GxVector2& vector1);
122 friend GX_FORCE_INLINE const GxVector2 operator / (const GxVector2& vector0, const GxVector2& vector1);
124 friend GX_FORCE_INLINE b32 operator == (const GxVector2& vector0, const GxVector2& vector1);
126 friend GX_FORCE_INLINE b32 operator != (const GxVector2& vector0, const GxVector2& vector1);
127
129 //-------------------------------------------------------------
131 //-------------------------------------------------------------
133
135 GX_FORCE_INLINE const f32& operator[](u32 i) const;
137 GX_FORCE_INLINE f32& operator[](u32 i);
139 GX_FORCE_INLINE b32 isZeroVector(void) const;
141 GX_FORCE_INLINE f32 getLength(void) const;
143 GX_FORCE_INLINE f32 getLengthSquare(void) const;
145 GX_FORCE_INLINE void setLength(f32 length);
147 GX_FORCE_INLINE void setLengthEx(f32 length);
149 GX_FORCE_INLINE GxVector2 getNormalize(void) const;
151 GX_FORCE_INLINE GxVector2 getNormalizeEx(void) const;
153 constexpr f32 getMinimumValue(void) const { return _x < _y ? _x : _y; }
155 constexpr f32 getMaximumValue(void) const { return _x > _y ? _x : _y; }
156
158 static GX_FORCE_INLINE const GxVector2& getAddScalar(GxVector2& dst, const GxVector2& vector, f32 scalar);
160 static GX_FORCE_INLINE const GxVector2& getSubScalar(GxVector2& dst, const GxVector2& vector, f32 scalar);
162 static GX_FORCE_INLINE const GxVector2& getMulScalar(GxVector2& dst, const GxVector2& vector, f32 scalar);
164 static GX_FORCE_INLINE const GxVector2& getDivScalar(GxVector2& dst, const GxVector2& vector, f32 scalar);
166 static GX_FORCE_INLINE const GxVector2& getAddVector(GxVector2& dst, const GxVector2& vector0, const GxVector2& vector1);
168 static GX_FORCE_INLINE const GxVector2& getSubVector(GxVector2& dst, const GxVector2& vector0, const GxVector2& vector1);
170 static GX_FORCE_INLINE const GxVector2& getMulVector(GxVector2& dst, const GxVector2& vector0, const GxVector2& vector1);
172 static GX_FORCE_INLINE const GxVector2& getDivVector(GxVector2& dst, const GxVector2& vector0, const GxVector2& vector1);
174 static GX_FORCE_INLINE const GxVector2& getNormalize(GxVector2& dst, const GxVector2& vector);
176 static GX_FORCE_INLINE const GxVector2& getNormalizeEx(GxVector2& dst, const GxVector2& vector);
178 static GX_FORCE_INLINE f32 getDot(const GxVector2& vector0, const GxVector2& vector1);
180 static GX_FORCE_INLINE f32 getCross(const GxVector2& vector0, const GxVector2& vector1);
182 static GX_FORCE_INLINE f32 getAngle(const GxVector2& vector0, const GxVector2& vector1);
184 static GX_FORCE_INLINE GxVector2 getMinimum(const GxVector2& vector0, const GxVector2& vector1);
186 static GX_FORCE_INLINE const GxVector2& getMinimum(GxVector2& dst, const GxVector2& vector0, const GxVector2& vector1);
188 static GX_FORCE_INLINE GxVector2 getMaximum(const GxVector2& vector0, const GxVector2& vector1);
190 static GX_FORCE_INLINE const GxVector2& getMaximum(GxVector2& dst, const GxVector2& vector0, const GxVector2& vector1);
192 static GX_FORCE_INLINE GxVector2 getLerp(const GxVector2& vector0, const GxVector2& vector1, f32 t);
194 static GX_FORCE_INLINE const GxVector2& getLerp(GxVector2& dst, const GxVector2& vector0, const GxVector2& vector1, f32 t);
195
197 //-----------------------------------------------------------
199 //-----------------------------------------------------------
201
203 GX_FORCE_INLINE const GxVector2& addScalar(f32 scalar);
205 GX_FORCE_INLINE const GxVector2& subScalar(f32 scalar);
207 GX_FORCE_INLINE const GxVector2& mulScalar(f32 scalar);
209 GX_FORCE_INLINE const GxVector2& divScalar(f32 scalar);
211 GX_FORCE_INLINE const GxVector2& addVector(const GxVector2& vector);
213 GX_FORCE_INLINE const GxVector2& subVector(const GxVector2& vector);
215 GX_FORCE_INLINE const GxVector2& mulVector(const GxVector2& vector);
217 GX_FORCE_INLINE const GxVector2& divVector(const GxVector2& vector);
218
220 GX_FORCE_INLINE const GxVector2& normalize(void);
222 GX_FORCE_INLINE const GxVector2& normalizeEx(void);
223
224#if GX_DEVELOP
225 // 書き込み
226 b32 write(GxStreamWriter& writer);
227#endif //GX_DEVELOP
229 //-------------------------------------------------------------
231 //-------------------------------------------------------------
233
234 f32 _x;
235 f32 _y;
236 u32 _padding[2];
237
239} GX_ALIGN16_END;
240
241//===========================================================================
243//===========================================================================
244GX_ALIGN16_BEGIN struct GxVector3 : public GxStructBase
245{
246 //-------------------------------------------------------------
248 //-------------------------------------------------------------
250public:
251 GX_RTTI_STRUCT(GxVector3)
252
253
254 static constexpr u32 DIMENSION = 3;
256 static const GxVector3 ZERO;
258 static const GxVector3 ONE;
260 static const GxVector3 AXIS_X;
262 static const GxVector3 AXIS_Y;
264 static const GxVector3 AXIS_Z;
266 static const GxVector3 MIN;
268 static const GxVector3 MAX;
269
271 //-------------------------------------------------------------
273 //-------------------------------------------------------------
275
277 GxVector3(void) : _x(0.f), _y(0.f), _z(0.f){}
279 GX_FORCE_INLINE GxVector3(f32 x, f32 y, f32 z);
281 GX_FORCE_INLINE GxVector3(const GxFloat3& float3);
283 GX_FORCE_INLINE GxVector3(const f32* pFloatArray);
285 GX_FORCE_INLINE GxVector3(const GxPoint2& point, f32 z = 0.0f);
287 GX_FORCE_INLINE GxVector3(const GxVector2& vector, f32 z = 0.0f);
289 GX_FORCE_INLINE GxVector3(const GxVector4& vector);
290
292 GX_FORCE_INLINE GxVector3(const GxVector3& vector);
293
295 //-----------------------------------------------------------
297 //-----------------------------------------------------------
299
301 GX_FORCE_INLINE GxVector3& operator = (const GxVector3& vector);
303 GX_FORCE_INLINE GxVector3& operator += (f32 scalar);
305 GX_FORCE_INLINE GxVector3& operator -= (f32 scalar);
307 GX_FORCE_INLINE GxVector3& operator *= (f32 scalar);
309 GX_FORCE_INLINE GxVector3& operator /= (f32 scalar);
311 GX_FORCE_INLINE GxVector3& operator += (const GxVector3& vector);
313 GX_FORCE_INLINE GxVector3& operator -= (const GxVector3& vector);
315 GX_FORCE_INLINE GxVector3& operator *= (const GxVector3& vector);
317 GX_FORCE_INLINE GxVector3& operator /= (const GxVector3& vector);
319 friend GX_FORCE_INLINE const GxVector3 operator + (const GxVector3& vector) { return vector; }
321 friend GX_FORCE_INLINE const GxVector3 operator - (const GxVector3& vector) { return vector * -1.0f; }
323 friend GX_FORCE_INLINE const GxVector3 operator + (const GxVector3& vector, f32 scalar);
325 friend GX_FORCE_INLINE const GxVector3 operator - (const GxVector3& vector, f32 scalar);
327 friend GX_INLINE const GxVector3 operator * (const GxVector3& vector, f32 scalar);
329 friend GX_FORCE_INLINE const GxVector3 operator * (f32 scalar, const GxVector3& vector);
331 friend GX_FORCE_INLINE const GxVector3 operator / (const GxVector3& vector, f32 scalar);
333 friend GX_FORCE_INLINE const GxVector3 operator + (const GxVector3& vector0, const GxVector3& vector1);
335 friend GX_FORCE_INLINE const GxVector3 operator - (const GxVector3& vector0, const GxVector3& vector1);
337 friend GX_FORCE_INLINE const GxVector3 operator * (const GxVector3& vector0, const GxVector3& vector1);
339 friend GX_FORCE_INLINE const GxVector3 operator / (const GxVector3& vector0, const GxVector3& vector1);
341 friend GX_FORCE_INLINE b32 operator == (const GxVector3& vector0, const GxVector3& vector1);
343 friend GX_FORCE_INLINE b32 operator != (const GxVector3& vector0, const GxVector3& vector1);
345 friend GX_FORCE_INLINE b32 operator < (const GxVector3& vector0, const GxVector3& vector1) { return (vector0._x != vector1._x) ? (vector0._x < vector1._x) : ((vector0._y != vector1._y) ? (vector0._y < vector1._y) : (vector0._z < vector1._z)); }
347 friend GX_FORCE_INLINE b32 operator > (const GxVector3& vector0, const GxVector3& vector1) { return (vector0._x != vector1._x) ? (vector0._x > vector1._x) : ((vector0._y != vector1._y) ? (vector0._y > vector1._y) : (vector0._z > vector1._z)); }
348
350 //-----------------------------------------------------------
352 //-----------------------------------------------------------
354
356 GX_FORCE_INLINE const f32& operator[](u32 i) const;
358 GX_FORCE_INLINE f32& operator[](u32 i);
360 GX_FORCE_INLINE b32 isZeroVector(void) const;
362 GX_FORCE_INLINE GxVector3 getXY(void) const;
364 GX_FORCE_INLINE const GxVector3& getXY(GxVector3& dst) const;
366 GX_FORCE_INLINE void setXY(const GxVector3& vector);
368 GX_FORCE_INLINE GxVector3 getXZ(void) const;
370 GX_FORCE_INLINE const GxVector3& getXZ(GxVector3& dst) const;
372 GX_FORCE_INLINE void setXZ(const GxVector3& vector);
374 GX_FORCE_INLINE GxVector3 getYZ(void) const;
376 GX_FORCE_INLINE const GxVector3& getYZ(GxVector3& dst) const;
378 GX_FORCE_INLINE void setYZ(const GxVector3& vector);
380 GX_FORCE_INLINE f32 getLength(void) const;
382 GX_FORCE_INLINE f32 getLengthSquare(void) const;
384 GX_FORCE_INLINE void setLength(f32 length);
386 GX_FORCE_INLINE void setLengthEx(f32 length);
388 GX_FORCE_INLINE GxVector3 getNormalize(void) const;
390 GX_FORCE_INLINE GxVector3 getNormalizeEx(void) const;
392 GX_FORCE_INLINE GxVector3 getTransform(const GxMatrix44& matrix) const;
394 GX_FORCE_INLINE GxVector3 getTransform(const GxMatrixAffine& matrix) const;
396 GX_FORCE_INLINE GxVector3 getTransformNormal(const GxMatrix44& matrix) const;
398 GX_FORCE_INLINE GxVector3 getTransformNormal(const GxMatrixAffine& matrix) const;
400 GX_FORCE_INLINE GxVector3 getTransformCoord(const GxMatrix44& matrix) const;
402 GX_FORCE_INLINE f32 getTransformX(const GxMatrix44& matrix) const;
404 GX_FORCE_INLINE f32 getTransformX(const GxMatrixAffine& matrix) const;
406 GX_FORCE_INLINE f32 getTransformNormalX(const GxMatrix44& matrix) const;
408 GX_FORCE_INLINE f32 getTransformNormalX(const GxMatrixAffine& matrix) const;
410 GX_FORCE_INLINE f32 getTransformCoordX(const GxMatrix44& matrix) const;
412 GX_FORCE_INLINE f32 getTransformY(const GxMatrix44& matrix) const;
414 GX_FORCE_INLINE f32 getTransformY(const GxMatrixAffine& matrix) const;
416 GX_FORCE_INLINE f32 getTransformNormalY(const GxMatrix44& matrix) const;
418 GX_FORCE_INLINE f32 getTransformNormalY(const GxMatrixAffine& matrix) const;
420 GX_FORCE_INLINE f32 getTransformCoordY(const GxMatrix44& matrix) const;
422 GX_FORCE_INLINE f32 getTransformZ(const GxMatrix44& matrix) const;
424 GX_FORCE_INLINE f32 getTransformZ(const GxMatrixAffine& matrix) const;
426 GX_FORCE_INLINE f32 getTransformNormalZ(const GxMatrix44& matrix) const;
428 GX_FORCE_INLINE f32 getTransformNormalZ(const GxMatrixAffine& matrix) const;
430 GX_FORCE_INLINE f32 getTransformCoordZ(const GxMatrix44& matrix) const;
432 GX_FORCE_INLINE GxVector3 getRotate(const GxQuaternion& quaternion) const;
434 constexpr f32 getMinimumValue(void) const { return _x < _y ? (_x < _z ? _x : _z) : (_y < _z ? _y : _z); }
436 constexpr f32 getMaximumValue(void) const { return _x > _y ? (_x > _z ? _x : _z) : (_y > _z ? _y : _z); }
437
439 static GX_FORCE_INLINE const GxVector3& getAddScalar(GxVector3& dst, const GxVector3& vector, f32 scalar);
441 static GX_FORCE_INLINE const GxVector3& getSubScalar(GxVector3& dst, const GxVector3& vector, f32 scalar);
443 static GX_FORCE_INLINE const GxVector3& getMulScalar(GxVector3& dst, const GxVector3& vector, f32 scalar);
445 static GX_FORCE_INLINE const GxVector3& getDivScalar(GxVector3& dst, const GxVector3& vector, f32 scalar);
447 static GX_FORCE_INLINE const GxVector3& getAddVector(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1);
449 static GX_FORCE_INLINE const GxVector3& getSubVector(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1);
451 static GX_FORCE_INLINE const GxVector3& getMulVector(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1);
453 static GX_FORCE_INLINE const GxVector3& getDivVector(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1);
455 static GX_FORCE_INLINE const GxVector3& getNormalize(GxVector3& dst, const GxVector3& vector);
457 static GX_FORCE_INLINE const GxVector3& getNormalizeEx(GxVector3& dst, const GxVector3& vector);
459 static GX_FORCE_INLINE const GxVector3& getTransform(GxVector3& dst, const GxVector3& vector, const GxMatrix44& matrix);
461 static GX_FORCE_INLINE const GxVector3& getTransform(GxVector3& dst, const GxVector3& vector, const GxMatrixAffine& matrix);
463 static GX_FORCE_INLINE const GxFloat3& getTransform(GxFloat3& dst, const GxVector3& vector, const GxMatrix44& matrix);
465 static GX_FORCE_INLINE const GxFloat3& getTransform(GxFloat3& dst, const GxVector3& vector, const GxMatrixAffine& matrix);
467 static GX_FORCE_INLINE const GxVector3& getTransformNormal(GxVector3& dst, const GxVector3& vector, const GxMatrix44& matrix);
469 static GX_FORCE_INLINE const GxVector3& getTransformNormal(GxVector3& dst, const GxVector3& vector, const GxMatrixAffine& matrix);
471 static GX_FORCE_INLINE const GxVector3& getTransformCoord(GxVector3& dst, const GxVector3& vector, const GxMatrix44& matrix);
473 static GX_FORCE_INLINE const GxVector3& getRotate(GxVector3& dst, const GxVector3& vector, const GxQuaternion& quaternion);
475 static GX_FORCE_INLINE f32 getDot(const GxVector3& vector0, const GxVector3& vector1);
477 static GX_FORCE_INLINE GxVector3 getCross(const GxVector3& vector0, const GxVector3& vector1);
479 static GX_FORCE_INLINE const GxVector3& getCross(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1);
481 static GX_FORCE_INLINE GxVector3 getCrossVector(const GxVector3& vector);
483 static GX_FORCE_INLINE const GxVector3& getCrossVector(GxVector3& dst, const GxVector3& vector);
485 static GX_FORCE_INLINE f32 getDistance(const GxVector3& vector0, const GxVector3& vector1);
487 static GX_FORCE_INLINE f32 getDistanceSquare(const GxVector3& vector0, const GxVector3& vector1);
489 static GX_FORCE_INLINE f32 getAngle(const GxVector3& vector0, const GxVector3& vector1);
491 static GX_FORCE_INLINE f32 getAngle(const GxVector3& vector0, const GxVector3& vector1, const GxVector3& up);
493 static GX_FORCE_INLINE GxVector3 getMinimum(const GxVector3& vector0, const GxVector3& vector1);
495 static GX_FORCE_INLINE const GxVector3& getMinimum(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1);
497 static GX_FORCE_INLINE GxVector3 getMaximum(const GxVector3& vector0, const GxVector3& vector1);
499 static GX_FORCE_INLINE const GxVector3& getMaximum(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1);
501 static GX_FORCE_INLINE GxVector3 getLerp(const GxVector3& vector0, const GxVector3& vector1, f32 t);
503 static GX_FORCE_INLINE const GxVector3& getLerp(GxVector3& dst, const GxVector3& vector0, const GxVector3& vector1, f32 t);
505 static GX_FORCE_INLINE f32 getLineParam(const GxVector3& checkPosition, const GxVector3& startPosition, const GxVector3& endPosition);
507 static GX_FORCE_INLINE GxVector3 getLinePosition(const GxVector3& position, const GxVector3& linePosition0, const GxVector3& linePosition1);
509 static GX_FORCE_INLINE const GxVector3& getLinePosition(GxVector3& dst, const GxVector3& position, const GxVector3& linePosition0, const GxVector3& linePosition1);
511 static GX_FORCE_INLINE GxVector3 getSegmentPosition(const GxVector3& position, const GxVector3& startPosition, const GxVector3& endPosition);
513 static GX_FORCE_INLINE const GxVector3& getSegmentPosition(GxVector3& dst, const GxVector3& position, const GxVector3& startPosition, const GxVector3& endPosition);
514
516 static GX_FORCE_INLINE b32 isSameDirectionLessEqual(const GxVector3& vector0, const GxVector3& vector1, f32 limitRadian = PI / 2.0f);
518 static GX_FORCE_INLINE b32 isSameDirectionLessThan(const GxVector3& vector0, const GxVector3& vector1, f32 limitRadian = PI / 2.0f);
519
521 //-----------------------------------------------------------
523 //-----------------------------------------------------------
525
527 GX_FORCE_INLINE const GxVector3& addScalar(f32 scalar);
529 GX_FORCE_INLINE const GxVector3& subScalar(f32 scalar);
531 GX_FORCE_INLINE const GxVector3& mulScalar(f32 scalar);
533 GX_FORCE_INLINE const GxVector3& divScalar(f32 scalar);
535 GX_FORCE_INLINE const GxVector3& addVector(const GxVector3& vector);
537 GX_FORCE_INLINE const GxVector3& subVector(const GxVector3& vector);
539 GX_FORCE_INLINE const GxVector3& mulVector(const GxVector3& vector);
541 GX_FORCE_INLINE const GxVector3& divVector(const GxVector3& vector);
542
544 GX_FORCE_INLINE const GxVector3& normalize(void);
546 GX_FORCE_INLINE const GxVector3& normalizeEx(void);
548 GX_FORCE_INLINE const GxVector3& transform(const GxMatrix44& matrix);
550 GX_FORCE_INLINE const GxVector3& transform(const GxMatrixAffine& matrix);
552 GX_FORCE_INLINE const GxVector3& transformNormal(const GxMatrix44& matrix);
554 GX_FORCE_INLINE const GxVector3& transformNormal(const GxMatrixAffine& matrix);
556 GX_FORCE_INLINE const GxVector3& transformCoord(const GxMatrix44& matrix);
558 GX_FORCE_INLINE const GxVector3& rotate(const GxQuaternion& quaternion);
559
560#if GX_DEVELOP
561 // 書き込み
562 b32 write(GxStreamWriter& writer);
563#endif //GX_DEVELOP
565 //-------------------------------------------------------------
567 //-------------------------------------------------------------
569
570 f32 _x;
571 f32 _y;
572 f32 _z;
574
576} GX_ALIGN16_END;
577
578//===========================================================================
580//===========================================================================
581GX_ALIGN16_BEGIN struct GxVector4 : public GxStructBase
582{
583 //-------------------------------------------------------------
585 //-------------------------------------------------------------
587public:
588 GX_RTTI_STRUCT(GxVector4)
589
590
591 static constexpr u32 DIMENSION = 4;
593 static const GxVector4 ZERO;
595 static const GxVector4 ONE;
597 static const GxVector4 AXIS_X;
599 static const GxVector4 AXIS_Y;
601 static const GxVector4 AXIS_Z;
603 static const GxVector4 AXIS_W;
605 static const GxVector4 MIN;
607 static const GxVector4 MAX;
608
610 //-------------------------------------------------------------
612 //-------------------------------------------------------------
614
616 GxVector4(void) : _x(0.f), _y(0.f), _z(0.f), _w(0.f){}
618 GX_FORCE_INLINE GxVector4(f32 x, f32 y, f32 z, f32 w);
620 GX_FORCE_INLINE GxVector4(const GxFloat4& float4);
622 GX_FORCE_INLINE GxVector4(const f32* pFloatArray);
624 GX_FORCE_INLINE GxVector4(const GxVector3& vector, f32 w);
626 GX_FORCE_INLINE GxVector4(const GxColorHDR& color);
627
629 GX_FORCE_INLINE GxVector4(const GxVector4& vector);
630
632 //-----------------------------------------------------------
634 //-----------------------------------------------------------
636
638 GX_FORCE_INLINE GxVector4& operator = (const GxVector3& vector);
640 GX_FORCE_INLINE GxVector4& operator = (const GxVector4& vector);
642 GX_FORCE_INLINE GxVector4& operator += (f32 scalar);
644 GX_FORCE_INLINE GxVector4& operator -= (f32 scalar);
646 GX_FORCE_INLINE GxVector4& operator *= (f32 scalar);
648 GX_FORCE_INLINE GxVector4& operator /= (f32 scalar);
650 GX_FORCE_INLINE GxVector4& operator += (const GxVector4& vector);
652 GX_FORCE_INLINE GxVector4& operator -= (const GxVector4& vector);
654 GX_FORCE_INLINE GxVector4& operator *= (const GxVector4& vector);
656 GX_FORCE_INLINE GxVector4& operator /= (const GxVector4& vector);
658 friend GX_FORCE_INLINE const GxVector4 operator + (const GxVector4& vector) { return vector; }
660 friend GX_FORCE_INLINE const GxVector4 operator - (const GxVector4& vector) { return vector * -1.0f; }
662 friend GX_FORCE_INLINE const GxVector4 operator + (const GxVector4& vector, f32 scalar);
664 friend GX_FORCE_INLINE const GxVector4 operator - (const GxVector4& vector, f32 scalar);
666 friend GX_FORCE_INLINE const GxVector4 operator * (const GxVector4& vector, f32 scalar);
668 friend GX_FORCE_INLINE const GxVector4 operator * (f32 scalar, const GxVector4& vector);
670 friend GX_FORCE_INLINE const GxVector4 operator / (const GxVector4& vector, f32 scalar);
672 friend GX_FORCE_INLINE const GxVector4 operator + (const GxVector4& vector0, const GxVector4& vector1);
674 friend GX_FORCE_INLINE const GxVector4 operator - (const GxVector4& vector0, const GxVector4& vector1);
676 friend GX_FORCE_INLINE const GxVector4 operator * (const GxVector4& vector0, const GxVector4& vector1);
678 friend GX_FORCE_INLINE const GxVector4 operator / (const GxVector4& vector0, const GxVector4& vector1);
680 friend GX_FORCE_INLINE b32 operator == (const GxVector4& vector0, const GxVector4& vector1);
682 friend GX_FORCE_INLINE b32 operator != (const GxVector4& vector0, const GxVector4& vector1);
683
685 //-----------------------------------------------------------
687 //-----------------------------------------------------------
689
691 GX_FORCE_INLINE const f32& operator[](u32 i) const;
693 GX_FORCE_INLINE f32& operator[](u32 i);
695 GX_FORCE_INLINE b32 isZeroVector(void) const;
697 GX_FORCE_INLINE f32 getLength(void) const;
699 GX_FORCE_INLINE f32 getLengthSquare(void) const;
701 GX_FORCE_INLINE void setLength(f32 length);
703 GX_FORCE_INLINE void setLengthEx(f32 length);
705 GX_FORCE_INLINE GxVector4 getNormalize(void) const;
707 GX_FORCE_INLINE GxVector4 getNormalizeEx(void) const;
709 GX_FORCE_INLINE const GxVector4 getTransform(const GxMatrix44& matrix) const;
711 constexpr f32 getMinimumValue(void) const { return _x < _y ? (_x < _z ? (_x < _w ? _x : _w) : (_z < _w ? _z : _w)) : (_y < _z ? (_y < _w ? _y : _w) : (_z < _w ? _z : _w)); }
713 constexpr f32 getMaximumValue(void) const { return _x > _y ? (_x > _z ? (_x > _w ? _x : _w) : (_z > _w ? _z : _w)) : (_y > _z ? (_y > _w ? _y : _w) : (_z > _w ? _z : _w)); }
714
716 static GX_FORCE_INLINE const GxVector4& getAddScalar(GxVector4& dst, const GxVector4& vector, f32 scalar);
718 static GX_FORCE_INLINE const GxVector4& getSubScalar(GxVector4& dst, const GxVector4& vector, f32 scalar);
720 static GX_FORCE_INLINE const GxVector4& getMulScalar(GxVector4& dst, const GxVector4& vector, f32 scalar);
722 static GX_FORCE_INLINE const GxVector4& getDivScalar(GxVector4& dst, const GxVector4& vector, f32 scalar);
724 static GX_FORCE_INLINE const GxVector4& getAddVector(GxVector4& dst, const GxVector4& vector0, const GxVector4& vector1);
726 static GX_FORCE_INLINE const GxVector4& getSubVector(GxVector4& dst, const GxVector4& vector0, const GxVector4& vector1);
728 static GX_FORCE_INLINE const GxVector4& getMulVector(GxVector4& dst, const GxVector4& vector0, const GxVector4& vector1);
730 static GX_FORCE_INLINE const GxVector4& getDivVector(GxVector4& dst, const GxVector4& vector0, const GxVector4& vector1);
732 static GX_FORCE_INLINE const GxVector4& getNormalize(GxVector4& dst, const GxVector4& vector);
734 static GX_FORCE_INLINE const GxVector4& getNormalizeEx(GxVector4& dst, const GxVector4& vector);
736 static GX_FORCE_INLINE const GxVector4& getTransform(GxVector4& dst, const GxVector4& vector, const GxMatrix44& matrix);
738 static GX_FORCE_INLINE f32 getDot(const GxVector4& vector0, const GxVector4& vector1);
740 static GX_FORCE_INLINE GxVector4 getMinimum(const GxVector4& vector0, const GxVector4& vector1);
742 static GX_FORCE_INLINE const GxVector4& getMinimum(GxVector4& dst, const GxVector4& vector0, const GxVector4& vector1);
744 static GX_FORCE_INLINE GxVector4 getMaximum(const GxVector4& vector0, const GxVector4& vector1);
746 static GX_FORCE_INLINE const GxVector4& getMaximum(GxVector4& dst, const GxVector4& vector0, const GxVector4& vector1);
748 static GX_FORCE_INLINE GxVector4 getLerp(const GxVector4& vector0, const GxVector4& vector1, f32 t);
750 static GX_FORCE_INLINE const GxVector4& getLerp(GxVector4& dst, const GxVector4& vector0, const GxVector4& vector1, f32 t);
751
753 //-----------------------------------------------------------
755 //-----------------------------------------------------------
757
759 GX_FORCE_INLINE const GxVector4& addScalar(f32 scalar);
761 GX_FORCE_INLINE const GxVector4& subScalar(f32 scalar);
763 GX_FORCE_INLINE const GxVector4& mulScalar(f32 scalar);
765 GX_FORCE_INLINE const GxVector4& divScalar(f32 scalar);
767 GX_FORCE_INLINE const GxVector4& addVector(const GxVector4& vector);
769 GX_FORCE_INLINE const GxVector4& subVector(const GxVector4& vector);
771 GX_FORCE_INLINE const GxVector4& mulVector(const GxVector4& vector);
773 GX_FORCE_INLINE const GxVector4& divVector(const GxVector4& vector);
774
776 GX_FORCE_INLINE const GxVector4& normalize(void);
778 GX_FORCE_INLINE const GxVector4& normalizeEx(void);
780 GX_FORCE_INLINE const GxVector4& transform(const GxMatrix44& matrix);
781
782#if GX_DEVELOP
783 // 書き込み
784 b32 write(GxStreamWriter& writer);
785#endif //GX_DEVELOP
786
788 //-------------------------------------------------------------
790 //-------------------------------------------------------------
792
793 f32 _x;
794 f32 _y;
795 f32 _z;
796 f32 _w;
797
799} GX_ALIGN16_END;
800
801GX_CORE_NAMESPACE_END()
GX_FORCE_INLINE const GxColor operator*(const GxColor color, f32 scalar)
Definition GxColor.inl:202
GX_FORCE_INLINE b32 operator==(const GxColor color0, const GxColor color1)
Definition GxColor.inl:274
GX_FORCE_INLINE const GxColor operator/(const GxColor color, f32 scalar)
Definition GxColor.inl:226
GX_FORCE_INLINE const GxColor operator+(const GxColor color, u32 scalar)
Definition GxColor.inl:178
GX_FORCE_INLINE b32 operator!=(const GxColor color0, const GxColor color1)
Definition GxColor.inl:285
GX_FORCE_INLINE const GxColor operator-(const GxColor color, u32 scalar)
Definition GxColor.inl:190
@ MAX
定義数
@ ZERO
全て 0 で初期化
@ MIN
最小値(min(src,dst))
ストリーム書き込みクラス
Definition GxStreamWriter.h:19
色(HDR)
Definition GxColor.h:241
2次元浮動小数点数クラス
Definition GxStruct.h:22
3次元浮動小数点数クラス
Definition GxStruct.h:91
4次元浮動小数点数クラス
Definition GxStruct.h:153
4×4行列(行優先)
Definition GxMatrix.h:607
アフィン変換行列(行優先)
Definition GxMatrix.h:330
座標
Definition GxStruct.h:867
クォータニオン
Definition GxQuaternion.h:19
矩形
Definition GxStruct.h:951
サイズ
Definition GxStruct.h:730
Definition GxBase.h:24
2次元ベクトル
Definition GxVector.h:34
constexpr f32 getMaximumValue(void) const
最大要素を取得
Definition GxVector.h:155
f32 _y
Y値
Definition GxVector.h:235
f32 _x
X値
Definition GxVector.h:234
constexpr f32 getMinimumValue(void) const
最小要素を取得
Definition GxVector.h:153
3次元ベクトル
Definition GxVector.h:245
GX_FORCE_INLINE GxVector3 & operator=(const GxVector3 &vector)
代入
Definition GxVector.inl:1023
static GX_FORCE_INLINE b32 isSameDirectionLessEqual(const GxVector3 &vector0, const GxVector3 &vector1, f32 limitRadian=PI/2.0f)
ベクトルが同じ方向を向いているか(ラジアン指定/指定値以内なら(==も含む)同じ方向)
Definition GxVector.inl:2410
friend GX_FORCE_INLINE b32 operator==(const GxVector3 &vector0, const GxVector3 &vector1)
一致
Definition GxVector.inl:1233
static GX_FORCE_INLINE const GxVector3 & getAddVector(GxVector3 &dst, const GxVector3 &vector0, const GxVector3 &vector1)
ベクトル加算を取得
Definition GxVector.inl:1821
static const GxVector3 MIN
最小値ベクトル
Definition GxVector.h:266
GX_FORCE_INLINE f32 getTransformCoordX(const GxMatrix44 &matrix) const
w=1.0として座標変換後、wで除算したx成分を取得
Definition GxVector.inl:1628
static GX_FORCE_INLINE GxVector3 getMaximum(const GxVector3 &vector0, const GxVector3 &vector1)
要素毎に最大値を選択
Definition GxVector.inl:2263
GX_FORCE_INLINE f32 getTransformX(const GxMatrix44 &matrix) const
w=1.0として座標変換したx成分を取得
Definition GxVector.inl:1588
static GX_FORCE_INLINE GxVector3 getLinePosition(const GxVector3 &position, const GxVector3 &linePosition0, const GxVector3 &linePosition1)
指定した点を直線上に下ろした点を取得
Definition GxVector.inl:2365
static GX_FORCE_INLINE const GxVector3 & getDivScalar(GxVector3 &dst, const GxVector3 &vector, f32 scalar)
スカラ除算を取得
Definition GxVector.inl:1803
GX_FORCE_INLINE GxVector3 getRotate(const GxQuaternion &quaternion) const
回転後のベクトルを取得
Definition GxVector.inl:1741
GX_FORCE_INLINE const GxVector3 & divVector(const GxVector3 &vector)
ベクトル除算
Definition GxVector.inl:2578
friend GX_INLINE const GxVector3 operator*(const GxVector3 &vector, f32 scalar)
スカラ乗算
Definition GxVector.inl:1149
GX_FORCE_INLINE const f32 & operator[](u32 i) const
const配列
Definition GxVector.inl:1254
GX_FORCE_INLINE const GxVector3 & rotate(const GxQuaternion &quaternion)
回転する
Definition GxVector.inl:2746
static GX_FORCE_INLINE GxVector3 getLerp(const GxVector3 &vector0, const GxVector3 &vector1, f32 t)
線形補間
Definition GxVector.inl:2293
static GX_FORCE_INLINE GxVector3 getSegmentPosition(const GxVector3 &position, const GxVector3 &startPosition, const GxVector3 &endPosition)
指定した点を線分上に下ろした点を取得
Definition GxVector.inl:2395
f32 _z
Z値
Definition GxVector.h:572
GX_FORCE_INLINE GxVector3 getTransform(const GxMatrix44 &matrix) const
w=1.0として座標変換したベクトルを取得
Definition GxVector.inl:1521
static GX_FORCE_INLINE f32 getAngle(const GxVector3 &vector0, const GxVector3 &vector1)
角度差を取得(符号なし radian)
Definition GxVector.inl:2190
GX_FORCE_INLINE const GxVector3 & divScalar(f32 scalar)
スカラ除算
Definition GxVector.inl:2520
GX_FORCE_INLINE const GxVector3 & transform(const GxMatrix44 &matrix)
w=1.0として座標変換
Definition GxVector.inl:2655
GX_FORCE_INLINE b32 isZeroVector(void) const
ゼロベクトルかを取得
Definition GxVector.inl:1374
GX_FORCE_INLINE void setLengthEx(f32 length)
長さを設定(長さ0に対応)
Definition GxVector.inl:1437
f32 _y
Y値
Definition GxVector.h:571
GX_FORCE_INLINE const GxVector3 & mulVector(const GxVector3 &vector)
ベクトル乗算
Definition GxVector.inl:2564
GX_FORCE_INLINE const GxVector3 & transformNormal(const GxMatrix44 &matrix)
w=0.0として座標変換
Definition GxVector.inl:2691
GxVector3(void)
デフォルトコンストラクタ
Definition GxVector.h:277
static GX_FORCE_INLINE const GxVector3 & getSubScalar(GxVector3 &dst, const GxVector3 &vector, f32 scalar)
スカラ減算を取得
Definition GxVector.inl:1771
GX_FORCE_INLINE GxVector3 getNormalizeEx(void) const
正規化ベクトルを取得(長さ0に対応)
Definition GxVector.inl:1494
friend GX_FORCE_INLINE const GxVector3 operator+(const GxVector3 &vector)
正ベクトル
Definition GxVector.h:319
GX_FORCE_INLINE f32 getTransformCoordZ(const GxMatrix44 &matrix) const
w=1.0として座標変換後、wで除算したz成分を取得
Definition GxVector.inl:1730
GX_FORCE_INLINE f32 getTransformZ(const GxMatrix44 &matrix) const
w=1.0として座標変換したz成分を取得
Definition GxVector.inl:1690
GX_FORCE_INLINE const GxVector3 & subVector(const GxVector3 &vector)
ベクトル減算
Definition GxVector.inl:2550
static const GxVector3 MAX
最大値ベクトル
Definition GxVector.h:268
static constexpr u32 DIMENSION
次元数
Definition GxVector.h:254
GX_FORCE_INLINE void setXZ(const GxVector3 &vector)
XZ要素のベクトルを設定
Definition GxVector.inl:1331
GX_FORCE_INLINE void setYZ(const GxVector3 &vector)
YZ要素のベクトルを設定
Definition GxVector.inl:1364
constexpr f32 getMaximumValue(void) const
最大要素を取得
Definition GxVector.h:436
GX_FORCE_INLINE f32 getLengthSquare(void) const
長さの2乗を取得
Definition GxVector.inl:1392
GX_FORCE_INLINE GxVector3 getNormalize(void) const
正規化ベクトルを取得
Definition GxVector.inl:1461
GX_FORCE_INLINE f32 getTransformY(const GxMatrix44 &matrix) const
w=1.0として座標変換したy成分を取得
Definition GxVector.inl:1639
friend GX_FORCE_INLINE const GxVector3 operator/(const GxVector3 &vector, f32 scalar)
スカラ除算
Definition GxVector.inl:1173
u32 _padding
パディング
Definition GxVector.h:573
static const GxVector3 ONE
(1, 1, 1)
Definition GxVector.h:258
GX_FORCE_INLINE GxVector3 getYZ(void) const
YZ要素のベクトルを取得
Definition GxVector.inl:1341
static GX_FORCE_INLINE const GxVector3 & getMulScalar(GxVector3 &dst, const GxVector3 &vector, f32 scalar)
スカラ乗算を取得
Definition GxVector.inl:1787
GX_FORCE_INLINE GxVector3 & operator/=(f32 scalar)
スカラ除算代入
Definition GxVector.inl:1069
GX_FORCE_INLINE f32 getTransformNormalZ(const GxMatrix44 &matrix) const
w=0.0として座標変換したz成分を取得
Definition GxVector.inl:1710
GX_FORCE_INLINE GxVector3 getTransformNormal(const GxMatrix44 &matrix) const
w=0.0として座標変換したベクトルを取得
Definition GxVector.inl:1547
GX_FORCE_INLINE const GxVector3 & addVector(const GxVector3 &vector)
ベクトル加算
Definition GxVector.inl:2536
static GX_FORCE_INLINE const GxVector3 & getAddScalar(GxVector3 &dst, const GxVector3 &vector, f32 scalar)
スカラ加算を取得
Definition GxVector.inl:1755
GX_FORCE_INLINE const GxVector3 & normalizeEx(void)
正規化する(長さ0に対応)
Definition GxVector.inl:2628
static const GxVector3 ZERO
(0, 0, 0)
Definition GxVector.h:256
static GX_FORCE_INLINE const GxVector3 & getSubVector(GxVector3 &dst, const GxVector3 &vector0, const GxVector3 &vector1)
ベクトル減算を取得
Definition GxVector.inl:1837
GX_FORCE_INLINE GxVector3 getXY(void) const
XY要素のベクトルを取得
Definition GxVector.inl:1273
static GX_FORCE_INLINE GxVector3 getCrossVector(const GxVector3 &vector)
直交する単位ベクトルを取得
Definition GxVector.inl:2122
GX_FORCE_INLINE const GxVector3 & addScalar(f32 scalar)
スカラ加算
Definition GxVector.inl:2478
friend GX_FORCE_INLINE const GxVector3 operator-(const GxVector3 &vector)
負ベクトル
Definition GxVector.h:321
GX_FORCE_INLINE f32 getLength(void) const
長さを取得
Definition GxVector.inl:1383
static GX_FORCE_INLINE f32 getLineParam(const GxVector3 &checkPosition, const GxVector3 &startPosition, const GxVector3 &endPosition)
指定した点が線分上のどこに位置するかのパラメータを返す
Definition GxVector.inl:2327
static const GxVector3 AXIS_Z
(0, 0, 1)
Definition GxVector.h:264
GX_FORCE_INLINE GxVector3 & operator-=(f32 scalar)
スカラ減算代入
Definition GxVector.inl:1047
constexpr f32 getMinimumValue(void) const
最小要素を取得
Definition GxVector.h:434
GX_FORCE_INLINE f32 getTransformNormalY(const GxMatrix44 &matrix) const
w=0.0として座標変換したy成分を取得
Definition GxVector.inl:1659
static GX_FORCE_INLINE const GxVector3 & getMulVector(GxVector3 &dst, const GxVector3 &vector0, const GxVector3 &vector1)
ベクトル乗算を取得
Definition GxVector.inl:1853
GX_FORCE_INLINE GxVector3 getXZ(void) const
XZ要素のベクトルを取得
Definition GxVector.inl:1307
GX_FORCE_INLINE const GxVector3 & normalize(void)
正規化する
Definition GxVector.inl:2591
static GX_FORCE_INLINE f32 getDistanceSquare(const GxVector3 &vector0, const GxVector3 &vector1)
距離の2乗を取得
Definition GxVector.inl:2174
GX_FORCE_INLINE GxVector3 & operator+=(f32 scalar)
スカラ加算代入
Definition GxVector.inl:1036
static GX_FORCE_INLINE const GxVector3 & getDivVector(GxVector3 &dst, const GxVector3 &vector0, const GxVector3 &vector1)
ベクトル除算を取得
Definition GxVector.inl:1869
static const GxVector3 AXIS_X
(1, 0, 0)
Definition GxVector.h:260
GX_FORCE_INLINE void setXY(const GxVector3 &vector)
XY要素のベクトルを設定
Definition GxVector.inl:1297
static const GxVector3 AXIS_Y
(0, 1, 0)
Definition GxVector.h:262
static GX_FORCE_INLINE f32 getDistance(const GxVector3 &vector0, const GxVector3 &vector1)
距離を取得
Definition GxVector.inl:2163
GX_FORCE_INLINE const GxVector3 & transformCoord(const GxMatrix44 &matrix)
w=1.0として座標変換後、wで割る
Definition GxVector.inl:2727
GX_FORCE_INLINE GxVector3 & operator*=(f32 scalar)
スカラ乗算代入
Definition GxVector.inl:1058
GX_FORCE_INLINE GxVector3 getTransformCoord(const GxMatrix44 &matrix) const
w=1.0として座標変換後、wで除算したベクトルを取得
Definition GxVector.inl:1573
friend GX_FORCE_INLINE b32 operator!=(const GxVector3 &vector0, const GxVector3 &vector1)
不一致
Definition GxVector.inl:1244
friend GX_FORCE_INLINE b32 operator<(const GxVector3 &vector0, const GxVector3 &vector1)
小なり
Definition GxVector.h:345
static GX_FORCE_INLINE f32 getDot(const GxVector3 &vector0, const GxVector3 &vector1)
内積を取得
Definition GxVector.inl:2083
static GX_FORCE_INLINE GxVector3 getCross(const GxVector3 &vector0, const GxVector3 &vector1)
外積を取得
Definition GxVector.inl:2094
static GX_FORCE_INLINE GxVector3 getMinimum(const GxVector3 &vector0, const GxVector3 &vector1)
要素毎に最小値を選択
Definition GxVector.inl:2234
GX_FORCE_INLINE const GxVector3 & mulScalar(f32 scalar)
スカラ乗算
Definition GxVector.inl:2506
f32 _x
X値
Definition GxVector.h:570
friend GX_FORCE_INLINE b32 operator>(const GxVector3 &vector0, const GxVector3 &vector1)
大なり
Definition GxVector.h:347
GX_FORCE_INLINE f32 getTransformNormalX(const GxMatrix44 &matrix) const
w=0.0として座標変換したx成分を取得
Definition GxVector.inl:1608
static GX_FORCE_INLINE b32 isSameDirectionLessThan(const GxVector3 &vector0, const GxVector3 &vector1, f32 limitRadian=PI/2.0f)
ベクトルが同じ方向を向いているか(ラジアン指定/指定値より小さければ(==は含まない)同じ方向)
Definition GxVector.inl:2445
GX_FORCE_INLINE f32 getTransformCoordY(const GxMatrix44 &matrix) const
w=1.0として座標変換後、wで除算したy成分を取得
Definition GxVector.inl:1679
GX_FORCE_INLINE void setLength(f32 length)
長さを設定
Definition GxVector.inl:1401
GX_FORCE_INLINE const GxVector3 & subScalar(f32 scalar)
スカラ減算
Definition GxVector.inl:2492
4次元ベクトル
Definition GxVector.h:582
f32 _x
X値
Definition GxVector.h:793
static GX_FORCE_INLINE const GxVector4 & getDivScalar(GxVector4 &dst, const GxVector4 &vector, f32 scalar)
スカラ除算を取得
Definition GxVector.inl:3317
GX_FORCE_INLINE GxVector4 & operator+=(f32 scalar)
スカラ加算代入
Definition GxVector.inl:2872
GX_FORCE_INLINE GxVector4 getNormalizeEx(void) const
正規化ベクトルを取得(長さ0に対応)
Definition GxVector.inl:3233
f32 _w
W値
Definition GxVector.h:796
GX_FORCE_INLINE GxVector4 getNormalize(void) const
正規化ベクトルを取得
Definition GxVector.inl:3200
constexpr f32 getMaximumValue(void) const
最大要素を取得
Definition GxVector.h:713
static GX_FORCE_INLINE const GxVector4 & getAddVector(GxVector4 &dst, const GxVector4 &vector0, const GxVector4 &vector1)
ベクトル加算を取得
Definition GxVector.inl:3336
static GX_FORCE_INLINE const GxVector4 & getAddScalar(GxVector4 &dst, const GxVector4 &vector, f32 scalar)
スカラ加算を取得
Definition GxVector.inl:3266
friend GX_FORCE_INLINE b32 operator!=(const GxVector4 &vector0, const GxVector4 &vector1)
不一致
Definition GxVector.inl:3080
GxVector4(void)
デフォルトコンストラクタ
Definition GxVector.h:616
static const GxVector4 ZERO
(0, 0, 0, 0)
Definition GxVector.h:593
static GX_FORCE_INLINE GxVector4 getLerp(const GxVector4 &vector0, const GxVector4 &vector1, f32 t)
線形補間
Definition GxVector.inl:3564
GX_FORCE_INLINE const GxVector4 & mulScalar(f32 scalar)
スカラ乗算
Definition GxVector.inl:3625
GX_FORCE_INLINE const GxVector4 & subVector(const GxVector4 &vector)
ベクトル減算
Definition GxVector.inl:3672
GX_FORCE_INLINE const f32 & operator[](u32 i) const
const配列
Definition GxVector.inl:3090
static GX_FORCE_INLINE const GxVector4 & getMulVector(GxVector4 &dst, const GxVector4 &vector0, const GxVector4 &vector1)
ベクトル乗算を取得
Definition GxVector.inl:3370
GX_FORCE_INLINE f32 getLength(void) const
長さを取得
Definition GxVector.inl:3118
GX_FORCE_INLINE const GxVector4 getTransform(const GxMatrix44 &matrix) const
座標変換後のベクトルを取得
Definition GxVector.inl:3250
GX_FORCE_INLINE f32 getLengthSquare(void) const
長さの2乗を取得
Definition GxVector.inl:3127
GX_FORCE_INLINE GxVector4 & operator-=(f32 scalar)
スカラ減算代入
Definition GxVector.inl:2883
static const GxVector4 MIN
最小値ベクトル
Definition GxVector.h:605
static GX_FORCE_INLINE const GxVector4 & getSubVector(GxVector4 &dst, const GxVector4 &vector0, const GxVector4 &vector1)
ベクトル減算を取得
Definition GxVector.inl:3353
static GX_FORCE_INLINE GxVector4 getMinimum(const GxVector4 &vector0, const GxVector4 &vector1)
要素毎に最小値を選択
Definition GxVector.inl:3501
friend GX_FORCE_INLINE b32 operator==(const GxVector4 &vector0, const GxVector4 &vector1)
一致
Definition GxVector.inl:3069
static const GxVector4 AXIS_W
(0, 0, 0, 1)
Definition GxVector.h:603
friend GX_FORCE_INLINE const GxVector4 operator-(const GxVector4 &vector)
負ベクトル
Definition GxVector.h:660
GX_FORCE_INLINE const GxVector4 & normalize(void)
正規化する
Definition GxVector.inl:3716
static const GxVector4 AXIS_Z
(0, 0, 1, 0)
Definition GxVector.h:601
GX_FORCE_INLINE const GxVector4 & subScalar(f32 scalar)
スカラ減算
Definition GxVector.inl:3610
static GX_FORCE_INLINE const GxVector4 & getDivVector(GxVector4 &dst, const GxVector4 &vector0, const GxVector4 &vector1)
ベクトル除算を取得
Definition GxVector.inl:3387
GX_FORCE_INLINE const GxVector4 & mulVector(const GxVector4 &vector)
ベクトル乗算
Definition GxVector.inl:3687
GX_FORCE_INLINE void setLength(f32 length)
長さを設定
Definition GxVector.inl:3137
friend GX_FORCE_INLINE const GxVector4 operator*(const GxVector4 &vector, f32 scalar)
スカラ乗算
Definition GxVector.inl:2985
static const GxVector4 AXIS_Y
(0, 1, 0, 0)
Definition GxVector.h:599
GX_FORCE_INLINE GxVector4 & operator=(const GxVector3 &vector)
代入
Definition GxVector.inl:2844
f32 _y
Y値
Definition GxVector.h:794
static GX_FORCE_INLINE const GxVector4 & getSubScalar(GxVector4 &dst, const GxVector4 &vector, f32 scalar)
スカラ減算を取得
Definition GxVector.inl:3283
static const GxVector4 MAX
最大値ベクトル
Definition GxVector.h:607
GX_FORCE_INLINE void setLengthEx(f32 length)
長さを設定(長さ0に対応)
Definition GxVector.inl:3174
GX_FORCE_INLINE const GxVector4 & divScalar(f32 scalar)
スカラ除算
Definition GxVector.inl:3640
GX_FORCE_INLINE const GxVector4 & addVector(const GxVector4 &vector)
ベクトル加算
Definition GxVector.inl:3657
constexpr f32 getMinimumValue(void) const
最小要素を取得
Definition GxVector.h:711
static GX_FORCE_INLINE f32 getDot(const GxVector4 &vector0, const GxVector4 &vector1)
内積を取得
Definition GxVector.inl:3490
static GX_FORCE_INLINE const GxVector4 & getMulScalar(GxVector4 &dst, const GxVector4 &vector, f32 scalar)
スカラ乗算を取得
Definition GxVector.inl:3300
GX_FORCE_INLINE b32 isZeroVector(void) const
ゼロベクトルかを取得
Definition GxVector.inl:3109
GX_FORCE_INLINE GxVector4 & operator*=(f32 scalar)
スカラ乗算代入
Definition GxVector.inl:2894
static constexpr u32 DIMENSION
次元数
Definition GxVector.h:591
friend GX_FORCE_INLINE const GxVector4 operator/(const GxVector4 &vector, f32 scalar)
スカラ除算
Definition GxVector.inl:3009
static GX_FORCE_INLINE GxVector4 getMaximum(const GxVector4 &vector0, const GxVector4 &vector1)
要素毎に最大値を選択
Definition GxVector.inl:3532
friend GX_FORCE_INLINE const GxVector4 operator+(const GxVector4 &vector)
正ベクトル
Definition GxVector.h:658
GX_FORCE_INLINE const GxVector4 & divVector(const GxVector4 &vector)
ベクトル除算
Definition GxVector.inl:3702
GX_FORCE_INLINE const GxVector4 & addScalar(f32 scalar)
スカラ加算
Definition GxVector.inl:3595
GX_FORCE_INLINE GxVector4 & operator/=(f32 scalar)
スカラ除算代入
Definition GxVector.inl:2905
static const GxVector4 ONE
(1, 1, 1, 1)
Definition GxVector.h:595
f32 _z
Z値
Definition GxVector.h:795
GX_FORCE_INLINE const GxVector4 & normalizeEx(void)
正規化する(長さ0に対応)
Definition GxVector.inl:3753
GX_FORCE_INLINE const GxVector4 & transform(const GxMatrix44 &matrix)
座標変換する
Definition GxVector.inl:3781
static const GxVector4 AXIS_X
(1, 0, 0, 0)
Definition GxVector.h:597
32bitブーリアン
Definition GxDefine.h:173