OROCHI
 
Loading...
Searching...
No Matches
GxVectord.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12GX_CORE_NAMESPACE_BEGIN()
13
14struct GxDouble2;
15struct GxDouble3;
16struct GxDouble4;
17struct GxVector2d;
18struct GxVector3d;
19struct GxVector4d;
20
21//===========================================================================
23//===========================================================================
24GX_ALIGN16_BEGIN struct GxVector2d : public GxStructBase
25{
26 //-------------------------------------------------------------
28 //-------------------------------------------------------------
30public:
31 GX_RTTI_STRUCT(GxVector2d)
32
33
34 static constexpr u32 DIMENSION = 2;
36 static const GxVector2d ZERO;
38 static const GxVector2d ONE;
40 static const GxVector2d AXIS_X;
42 static const GxVector2d AXIS_Y;
44 static const GxVector2d MIN;
46 static const GxVector2d MAX;
47
49 //-------------------------------------------------------------
51 //-------------------------------------------------------------
53
55 GxVector2d(void) : _x(0.f), _y(0.f){}
57 GX_FORCE_INLINE GxVector2d(f64 x, f64 y);
59 GX_FORCE_INLINE GxVector2d(const GxDouble2& double2);
61 GX_FORCE_INLINE GxVector2d(const f64* pDoubleArray);
63 GX_FORCE_INLINE GxVector2d(const GxPoint2& poiot);
64
66 GX_FORCE_INLINE GxVector2d(const GxVector2d& vector);
67
69 //-------------------------------------------------------------
71 //-------------------------------------------------------------
73
75 GX_FORCE_INLINE GxVector2d& operator = (const GxVector2d& vector);
77 GX_FORCE_INLINE GxVector2d& operator += (f64 scalar);
79 GX_FORCE_INLINE GxVector2d& operator -= (f64 scalar);
81 GX_FORCE_INLINE GxVector2d& operator *= (f64 scalar);
83 GX_FORCE_INLINE GxVector2d& operator /= (f64 scalar);
85 GX_FORCE_INLINE GxVector2d& operator += (const GxVector2d& vector);
87 GX_FORCE_INLINE GxVector2d& operator -= (const GxVector2d& vector);
89 GX_FORCE_INLINE GxVector2d& operator *= (const GxVector2d& vector);
91 GX_FORCE_INLINE GxVector2d& operator /= (const GxVector2d& vector);
93 friend GX_FORCE_INLINE const GxVector2d operator + (const GxVector2d& vector) { return vector; }
95 friend GX_FORCE_INLINE const GxVector2d operator - (const GxVector2d& vector) { return vector * -1.0; }
97 friend GX_FORCE_INLINE const GxVector2d operator + (const GxVector2d& vector, f64 scalar);
99 friend GX_FORCE_INLINE const GxVector2d operator - (const GxVector2d& vector, f64 scalar);
101 friend GX_FORCE_INLINE const GxVector2d operator * (const GxVector2d& vector, f64 scalar);
103 friend GX_FORCE_INLINE const GxVector2d operator * (f64 scalar, const GxVector2d& vector);
105 friend GX_FORCE_INLINE const GxVector2d operator / (const GxVector2d& vector, f64 scalar);
107 friend GX_FORCE_INLINE const GxVector2d operator + (const GxVector2d& vector0, const GxVector2d& vector1);
109 friend GX_FORCE_INLINE const GxVector2d operator - (const GxVector2d& vector0, const GxVector2d& vector1);
111 friend GX_FORCE_INLINE const GxVector2d operator * (const GxVector2d& vector0, const GxVector2d& vector1);
113 friend GX_FORCE_INLINE const GxVector2d operator / (const GxVector2d& vector0, const GxVector2d& vector1);
115 friend GX_FORCE_INLINE b32 operator == (const GxVector2d& vector0, const GxVector2d& vector1);
117 friend GX_FORCE_INLINE b32 operator != (const GxVector2d& vector0, const GxVector2d& vector1);
118
120 //-------------------------------------------------------------
122 //-------------------------------------------------------------
124
126 GX_FORCE_INLINE const f64& operator[](u32 i) const;
128 GX_FORCE_INLINE f64& operator[](u32 i);
130 GX_FORCE_INLINE b32 isZeroVector(void) const;
132 GX_FORCE_INLINE f64 getLength(void) const;
134 GX_FORCE_INLINE f64 getLengthSquare(void) const;
136 GX_FORCE_INLINE void setLength(f64 length);
138 GX_FORCE_INLINE void setLengthEx(f64 length);
140 GX_FORCE_INLINE GxVector2d getNormalize(void) const;
142 GX_FORCE_INLINE GxVector2d getNormalizeEx(void) const;
144 constexpr f64 getMinimumValue(void) const { return _x < _y ? _x : _y; }
146 constexpr f64 getMaximumValue(void) const { return _x > _y ? _x : _y; }
147
149 static GX_FORCE_INLINE const GxVector2d& getAddScalar(GxVector2d& dst, const GxVector2d& vector, f64 scalar);
151 static GX_FORCE_INLINE const GxVector2d& getSubScalar(GxVector2d& dst, const GxVector2d& vector, f64 scalar);
153 static GX_FORCE_INLINE const GxVector2d& getMulScalar(GxVector2d& dst, const GxVector2d& vector, f64 scalar);
155 static GX_FORCE_INLINE const GxVector2d& getDivScalar(GxVector2d& dst, const GxVector2d& vector, f64 scalar);
157 static GX_FORCE_INLINE const GxVector2d& getAddVector(GxVector2d& dst, const GxVector2d& vector0, const GxVector2d& vector1);
159 static GX_FORCE_INLINE const GxVector2d& getSubVector(GxVector2d& dst, const GxVector2d& vector0, const GxVector2d& vector1);
161 static GX_FORCE_INLINE const GxVector2d& getMulVector(GxVector2d& dst, const GxVector2d& vector0, const GxVector2d& vector1);
163 static GX_FORCE_INLINE const GxVector2d& getDivVector(GxVector2d& dst, const GxVector2d& vector0, const GxVector2d& vector1);
165 static GX_FORCE_INLINE const GxVector2d& getNormalize(GxVector2d& dst, const GxVector2d& vector);
167 static GX_FORCE_INLINE const GxVector2d& getNormalizeEx(GxVector2d& dst, const GxVector2d& vector);
169 static GX_FORCE_INLINE f64 getDot(const GxVector2d& vector0, const GxVector2d& vector1);
171 static GX_FORCE_INLINE f64 getCross(const GxVector2d& vector0, const GxVector2d& vector1);
173 static GX_FORCE_INLINE f64 getAngle(const GxVector2d& vector0, const GxVector2d& vector1);
175 static GX_FORCE_INLINE GxVector2d getMinimum(const GxVector2d& vector0, const GxVector2d& vector1);
177 static GX_FORCE_INLINE const GxVector2d& getMinimum(GxVector2d& dst, const GxVector2d& vector0, const GxVector2d& vector1);
179 static GX_FORCE_INLINE GxVector2d getMaximum(const GxVector2d& vector0, const GxVector2d& vector1);
181 static GX_FORCE_INLINE const GxVector2d& getMaximum(GxVector2d& dst, const GxVector2d& vector0, const GxVector2d& vector1);
183 static GX_FORCE_INLINE GxVector2d getLerp(const GxVector2d& vector0, const GxVector2d& vector1, f64 t);
185 static GX_FORCE_INLINE const GxVector2d& getLerp(GxVector2d& dst, const GxVector2d& vector0, const GxVector2d& vector1, f64 t);
186
188 //-----------------------------------------------------------
190 //-----------------------------------------------------------
192
194 GX_FORCE_INLINE const GxVector2d& addScalar(f64 scalar);
196 GX_FORCE_INLINE const GxVector2d& subScalar(f64 scalar);
198 GX_FORCE_INLINE const GxVector2d& mulScalar(f64 scalar);
200 GX_FORCE_INLINE const GxVector2d& divScalar(f64 scalar);
202 GX_FORCE_INLINE const GxVector2d& addVector(const GxVector2d& vector);
204 GX_FORCE_INLINE const GxVector2d& subVector(const GxVector2d& vector);
206 GX_FORCE_INLINE const GxVector2d& mulVector(const GxVector2d& vector);
208 GX_FORCE_INLINE const GxVector2d& divVector(const GxVector2d& vector);
209
211 GX_FORCE_INLINE const GxVector2d& normalize(void);
213 GX_FORCE_INLINE const GxVector2d& normalizeEx(void);
214
215#if GX_DEVELOP
216 // 書き込み
217 b32 write(GxStreamWriter& writer);
218#endif //GX_DEVELOP
220 //-------------------------------------------------------------
222 //-------------------------------------------------------------
224
225 f64 _x;
226 f64 _y;
227
229} GX_ALIGN16_END;
230
231//===========================================================================
233//===========================================================================
234GX_ALIGN16_BEGIN struct GxVector3d : public GxStructBase
235{
236 //-------------------------------------------------------------
238 //-------------------------------------------------------------
240public:
241 GX_RTTI_STRUCT(GxVector3d)
242
243
244 static constexpr u32 DIMENSION = 3;
246 static const GxVector3d ZERO;
248 static const GxVector3d ONE;
250 static const GxVector3d AXIS_X;
252 static const GxVector3d AXIS_Y;
254 static const GxVector3d AXIS_Z;
256 static const GxVector3d MIN;
258 static const GxVector3d MAX;
259
261 //-------------------------------------------------------------
263 //-------------------------------------------------------------
265
267 GxVector3d(void) : _x(0.f), _y(0.f), _z(0.f){}
269 GX_FORCE_INLINE GxVector3d(f64 x, f64 y, f64 z);
271 GX_FORCE_INLINE GxVector3d(const GxDouble3& double3);
273 GX_FORCE_INLINE GxVector3d(const f64* pDoubleArray);
275 GX_FORCE_INLINE GxVector3d(const GxPoint2& point, f64 z = 0.0);
277 GX_FORCE_INLINE GxVector3d(const GxVector2d& vector, f64 z = 0.0);
279 GX_FORCE_INLINE GxVector3d(const GxVector4d& vector);
280
282 GX_FORCE_INLINE GxVector3d(const GxVector3d& vector);
283
285 //-----------------------------------------------------------
287 //-----------------------------------------------------------
289
291 GX_FORCE_INLINE GxVector3d& operator = (const GxVector3d& vector);
293 GX_FORCE_INLINE GxVector3d& operator += (f64 scalar);
295 GX_FORCE_INLINE GxVector3d& operator -= (f64 scalar);
297 GX_FORCE_INLINE GxVector3d& operator *= (f64 scalar);
299 GX_FORCE_INLINE GxVector3d& operator /= (f64 scalar);
301 GX_FORCE_INLINE GxVector3d& operator += (const GxVector3d& vector);
303 GX_FORCE_INLINE GxVector3d& operator -= (const GxVector3d& vector);
305 GX_FORCE_INLINE GxVector3d& operator *= (const GxVector3d& vector);
307 GX_FORCE_INLINE GxVector3d& operator /= (const GxVector3d& vector);
309 friend GX_FORCE_INLINE const GxVector3d operator + (const GxVector3d& vector) { return vector; }
311 friend GX_FORCE_INLINE const GxVector3d operator - (const GxVector3d& vector) { return vector * -1.0; }
313 friend GX_FORCE_INLINE const GxVector3d operator + (const GxVector3d& vector, f64 scalar);
315 friend GX_FORCE_INLINE const GxVector3d operator - (const GxVector3d& vector, f64 scalar);
317 friend GX_INLINE const GxVector3d operator * (const GxVector3d& vector, f64 scalar);
319 friend GX_FORCE_INLINE const GxVector3d operator * (f64 scalar, const GxVector3d& vector);
321 friend GX_FORCE_INLINE const GxVector3d operator / (const GxVector3d& vector, f64 scalar);
323 friend GX_FORCE_INLINE const GxVector3d operator + (const GxVector3d& vector0, const GxVector3d& vector1);
325 friend GX_FORCE_INLINE const GxVector3d operator - (const GxVector3d& vector0, const GxVector3d& vector1);
327 friend GX_FORCE_INLINE const GxVector3d operator * (const GxVector3d& vector0, const GxVector3d& vector1);
329 friend GX_FORCE_INLINE const GxVector3d operator / (const GxVector3d& vector0, const GxVector3d& vector1);
331 friend GX_FORCE_INLINE b32 operator == (const GxVector3d& vector0, const GxVector3d& vector1);
333 friend GX_FORCE_INLINE b32 operator != (const GxVector3d& vector0, const GxVector3d& vector1);
334
336 //-----------------------------------------------------------
338 //-----------------------------------------------------------
340
342 GX_FORCE_INLINE const f64& operator[](u32 i) const;
344 GX_FORCE_INLINE f64& operator[](u32 i);
346 GX_FORCE_INLINE b32 isZeroVector(void) const;
348 GX_FORCE_INLINE GxVector3d getXY(void) const;
350 GX_FORCE_INLINE const GxVector3d& getXY(GxVector3d& dst) const;
352 GX_FORCE_INLINE void setXY(const GxVector3d& vector);
354 GX_FORCE_INLINE GxVector3d getXZ(void) const;
356 GX_FORCE_INLINE const GxVector3d& getXZ(GxVector3d& dst) const;
358 GX_FORCE_INLINE void setXZ(const GxVector3d& vector);
360 GX_FORCE_INLINE GxVector3d getYZ(void) const;
362 GX_FORCE_INLINE const GxVector3d& getYZ(GxVector3d& dst) const;
364 GX_FORCE_INLINE void setYZ(const GxVector3d& vector);
366 GX_FORCE_INLINE f64 getLength(void) const;
368 GX_FORCE_INLINE f64 getLengthSquare(void) const;
370 GX_FORCE_INLINE void setLength(f64 length);
372 GX_FORCE_INLINE void setLengthEx(f64 length);
374 GX_FORCE_INLINE GxVector3d getNormalize(void) const;
376 GX_FORCE_INLINE GxVector3d getNormalizeEx(void) const;
378 constexpr f64 getMinimumValue(void) const { return _x < _y ? (_x < _z ? _x : _z) : (_y < _z ? _y : _z); }
380 constexpr f64 getMaximumValue(void) const { return _x > _y ? (_x > _z ? _x : _z) : (_y > _z ? _y : _z); }
381
383 static GX_FORCE_INLINE const GxVector3d& getAddScalar(GxVector3d& dst, const GxVector3d& vector, f64 scalar);
385 static GX_FORCE_INLINE const GxVector3d& getSubScalar(GxVector3d& dst, const GxVector3d& vector, f64 scalar);
387 static GX_FORCE_INLINE const GxVector3d& getMulScalar(GxVector3d& dst, const GxVector3d& vector, f64 scalar);
389 static GX_FORCE_INLINE const GxVector3d& getDivScalar(GxVector3d& dst, const GxVector3d& vector, f64 scalar);
391 static GX_FORCE_INLINE const GxVector3d& getAddVector(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1);
393 static GX_FORCE_INLINE const GxVector3d& getSubVector(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1);
395 static GX_FORCE_INLINE const GxVector3d& getMulVector(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1);
397 static GX_FORCE_INLINE const GxVector3d& getDivVector(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1);
399 static GX_FORCE_INLINE const GxVector3d& getNormalize(GxVector3d& dst, const GxVector3d& vector);
401 static GX_FORCE_INLINE const GxVector3d& getNormalizeEx(GxVector3d& dst, const GxVector3d& vector);
403 static GX_FORCE_INLINE f64 getDot(const GxVector3d& vector0, const GxVector3d& vector1);
405 static GX_FORCE_INLINE GxVector3d getCross(const GxVector3d& vector0, const GxVector3d& vector1);
407 static GX_FORCE_INLINE const GxVector3d& getCross(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1);
409 static GX_FORCE_INLINE GxVector3d getCrossVector(const GxVector3d& vector);
411 static GX_FORCE_INLINE const GxVector3d& getCrossVector(GxVector3d& dst, const GxVector3d& vector);
413 static GX_FORCE_INLINE f64 getDistance(const GxVector3d& vector0, const GxVector3d& vector1);
415 static GX_FORCE_INLINE f64 getDistanceSquare(const GxVector3d& vector0, const GxVector3d& vector1);
417 static GX_FORCE_INLINE f64 getAngle(const GxVector3d& vector0, const GxVector3d& vector1);
419 static GX_FORCE_INLINE f64 getAngle(const GxVector3d& vector0, const GxVector3d& vector1, const GxVector3d& up);
421 static GX_FORCE_INLINE GxVector3d getMinimum(const GxVector3d& vector0, const GxVector3d& vector1);
423 static GX_FORCE_INLINE const GxVector3d& getMinimum(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1);
425 static GX_FORCE_INLINE GxVector3d getMaximum(const GxVector3d& vector0, const GxVector3d& vector1);
427 static GX_FORCE_INLINE const GxVector3d& getMaximum(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1);
429 static GX_FORCE_INLINE GxVector3d getLerp(const GxVector3d& vector0, const GxVector3d& vector1, f64 t);
431 static GX_FORCE_INLINE const GxVector3d& getLerp(GxVector3d& dst, const GxVector3d& vector0, const GxVector3d& vector1, f64 t);
433 static GX_FORCE_INLINE f64 getLineParam(const GxVector3d& checkPosition, const GxVector3d& startPosition, const GxVector3d& endPosition);
435 static GX_FORCE_INLINE GxVector3d getLinePosition(const GxVector3d& position, const GxVector3d& linePosition0, const GxVector3d& linePosition1);
437 static GX_FORCE_INLINE const GxVector3d& getLinePosition(GxVector3d& dst, const GxVector3d& position, const GxVector3d& linePosition0, const GxVector3d& linePosition1);
439 static GX_FORCE_INLINE GxVector3d getSegmentPosition(const GxVector3d& position, const GxVector3d& startPosition, const GxVector3d& endPosition);
441 static GX_FORCE_INLINE const GxVector3d& getSegmentPosition(GxVector3d& dst, const GxVector3d& position, const GxVector3d& startPosition, const GxVector3d& endPosition);
442
444 static GX_FORCE_INLINE b32 isSameDirectionLessEqual(const GxVector3d& vector0, const GxVector3d& vector1, f64 limitRadian = PI / 2.0);
446 static GX_FORCE_INLINE b32 isSameDirectionLessThan(const GxVector3d& vector0, const GxVector3d& vector1, f64 limitRadian = PI / 2.0);
447
449 //-----------------------------------------------------------
451 //-----------------------------------------------------------
453
455 GX_FORCE_INLINE const GxVector3d& addScalar(f64 scalar);
457 GX_FORCE_INLINE const GxVector3d& subScalar(f64 scalar);
459 GX_FORCE_INLINE const GxVector3d& mulScalar(f64 scalar);
461 GX_FORCE_INLINE const GxVector3d& divScalar(f64 scalar);
463 GX_FORCE_INLINE const GxVector3d& addVector(const GxVector3d& vector);
465 GX_FORCE_INLINE const GxVector3d& subVector(const GxVector3d& vector);
467 GX_FORCE_INLINE const GxVector3d& mulVector(const GxVector3d& vector);
469 GX_FORCE_INLINE const GxVector3d& divVector(const GxVector3d& vector);
470
472 GX_FORCE_INLINE const GxVector3d& normalize(void);
474 GX_FORCE_INLINE const GxVector3d& normalizeEx(void);
475
476#if GX_DEVELOP
477 // 書き込み
478 b32 write(GxStreamWriter& writer);
479#endif //GX_DEVELOP
481 //-------------------------------------------------------------
483 //-------------------------------------------------------------
485
486 f64 _x;
487 f64 _y;
488 f64 _z;
489
491} GX_ALIGN16_END;
492
493//===========================================================================
495//===========================================================================
496GX_ALIGN16_BEGIN struct GxVector4d : public GxStructBase
497{
498 //-------------------------------------------------------------
500 //-------------------------------------------------------------
502public:
503 GX_RTTI_STRUCT(GxVector4d)
504
505
506 static constexpr u32 DIMENSION = 4;
508 static const GxVector4d ZERO;
510 static const GxVector4d ONE;
512 static const GxVector4d AXIS_X;
514 static const GxVector4d AXIS_Y;
516 static const GxVector4d AXIS_Z;
518 static const GxVector4d AXIS_W;
520 static const GxVector4d MIN;
522 static const GxVector4d MAX;
523
525 //-------------------------------------------------------------
527 //-------------------------------------------------------------
529
531 GxVector4d(void) : _x(0.f), _y(0.f), _z(0.f), _w(0.f){}
533 GX_FORCE_INLINE GxVector4d(f64 x, f64 y, f64 z, f64 w);
535 GX_FORCE_INLINE GxVector4d(const GxDouble4& double4);
537 GX_FORCE_INLINE GxVector4d(const f64* pDoubleArray);
539 GX_FORCE_INLINE GxVector4d(const GxVector3d& vector, f64 w);
541 GX_FORCE_INLINE GxVector4d(const GxColorHDR& color);
542
544 GX_FORCE_INLINE GxVector4d(const GxVector4d& vector);
545
547 //-----------------------------------------------------------
549 //-----------------------------------------------------------
551
553 GX_FORCE_INLINE GxVector4d& operator = (const GxVector3d& vector);
555 GX_FORCE_INLINE GxVector4d& operator = (const GxVector4d& vector);
557 GX_FORCE_INLINE GxVector4d& operator += (f64 scalar);
559 GX_FORCE_INLINE GxVector4d& operator -= (f64 scalar);
561 GX_FORCE_INLINE GxVector4d& operator *= (f64 scalar);
563 GX_FORCE_INLINE GxVector4d& operator /= (f64 scalar);
565 GX_FORCE_INLINE GxVector4d& operator += (const GxVector4d& vector);
567 GX_FORCE_INLINE GxVector4d& operator -= (const GxVector4d& vector);
569 GX_FORCE_INLINE GxVector4d& operator *= (const GxVector4d& vector);
571 GX_FORCE_INLINE GxVector4d& operator /= (const GxVector4d& vector);
573 friend GX_FORCE_INLINE const GxVector4d operator + (const GxVector4d& vector) { return vector; }
575 friend GX_FORCE_INLINE const GxVector4d operator - (const GxVector4d& vector) { return vector * -1.0; }
577 friend GX_FORCE_INLINE const GxVector4d operator + (const GxVector4d& vector, f64 scalar);
579 friend GX_FORCE_INLINE const GxVector4d operator - (const GxVector4d& vector, f64 scalar);
581 friend GX_FORCE_INLINE const GxVector4d operator * (const GxVector4d& vector, f64 scalar);
583 friend GX_FORCE_INLINE const GxVector4d operator * (f64 scalar, const GxVector4d& vector);
585 friend GX_FORCE_INLINE const GxVector4d operator / (const GxVector4d& vector, f64 scalar);
587 friend GX_FORCE_INLINE const GxVector4d operator + (const GxVector4d& vector0, const GxVector4d& vector1);
589 friend GX_FORCE_INLINE const GxVector4d operator - (const GxVector4d& vector0, const GxVector4d& vector1);
591 friend GX_FORCE_INLINE const GxVector4d operator * (const GxVector4d& vector0, const GxVector4d& vector1);
593 friend GX_FORCE_INLINE const GxVector4d operator / (const GxVector4d& vector0, const GxVector4d& vector1);
595 friend GX_FORCE_INLINE b32 operator == (const GxVector4d& vector0, const GxVector4d& vector1);
597 friend GX_FORCE_INLINE b32 operator != (const GxVector4d& vector0, const GxVector4d& vector1);
598
600 //-----------------------------------------------------------
602 //-----------------------------------------------------------
604
606 GX_FORCE_INLINE const f64& operator[](u32 i) const;
608 GX_FORCE_INLINE f64& operator[](u32 i);
610 GX_FORCE_INLINE b32 isZeroVector(void) const;
612 GX_FORCE_INLINE f64 getLength(void) const;
614 GX_FORCE_INLINE f64 getLengthSquare(void) const;
616 GX_FORCE_INLINE void setLength(f64 length);
618 GX_FORCE_INLINE void setLengthEx(f64 length);
620 GX_FORCE_INLINE GxVector4d getNormalize(void) const;
622 GX_FORCE_INLINE GxVector4d getNormalizeEx(void) const;
624 constexpr f64 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)); }
626 constexpr f64 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)); }
627
629 static GX_FORCE_INLINE const GxVector4d& getAddScalar(GxVector4d& dst, const GxVector4d& vector, f64 scalar);
631 static GX_FORCE_INLINE const GxVector4d& getSubScalar(GxVector4d& dst, const GxVector4d& vector, f64 scalar);
633 static GX_FORCE_INLINE const GxVector4d& getMulScalar(GxVector4d& dst, const GxVector4d& vector, f64 scalar);
635 static GX_FORCE_INLINE const GxVector4d& getDivScalar(GxVector4d& dst, const GxVector4d& vector, f64 scalar);
637 static GX_FORCE_INLINE const GxVector4d& getAddVector(GxVector4d& dst, const GxVector4d& vector0, const GxVector4d& vector1);
639 static GX_FORCE_INLINE const GxVector4d& getSubVector(GxVector4d& dst, const GxVector4d& vector0, const GxVector4d& vector1);
641 static GX_FORCE_INLINE const GxVector4d& getMulVector(GxVector4d& dst, const GxVector4d& vector0, const GxVector4d& vector1);
643 static GX_FORCE_INLINE const GxVector4d& getDivVector(GxVector4d& dst, const GxVector4d& vector0, const GxVector4d& vector1);
645 static GX_FORCE_INLINE const GxVector4d& getNormalize(GxVector4d& dst, const GxVector4d& vector);
647 static GX_FORCE_INLINE const GxVector4d& getNormalizeEx(GxVector4d& dst, const GxVector4d& vector);
649 static GX_FORCE_INLINE f64 getDot(const GxVector4d& vector0, const GxVector4d& vector1);
651 static GX_FORCE_INLINE GxVector4d getMinimum(const GxVector4d& vector0, const GxVector4d& vector1);
653 static GX_FORCE_INLINE const GxVector4d& getMinimum(GxVector4d& dst, const GxVector4d& vector0, const GxVector4d& vector1);
655 static GX_FORCE_INLINE GxVector4d getMaximum(const GxVector4d& vector0, const GxVector4d& vector1);
657 static GX_FORCE_INLINE const GxVector4d& getMaximum(GxVector4d& dst, const GxVector4d& vector0, const GxVector4d& vector1);
659 static GX_FORCE_INLINE GxVector4d getLerp(const GxVector4d& vector0, const GxVector4d& vector1, f64 t);
661 static GX_FORCE_INLINE const GxVector4d& getLerp(GxVector4d& dst, const GxVector4d& vector0, const GxVector4d& vector1, f64 t);
662
664 //-----------------------------------------------------------
666 //-----------------------------------------------------------
668
670 GX_FORCE_INLINE const GxVector4d& addScalar(f64 scalar);
672 GX_FORCE_INLINE const GxVector4d& subScalar(f64 scalar);
674 GX_FORCE_INLINE const GxVector4d& mulScalar(f64 scalar);
676 GX_FORCE_INLINE const GxVector4d& divScalar(f64 scalar);
678 GX_FORCE_INLINE const GxVector4d& addVector(const GxVector4d& vector);
680 GX_FORCE_INLINE const GxVector4d& subVector(const GxVector4d& vector);
682 GX_FORCE_INLINE const GxVector4d& mulVector(const GxVector4d& vector);
684 GX_FORCE_INLINE const GxVector4d& divVector(const GxVector4d& vector);
685
687 GX_FORCE_INLINE const GxVector4d& normalize(void);
689 GX_FORCE_INLINE const GxVector4d& normalizeEx(void);
690
691#if GX_DEVELOP
692 // 書き込み
693 b32 write(GxStreamWriter& writer);
694#endif //GX_DEVELOP
695
697 //-------------------------------------------------------------
699 //-------------------------------------------------------------
701
702 f64 _x;
703 f64 _y;
704 f64 _z;
705 f64 _w;
706
708} GX_ALIGN16_END;
709
710GX_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:207
3次元浮動小数点数(倍精度)クラス
Definition GxStruct.h:276
4次元浮動小数点数(倍精度)クラス
Definition GxStruct.h:338
座標
Definition GxStruct.h:867
Definition GxBase.h:24
2次元ベクトル(倍精度)
Definition GxVectord.h:25
constexpr f64 getMaximumValue(void) const
最大要素を取得
Definition GxVectord.h:146
f64 _y
Y値
Definition GxVectord.h:226
constexpr f64 getMinimumValue(void) const
最小要素を取得
Definition GxVectord.h:144
f64 _x
X値
Definition GxVectord.h:225
3次元ベクトル(倍精度)
Definition GxVectord.h:235
GX_FORCE_INLINE GxVector3d & operator-=(f64 scalar)
スカラ減算代入
Definition GxVectord.inl:1046
GX_FORCE_INLINE const GxVector3d & divScalar(f64 scalar)
スカラ除算
Definition GxVectord.inl:2155
friend GX_FORCE_INLINE const GxVector3d operator-(const GxVector3d &vector)
負ベクトル
Definition GxVectord.h:311
GX_FORCE_INLINE GxVector3d getYZ(void) const
YZ要素のベクトルを取得
Definition GxVectord.inl:1340
GX_FORCE_INLINE const GxVector3d & addScalar(f64 scalar)
スカラ加算
Definition GxVectord.inl:2113
static GX_FORCE_INLINE GxVector3d getLerp(const GxVector3d &vector0, const GxVector3d &vector1, f64 t)
線形補間
Definition GxVectord.inl:1928
friend GX_FORCE_INLINE b32 operator!=(const GxVector3d &vector0, const GxVector3d &vector1)
不一致
Definition GxVectord.inl:1243
GX_FORCE_INLINE const GxVector3d & normalizeEx(void)
正規化する(長さ0に対応)
Definition GxVectord.inl:2263
static GX_FORCE_INLINE GxVector3d getMinimum(const GxVector3d &vector0, const GxVector3d &vector1)
要素毎に最小値を選択
Definition GxVectord.inl:1869
GX_FORCE_INLINE const GxVector3d & mulScalar(f64 scalar)
スカラ乗算
Definition GxVectord.inl:2141
friend GX_FORCE_INLINE const GxVector3d operator/(const GxVector3d &vector, f64 scalar)
スカラ除算
Definition GxVectord.inl:1172
GX_FORCE_INLINE const GxVector3d & mulVector(const GxVector3d &vector)
ベクトル乗算
Definition GxVectord.inl:2199
f64 _y
Y値
Definition GxVectord.h:487
static GX_FORCE_INLINE GxVector3d getSegmentPosition(const GxVector3d &position, const GxVector3d &startPosition, const GxVector3d &endPosition)
指定した点を線分上に下ろした点を取得
Definition GxVectord.inl:2030
GX_FORCE_INLINE const GxVector3d & normalize(void)
正規化する
Definition GxVectord.inl:2226
static GX_FORCE_INLINE f64 getAngle(const GxVector3d &vector0, const GxVector3d &vector1)
角度差を取得(符号なし radian)
Definition GxVectord.inl:1825
GX_FORCE_INLINE void setYZ(const GxVector3d &vector)
YZ要素のベクトルを設定
Definition GxVectord.inl:1363
static GX_FORCE_INLINE const GxVector3d & getMulVector(GxVector3d &dst, const GxVector3d &vector0, const GxVector3d &vector1)
ベクトル乗算を取得
Definition GxVectord.inl:1620
GX_FORCE_INLINE f64 getLengthSquare(void) const
長さの2乗を取得
Definition GxVectord.inl:1391
GX_FORCE_INLINE void setLengthEx(f64 length)
長さを設定(長さ0に対応)
Definition GxVectord.inl:1436
static GX_FORCE_INLINE GxVector3d getLinePosition(const GxVector3d &position, const GxVector3d &linePosition0, const GxVector3d &linePosition1)
指定した点を直線上に下ろした点を取得
Definition GxVectord.inl:2000
static GX_FORCE_INLINE const GxVector3d & getMulScalar(GxVector3d &dst, const GxVector3d &vector, f64 scalar)
スカラ乗算を取得
Definition GxVectord.inl:1554
static GX_FORCE_INLINE const GxVector3d & getSubVector(GxVector3d &dst, const GxVector3d &vector0, const GxVector3d &vector1)
ベクトル減算を取得
Definition GxVectord.inl:1604
static const GxVector3d MIN
最小値ベクトル
Definition GxVectord.h:256
static const GxVector3d ZERO
(0, 0, 0)
Definition GxVectord.h:246
GX_FORCE_INLINE const GxVector3d & subScalar(f64 scalar)
スカラ減算
Definition GxVectord.inl:2127
static GX_FORCE_INLINE const GxVector3d & getAddScalar(GxVector3d &dst, const GxVector3d &vector, f64 scalar)
スカラ加算を取得
Definition GxVectord.inl:1522
GxVector3d(void)
デフォルトコンストラクタ
Definition GxVectord.h:267
GX_FORCE_INLINE GxVector3d & operator*=(f64 scalar)
スカラ乗算代入
Definition GxVectord.inl:1057
f64 _x
X値
Definition GxVectord.h:486
GX_FORCE_INLINE GxVector3d getNormalizeEx(void) const
正規化ベクトルを取得(長さ0に対応)
Definition GxVectord.inl:1493
GX_FORCE_INLINE const f64 & operator[](u32 i) const
const配列
Definition GxVectord.inl:1253
GX_FORCE_INLINE f64 getLength(void) const
長さを取得
Definition GxVectord.inl:1382
constexpr f64 getMinimumValue(void) const
最小要素を取得
Definition GxVectord.h:378
friend GX_FORCE_INLINE b32 operator==(const GxVector3d &vector0, const GxVector3d &vector1)
一致
Definition GxVectord.inl:1232
GX_FORCE_INLINE b32 isZeroVector(void) const
ゼロベクトルかを取得
Definition GxVectord.inl:1373
static GX_FORCE_INLINE f64 getDistanceSquare(const GxVector3d &vector0, const GxVector3d &vector1)
距離の2乗を取得
Definition GxVectord.inl:1809
constexpr f64 getMaximumValue(void) const
最大要素を取得
Definition GxVectord.h:380
static const GxVector3d MAX
最大値ベクトル
Definition GxVectord.h:258
GX_FORCE_INLINE void setXZ(const GxVector3d &vector)
XZ要素のベクトルを設定
Definition GxVectord.inl:1330
GX_FORCE_INLINE GxVector3d getNormalize(void) const
正規化ベクトルを取得
Definition GxVectord.inl:1460
static GX_FORCE_INLINE const GxVector3d & getAddVector(GxVector3d &dst, const GxVector3d &vector0, const GxVector3d &vector1)
ベクトル加算を取得
Definition GxVectord.inl:1588
friend GX_INLINE const GxVector3d operator*(const GxVector3d &vector, f64 scalar)
スカラ乗算
Definition GxVectord.inl:1148
static GX_FORCE_INLINE GxVector3d getCrossVector(const GxVector3d &vector)
直交する単位ベクトルを取得
Definition GxVectord.inl:1757
static const GxVector3d AXIS_Y
(0, 1, 0)
Definition GxVectord.h:252
f64 _z
Z値
Definition GxVectord.h:488
GX_FORCE_INLINE GxVector3d getXZ(void) const
XZ要素のベクトルを取得
Definition GxVectord.inl:1306
static GX_FORCE_INLINE f64 getDot(const GxVector3d &vector0, const GxVector3d &vector1)
内積を取得
Definition GxVectord.inl:1718
GX_FORCE_INLINE void setXY(const GxVector3d &vector)
XY要素のベクトルを設定
Definition GxVectord.inl:1296
static GX_FORCE_INLINE f64 getLineParam(const GxVector3d &checkPosition, const GxVector3d &startPosition, const GxVector3d &endPosition)
指定した点が線分上のどこに位置するかのパラメータを返す
Definition GxVectord.inl:1962
static GX_FORCE_INLINE b32 isSameDirectionLessEqual(const GxVector3d &vector0, const GxVector3d &vector1, f64 limitRadian=PI/2.0)
ベクトルが同じ方向を向いているか(ラジアン指定/指定値以内なら(==も含む)同じ方向)
Definition GxVectord.inl:2045
static GX_FORCE_INLINE b32 isSameDirectionLessThan(const GxVector3d &vector0, const GxVector3d &vector1, f64 limitRadian=PI/2.0)
ベクトルが同じ方向を向いているか(ラジアン指定/指定値より小さければ(==は含まない)同じ方向)
Definition GxVectord.inl:2080
friend GX_FORCE_INLINE const GxVector3d operator+(const GxVector3d &vector)
正ベクトル
Definition GxVectord.h:309
static constexpr u32 DIMENSION
次元数
Definition GxVectord.h:244
static const GxVector3d AXIS_X
(1, 0, 0)
Definition GxVectord.h:250
static GX_FORCE_INLINE const GxVector3d & getDivVector(GxVector3d &dst, const GxVector3d &vector0, const GxVector3d &vector1)
ベクトル除算を取得
Definition GxVectord.inl:1636
GX_FORCE_INLINE GxVector3d & operator=(const GxVector3d &vector)
代入
Definition GxVectord.inl:1022
static const GxVector3d ONE
(1, 1, 1)
Definition GxVectord.h:248
static GX_FORCE_INLINE GxVector3d getMaximum(const GxVector3d &vector0, const GxVector3d &vector1)
要素毎に最大値を選択
Definition GxVectord.inl:1898
GX_FORCE_INLINE const GxVector3d & subVector(const GxVector3d &vector)
ベクトル減算
Definition GxVectord.inl:2185
static GX_FORCE_INLINE const GxVector3d & getSubScalar(GxVector3d &dst, const GxVector3d &vector, f64 scalar)
スカラ減算を取得
Definition GxVectord.inl:1538
GX_FORCE_INLINE GxVector3d & operator/=(f64 scalar)
スカラ除算代入
Definition GxVectord.inl:1068
static GX_FORCE_INLINE GxVector3d getCross(const GxVector3d &vector0, const GxVector3d &vector1)
外積を取得
Definition GxVectord.inl:1729
GX_FORCE_INLINE void setLength(f64 length)
長さを設定
Definition GxVectord.inl:1400
static GX_FORCE_INLINE f64 getDistance(const GxVector3d &vector0, const GxVector3d &vector1)
距離を取得
Definition GxVectord.inl:1798
GX_FORCE_INLINE const GxVector3d & divVector(const GxVector3d &vector)
ベクトル除算
Definition GxVectord.inl:2213
static const GxVector3d AXIS_Z
(0, 0, 1)
Definition GxVectord.h:254
GX_FORCE_INLINE GxVector3d & operator+=(f64 scalar)
スカラ加算代入
Definition GxVectord.inl:1035
GX_FORCE_INLINE const GxVector3d & addVector(const GxVector3d &vector)
ベクトル加算
Definition GxVectord.inl:2171
GX_FORCE_INLINE GxVector3d getXY(void) const
XY要素のベクトルを取得
Definition GxVectord.inl:1272
static GX_FORCE_INLINE const GxVector3d & getDivScalar(GxVector3d &dst, const GxVector3d &vector, f64 scalar)
スカラ除算を取得
Definition GxVectord.inl:1570
4次元ベクトル(倍精度)
Definition GxVectord.h:497
static const GxVector4d ZERO
(0, 0, 0, 0)
Definition GxVectord.h:508
GX_FORCE_INLINE const GxVector4d & normalizeEx(void)
正規化する(長さ0に対応)
Definition GxVectord.inl:3249
GX_FORCE_INLINE GxVector4d getNormalize(void) const
正規化ベクトルを取得
Definition GxVectord.inl:2727
static GX_FORCE_INLINE const GxVector4d & getAddScalar(GxVector4d &dst, const GxVector4d &vector, f64 scalar)
スカラ加算を取得
Definition GxVectord.inl:2779
static GX_FORCE_INLINE GxVector4d getMinimum(const GxVector4d &vector0, const GxVector4d &vector1)
要素毎に最小値を選択
Definition GxVectord.inl:2997
GX_FORCE_INLINE GxVector4d & operator+=(f64 scalar)
スカラ加算代入
Definition GxVectord.inl:2399
friend GX_FORCE_INLINE b32 operator==(const GxVector4d &vector0, const GxVector4d &vector1)
一致
Definition GxVectord.inl:2596
GX_FORCE_INLINE GxVector4d & operator-=(f64 scalar)
スカラ減算代入
Definition GxVectord.inl:2410
GX_FORCE_INLINE void setLength(f64 length)
長さを設定
Definition GxVectord.inl:2664
friend GX_FORCE_INLINE const GxVector4d operator+(const GxVector4d &vector)
正ベクトル
Definition GxVectord.h:573
GX_FORCE_INLINE const f64 & operator[](u32 i) const
const配列
Definition GxVectord.inl:2617
constexpr f64 getMinimumValue(void) const
最小要素を取得
Definition GxVectord.h:624
GX_FORCE_INLINE const GxVector4d & divScalar(f64 scalar)
スカラ除算
Definition GxVectord.inl:3136
static GX_FORCE_INLINE const GxVector4d & getMulVector(GxVector4d &dst, const GxVector4d &vector0, const GxVector4d &vector1)
ベクトル乗算を取得
Definition GxVectord.inl:2883
static GX_FORCE_INLINE GxVector4d getLerp(const GxVector4d &vector0, const GxVector4d &vector1, f64 t)
線形補間
Definition GxVectord.inl:3060
friend GX_FORCE_INLINE b32 operator!=(const GxVector4d &vector0, const GxVector4d &vector1)
不一致
Definition GxVectord.inl:2607
GxVector4d(void)
デフォルトコンストラクタ
Definition GxVectord.h:531
GX_FORCE_INLINE const GxVector4d & mulVector(const GxVector4d &vector)
ベクトル乗算
Definition GxVectord.inl:3183
static const GxVector4d MAX
最大値ベクトル
Definition GxVectord.h:522
static GX_FORCE_INLINE f64 getDot(const GxVector4d &vector0, const GxVector4d &vector1)
内積を取得
Definition GxVectord.inl:2986
friend GX_FORCE_INLINE const GxVector4d operator-(const GxVector4d &vector)
負ベクトル
Definition GxVectord.h:575
GX_FORCE_INLINE const GxVector4d & divVector(const GxVector4d &vector)
ベクトル除算
Definition GxVectord.inl:3198
static GX_FORCE_INLINE GxVector4d getMaximum(const GxVector4d &vector0, const GxVector4d &vector1)
要素毎に最大値を選択
Definition GxVectord.inl:3028
static const GxVector4d AXIS_W
(0, 0, 0, 1)
Definition GxVectord.h:518
GX_FORCE_INLINE void setLengthEx(f64 length)
長さを設定(長さ0に対応)
Definition GxVectord.inl:2701
static GX_FORCE_INLINE const GxVector4d & getAddVector(GxVector4d &dst, const GxVector4d &vector0, const GxVector4d &vector1)
ベクトル加算を取得
Definition GxVectord.inl:2849
GX_FORCE_INLINE const GxVector4d & normalize(void)
正規化する
Definition GxVectord.inl:3212
static GX_FORCE_INLINE const GxVector4d & getDivScalar(GxVector4d &dst, const GxVector4d &vector, f64 scalar)
スカラ除算を取得
Definition GxVectord.inl:2830
friend GX_FORCE_INLINE const GxVector4d operator*(const GxVector4d &vector, f64 scalar)
スカラ乗算
Definition GxVectord.inl:2512
f64 _w
W値
Definition GxVectord.h:705
constexpr f64 getMaximumValue(void) const
最大要素を取得
Definition GxVectord.h:626
GX_FORCE_INLINE b32 isZeroVector(void) const
ゼロベクトルかを取得
Definition GxVectord.inl:2636
GX_FORCE_INLINE GxVector4d getNormalizeEx(void) const
正規化ベクトルを取得(長さ0に対応)
Definition GxVectord.inl:2760
GX_FORCE_INLINE const GxVector4d & subVector(const GxVector4d &vector)
ベクトル減算
Definition GxVectord.inl:3168
static GX_FORCE_INLINE const GxVector4d & getSubVector(GxVector4d &dst, const GxVector4d &vector0, const GxVector4d &vector1)
ベクトル減算を取得
Definition GxVectord.inl:2866
static GX_FORCE_INLINE const GxVector4d & getDivVector(GxVector4d &dst, const GxVector4d &vector0, const GxVector4d &vector1)
ベクトル除算を取得
Definition GxVectord.inl:2900
GX_FORCE_INLINE const GxVector4d & mulScalar(f64 scalar)
スカラ乗算
Definition GxVectord.inl:3121
GX_FORCE_INLINE GxVector4d & operator/=(f64 scalar)
スカラ除算代入
Definition GxVectord.inl:2432
static constexpr u32 DIMENSION
次元数
Definition GxVectord.h:506
static const GxVector4d MIN
最小値ベクトル
Definition GxVectord.h:520
GX_FORCE_INLINE const GxVector4d & addVector(const GxVector4d &vector)
ベクトル加算
Definition GxVectord.inl:3153
static const GxVector4d AXIS_X
(1, 0, 0, 0)
Definition GxVectord.h:512
GX_FORCE_INLINE GxVector4d & operator=(const GxVector3d &vector)
代入
Definition GxVectord.inl:2371
f64 _x
X値
Definition GxVectord.h:702
GX_FORCE_INLINE const GxVector4d & subScalar(f64 scalar)
スカラ減算
Definition GxVectord.inl:3106
static GX_FORCE_INLINE const GxVector4d & getSubScalar(GxVector4d &dst, const GxVector4d &vector, f64 scalar)
スカラ減算を取得
Definition GxVectord.inl:2796
friend GX_FORCE_INLINE const GxVector4d operator/(const GxVector4d &vector, f64 scalar)
スカラ除算
Definition GxVectord.inl:2536
static const GxVector4d AXIS_Z
(0, 0, 1, 0)
Definition GxVectord.h:516
GX_FORCE_INLINE GxVector4d & operator*=(f64 scalar)
スカラ乗算代入
Definition GxVectord.inl:2421
f64 _z
Z値
Definition GxVectord.h:704
static GX_FORCE_INLINE const GxVector4d & getMulScalar(GxVector4d &dst, const GxVector4d &vector, f64 scalar)
スカラ乗算を取得
Definition GxVectord.inl:2813
GX_FORCE_INLINE const GxVector4d & addScalar(f64 scalar)
スカラ加算
Definition GxVectord.inl:3091
f64 _y
Y値
Definition GxVectord.h:703
static const GxVector4d AXIS_Y
(0, 1, 0, 0)
Definition GxVectord.h:514
GX_FORCE_INLINE f64 getLength(void) const
長さを取得
Definition GxVectord.inl:2645
static const GxVector4d ONE
(1, 1, 1, 1)
Definition GxVectord.h:510
GX_FORCE_INLINE f64 getLengthSquare(void) const
長さの2乗を取得
Definition GxVectord.inl:2654
32bitブーリアン
Definition GxDefine.h:173