11GX_CORE_NAMESPACE_BEGIN()
13#define GX_VECTOR_ZERO_VECTOR_CHECK_VALUE F32_ABS_MIN
54: _x(static_cast<f64>(point._x))
55, _y(static_cast<f64>(point._y))
285 return (vector0.
_x == vector1.
_x) && (vector0.
_y == vector1.
_y);
296 return (vector0.
_x != vector1.
_x) || (vector0.
_y != vector1.
_y);
354#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
355 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < oldLength * oldLength,
"ゼロベクトルに長さを設定しようとしました");
358 if (oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
363 if( oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
365 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
366 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
367 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルに長さを設定しようとしました");
374 const auto scale = length / oldLength;
389 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
411#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
412 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
415 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
420 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
422 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
423 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
424 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
431 const auto inverseLength = 1.0 / length;
444 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
465 dst.
_x = vector.
_x + scalar;
466 dst.
_y = vector.
_y + scalar;
480 dst.
_x = vector.
_x - scalar;
481 dst.
_y = vector.
_y - scalar;
495 dst.
_x = vector.
_x * scalar;
496 dst.
_y = vector.
_y * scalar;
510 auto inverseLength = 1.0 / scalar;
512 dst.
_x = vector.
_x * inverseLength;
513 dst.
_y = vector.
_y * inverseLength;
527 dst.
_x = vector0.
_x + vector1.
_x;
528 dst.
_y = vector0.
_y + vector1.
_y;
542 dst.
_x = vector0.
_x - vector1.
_x;
543 dst.
_y = vector0.
_y - vector1.
_y;
557 dst.
_x = vector0.
_x * vector1.
_x;
558 dst.
_y = vector0.
_y * vector1.
_y;
572 dst.
_x = vector0.
_x / vector1.
_x;
573 dst.
_y = vector0.
_y / vector1.
_y;
588#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
589 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length* length,
"ゼロベクトルを正規化しようとしました");
592 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
597 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
599 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
600 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
601 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
608 const auto inverseLength = 1.0 / length;
610 dst.
_x = vector.
_x * inverseLength;
611 dst.
_y = vector.
_y * inverseLength;
626 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
630 dst.
_x = vector.
_x * inverseLength;
631 dst.
_y = vector.
_y * inverseLength;
650 return vector0.
_x * vector1.
_x + vector0.
_y * vector1.
_y;
661 return vector0.
_x * vector1.
_y - vector0.
_y * vector1.
_x;
693 vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y);
705 dst.
_x = vector0.
_x < vector1.
_x ? vector0.
_x : vector1.
_x;
706 dst.
_y = vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y;
720 vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y);
732 dst.
_x = vector0.
_x > vector1.
_x ? vector0.
_x : vector1.
_x;
733 dst.
_y = vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y;
748 vector0.
_y + (vector1.
_y - vector0.
_y) * t);
761 dst.
_x = vector0.
_x + (vector1.
_x - vector0.
_x) * t;
762 dst.
_y = vector0.
_y + (vector1.
_y - vector0.
_y) * t;
813 auto inverseScalar = 1.0 / scalar;
881#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
882 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
885 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
890 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
892 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
893 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
894 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
901 const auto inverseLength = 1.0 / length;
917 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
977: _x(static_cast<f64>(point._x))
978, _y(static_cast<f64>(point._y))
1234 return (vector0.
_x == vector1.
_x) && (vector0.
_y == vector1.
_y) && (vector0.
_z == vector1.
_z);
1245 return (vector0.
_x != vector1.
_x) || (vector0.
_y != vector1.
_y) || (vector0.
_z != vector1.
_z);
1404#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
1405 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < oldLength * oldLength,
"ゼロベクトルに長さを設定しようとしました");
1408 if (oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
1413 if( oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
1415 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
1416 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
1417 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルに長さを設定しようとしました");
1424 const auto scale = length / oldLength;
1440 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
1464#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
1465 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
1468 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE ) length = 1.0;
1470 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
1472 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
1473 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
1474 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
1481 const auto inverseLength = 1.0 / length;
1486 _z * inverseLength);
1497 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
1504 _z * inverseLength);
1524 dst.
_x = vector.
_x + scalar;
1525 dst.
_y = vector.
_y + scalar;
1526 dst.
_z = vector.
_z + scalar;
1540 dst.
_x = vector.
_x - scalar;
1541 dst.
_y = vector.
_y - scalar;
1542 dst.
_z = vector.
_z - scalar;
1556 dst.
_x = vector.
_x * scalar;
1557 dst.
_y = vector.
_y * scalar;
1558 dst.
_z = vector.
_z * scalar;
1572 auto inverseScalar = 1.0 / scalar;
1574 dst.
_x = vector.
_x * inverseScalar;
1575 dst.
_y = vector.
_y * inverseScalar;
1576 dst.
_z = vector.
_z * inverseScalar;
1590 dst.
_x = vector0.
_x + vector1.
_x;
1591 dst.
_y = vector0.
_y + vector1.
_y;
1592 dst.
_z = vector0.
_z + vector1.
_z;
1606 dst.
_x = vector0.
_x - vector1.
_x;
1607 dst.
_y = vector0.
_y - vector1.
_y;
1608 dst.
_z = vector0.
_z - vector1.
_z;
1622 dst.
_x = vector0.
_x * vector1.
_x;
1623 dst.
_y = vector0.
_y * vector1.
_y;
1624 dst.
_z = vector0.
_z * vector1.
_z;
1638 dst.
_x = vector0.
_x / vector1.
_x;
1639 dst.
_y = vector0.
_y / vector1.
_y;
1640 dst.
_z = vector0.
_z / vector1.
_z;
1655#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
1656 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
1659 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
1664 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
1666 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
1667 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
1668 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
1675 const auto inverseLength = 1.0 / length;
1677 dst.
_x = vector.
_x * inverseLength;
1678 dst.
_y = vector.
_y * inverseLength;
1679 dst.
_z = vector.
_z * inverseLength;
1694 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
1698 dst.
_x = vector.
_x * inverseLength;
1699 dst.
_y = vector.
_y * inverseLength;
1700 dst.
_z = vector.
_z * inverseLength;
1720 return vector0.
_x * vector1.
_x + vector0.
_y * vector1.
_y + vector0.
_z * vector1.
_z;
1732 vector0.
_z * vector1.
_x - vector0.
_x * vector1.
_z,
1733 vector0.
_x * vector1.
_y - vector0.
_y * vector1.
_x);
1745 dst.
_x = vector0.
_y * vector1.
_z - vector0.
_z * vector1.
_y;
1746 dst.
_y = vector0.
_z * vector1.
_x - vector0.
_x * vector1.
_z;
1747 dst.
_z = vector0.
_x * vector1.
_y - vector0.
_y * vector1.
_x;
1763 temporary.
_x = -temporary.
_x;
1784 temporary.
_x = -temporary.
_x;
1811 const auto x = vector0.
_x - vector1.
_x;
1812 const auto y = vector0.
_y - vector1.
_y;
1813 const auto z = vector0.
_z - vector1.
_z;
1815 return x * x + y * y + z * z;
1829 if( denominator <= DBL_EPSILON)
1850 if(denominator <= DBL_EPSILON)
1858 const auto signe =
getDot(up,
getCross(vector2, vector0, vector1));
1872 vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y,
1873 vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z);
1885 dst.
_x = vector0.
_x < vector1.
_x ? vector0.
_x : vector1.
_x;
1886 dst.
_y = vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y;
1887 dst.
_z = vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z;
1901 vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y,
1902 vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z);
1914 dst.
_x = vector0.
_x > vector1.
_x ? vector0.
_x : vector1.
_x;
1915 dst.
_y = vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y;
1916 dst.
_z = vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z;
1931 vector0.
_y + (vector1.
_y - vector0.
_y) * t,
1932 vector0.
_z + (vector1.
_z - vector0.
_z) * t);
1945 dst.
_x = vector0.
_x + (vector1.
_x - vector0.
_x) * t;
1946 dst.
_y = vector0.
_y + (vector1.
_y - vector0.
_y) * t;
1947 dst.
_z = vector0.
_z + (vector1.
_z - vector0.
_z) * t;
1965 GxVector3d v1(checkPosition - startPosition);
1970 if( denominator <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
1975 return numerator / denominator;
1988 auto t =
getLineParam(position, linePosition0, linePosition1);
2002 auto t =
getLineParam(position, linePosition0, linePosition1);
2017 auto t =
getLineParam(position, startPosition, endPosition);
2032 auto t =
getLineParam(position, startPosition, endPosition);
2052 if( cosRadian <= 0.f )
2063 if( cosRadian <= 0.f &&
2087 if( cosRadian < 0.f )
2098 if( cosRadian < 0.f &&
2157 auto inverseScalar = 1.0 / scalar;
2159 _x *= inverseScalar;
2160 _y *= inverseScalar;
2161 _z *= inverseScalar;
2230#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
2231 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
2234 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
2239 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
2241 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
2242 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
2243 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
2250 const auto inverseLength = 1.0 / length;
2252 _x *= inverseLength;
2253 _y *= inverseLength;
2254 _z *= inverseLength;
2267 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
2271 _x *= inverseLength;
2272 _y *= inverseLength;
2273 _z *= inverseLength;
2320: _x(pDoubleArray[0])
2321, _y(pDoubleArray[1])
2322, _z(pDoubleArray[2])
2323, _w(pDoubleArray[3])
2598 return (vector0.
_x == vector1.
_x) && (vector0.
_y == vector1.
_y) && (vector0.
_z == vector1.
_z) && (vector0.
_w == vector1.
_w);
2609 return (vector0.
_x != vector1.
_x) || (vector0.
_y != vector1.
_y) || (vector0.
_z != vector1.
_z) || (vector0.
_w != vector1.
_w);
2668#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
2669 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < oldLength * oldLength,
"ゼロベクトルに長さを設定しようとしました");
2672 if (oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
2677 if( oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
2679 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
2680 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
2681 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルに長さを設定しようとしました");
2688 const auto scale = length / oldLength;
2705 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
2731#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
2732 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
2735 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
2740 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
2742 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
2743 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
2744 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
2751 const auto inverseLength = 1.0 / length;
2753 return GxVector4d(
_x * inverseLength,
_y * inverseLength,
_z * inverseLength,
_w * inverseLength);
2764 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
2767 return GxVector4d(
_x * inverseLength,
_y * inverseLength,
_z * inverseLength,
_w * inverseLength);
2781 dst.
_x = vector.
_x + scalar;
2782 dst.
_y = vector.
_y + scalar;
2783 dst.
_z = vector.
_z + scalar;
2784 dst.
_w = vector.
_w + scalar;
2798 dst.
_x = vector.
_x - scalar;
2799 dst.
_y = vector.
_y - scalar;
2800 dst.
_z = vector.
_z - scalar;
2801 dst.
_w = vector.
_w - scalar;
2815 dst.
_x = vector.
_x * scalar;
2816 dst.
_y = vector.
_y * scalar;
2817 dst.
_z = vector.
_z * scalar;
2818 dst.
_w = vector.
_w * scalar;
2832 auto inverseScalar = 1.0 / scalar;
2834 dst.
_x = vector.
_x * inverseScalar;
2835 dst.
_y = vector.
_y * inverseScalar;
2836 dst.
_z = vector.
_z * inverseScalar;
2837 dst.
_w = vector.
_w * inverseScalar;
2851 dst.
_x = vector0.
_x + vector1.
_x;
2852 dst.
_y = vector0.
_y + vector1.
_y;
2853 dst.
_z = vector0.
_z + vector1.
_z;
2854 dst.
_w = vector0.
_w + vector1.
_w;
2868 dst.
_x = vector0.
_x - vector1.
_x;
2869 dst.
_y = vector0.
_y - vector1.
_y;
2870 dst.
_z = vector0.
_z - vector1.
_z;
2871 dst.
_w = vector0.
_w - vector1.
_w;
2885 dst.
_x = vector0.
_x * vector1.
_x;
2886 dst.
_y = vector0.
_y * vector1.
_y;
2887 dst.
_z = vector0.
_z * vector1.
_z;
2888 dst.
_w = vector0.
_w * vector1.
_w;
2902 dst.
_x = vector0.
_x / vector1.
_x;
2903 dst.
_y = vector0.
_y / vector1.
_y;
2904 dst.
_z = vector0.
_z / vector1.
_z;
2905 dst.
_w = vector0.
_w / vector1.
_w;
2920#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
2921 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length* length,
"ゼロベクトルを正規化しようとしました");
2924 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
2929 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
2931 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
2932 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
2933 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
2940 const auto inverseLength = 1.0 / length;
2942 dst.
_x = vector.
_x * inverseLength;
2943 dst.
_y = vector.
_y * inverseLength;
2944 dst.
_z = vector.
_z * inverseLength;
2945 dst.
_w = vector.
_w * inverseLength;
2960 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
2964 dst.
_x = vector.
_x * inverseLength;
2965 dst.
_y = vector.
_y * inverseLength;
2966 dst.
_z = vector.
_z * inverseLength;
2967 dst.
_w = vector.
_w * inverseLength;
2988 return vector0.
_x * vector1.
_x + vector0.
_y * vector1.
_y + vector0.
_z * vector1.
_z + vector0.
_w * vector1.
_w;
3000 vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y,
3001 vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z,
3002 vector0.
_w < vector1.
_w ? vector0.
_w : vector1.
_w);
3014 dst.
_x = vector0.
_x < vector1.
_x ? vector0.
_x : vector1.
_x;
3015 dst.
_y = vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y;
3016 dst.
_z = vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z;
3017 dst.
_w = vector0.
_w < vector1.
_w ? vector0.
_w : vector1.
_w;
3031 vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y,
3032 vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z,
3033 vector0.
_w > vector1.
_w ? vector0.
_w : vector1.
_w);
3045 dst.
_x = vector0.
_x > vector1.
_x ? vector0.
_x : vector1.
_x;
3046 dst.
_y = vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y;
3047 dst.
_z = vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z;
3048 dst.
_w = vector0.
_w > vector1.
_w ? vector0.
_w : vector1.
_w;
3063 vector0.
_y + (vector1.
_y - vector0.
_y) * t,
3064 vector0.
_z + (vector1.
_z - vector0.
_z) * t,
3065 vector0.
_w + (vector1.
_w - vector0.
_w) * t);
3078 dst.
_x = vector0.
_x + (vector1.
_x - vector0.
_x) * t;
3079 dst.
_y = vector0.
_y + (vector1.
_y - vector0.
_y) * t;
3080 dst.
_z = vector0.
_z + (vector1.
_z - vector0.
_z) * t;
3081 dst.
_w = vector0.
_w + (vector1.
_w - vector0.
_w) * t;
3138 auto inverseScalar = 1.0 / scalar;
3140 _x *= inverseScalar;
3141 _y *= inverseScalar;
3142 _z *= inverseScalar;
3143 _w *= inverseScalar;
3216#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
3217 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
3220 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
3225 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
3227 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
3228 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
3229 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
3236 const auto inverseLength = 1.0 / length;
3237 _x *= inverseLength;
3238 _y *= inverseLength;
3239 _z *= inverseLength;
3240 _w *= inverseLength;
3253 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
3256 _x *= inverseLength;
3257 _y *= inverseLength;
3258 _z *= inverseLength;
3259 _w *= inverseLength;
3272#undef GX_VECTOR_ZERO_VECTOR_CHECK_VALUE
3274GX_CORE_NAMESPACE_END()
GX_FORCE_INLINE b32 operator==(const GxVector2d &vector0, const GxVector2d &vector1)
Definition GxVectord.inl:283
GX_FORCE_INLINE b32 operator!=(const GxVector2d &vector0, const GxVector2d &vector1)
Definition GxVectord.inl:294
GX_FORCE_INLINE const GxVector2d operator-(const GxVector2d &vector, f64 scalar)
Definition GxVectord.inl:187
GX_FORCE_INLINE const GxVector2d operator+(const GxVector2d &vector, f64 scalar)
Definition GxVectord.inl:175
GX_FORCE_INLINE const GxVector2d operator/(const GxVector2d &vector, f64 scalar)
Definition GxVectord.inl:223
GX_FORCE_INLINE const GxVector2d operator*(const GxVector2d &vector, f64 scalar)
Definition GxVectord.inl:199
static GX_FORCE_INLINE T getClamp(const T value, const T min, const T max)
最小値・最大値で切り落とす
Definition GxMath.h:170
static GX_FORCE_INLINE f32 getCos(const f32 radian)
余弦を取得(f32)
Definition GxMath.h:212
static GX_FORCE_INLINE f32 getACos(const f32 value)
逆余弦を取得(f32)
Definition GxMath.h:233
static GX_FORCE_INLINE f32 getATan2(const f32 valueY, const f32 valueX)
逆正接を取得(f32)
Definition GxMath.h:247
static GX_FORCE_INLINE f32 getSqrt(const f32 value)
平方根を取得(f32)
Definition GxMath.h:259
色(HDR)
Definition GxColor.h:241
2次元浮動小数点数(倍精度)クラス
Definition GxStruct.h:207
3次元浮動小数点数(倍精度)クラス
Definition GxStruct.h:276
4次元浮動小数点数(倍精度)クラス
Definition GxStruct.h:338
座標
Definition GxStruct.h:867
2次元ベクトル(倍精度)
Definition GxVectord.h:25
static GX_FORCE_INLINE GxVector2d getMaximum(const GxVector2d &vector0, const GxVector2d &vector1)
要素毎に最大値を選択
Definition GxVectord.inl:717
GX_FORCE_INLINE const GxVector2d & mulVector(const GxVector2d &vector)
ベクトル乗算
Definition GxVectord.inl:852
static GX_FORCE_INLINE f64 getDot(const GxVector2d &vector0, const GxVector2d &vector1)
内積を取得
Definition GxVectord.inl:648
GX_FORCE_INLINE void setLength(f64 length)
長さを設定
Definition GxVectord.inl:350
static GX_FORCE_INLINE const GxVector2d & getDivScalar(GxVector2d &dst, const GxVector2d &vector, f64 scalar)
スカラ除算を取得
Definition GxVectord.inl:508
static GX_FORCE_INLINE const GxVector2d & getAddVector(GxVector2d &dst, const GxVector2d &vector0, const GxVector2d &vector1)
ベクトル加算を取得
Definition GxVectord.inl:525
GX_FORCE_INLINE const GxVector2d & normalize(void)
正規化する
Definition GxVectord.inl:877
static GX_FORCE_INLINE const GxVector2d & getDivVector(GxVector2d &dst, const GxVector2d &vector0, const GxVector2d &vector1)
ベクトル除算を取得
Definition GxVectord.inl:570
static GX_FORCE_INLINE const GxVector2d & getAddScalar(GxVector2d &dst, const GxVector2d &vector, f64 scalar)
スカラ加算を取得
Definition GxVectord.inl:463
GxVector2d(void)
デフォルトコンストラクタ
Definition GxVectord.h:55
static GX_FORCE_INLINE const GxVector2d & getMulScalar(GxVector2d &dst, const GxVector2d &vector, f64 scalar)
スカラ乗算を取得
Definition GxVectord.inl:493
GX_FORCE_INLINE const GxVector2d & divScalar(f64 scalar)
スカラ除算
Definition GxVectord.inl:811
GX_FORCE_INLINE const GxVector2d & normalizeEx(void)
正規化する(長さ0に対応)
Definition GxVectord.inl:913
static GX_FORCE_INLINE GxVector2d getLerp(const GxVector2d &vector0, const GxVector2d &vector1, f64 t)
線形補間
Definition GxVectord.inl:745
GX_FORCE_INLINE const GxVector2d & addVector(const GxVector2d &vector)
ベクトル加算
Definition GxVectord.inl:826
GX_FORCE_INLINE const GxVector2d & subScalar(f64 scalar)
スカラ減算
Definition GxVectord.inl:785
static GX_FORCE_INLINE const GxVector2d & getMulVector(GxVector2d &dst, const GxVector2d &vector0, const GxVector2d &vector1)
ベクトル乗算を取得
Definition GxVectord.inl:555
f64 _y
Y値
Definition GxVectord.h:226
GX_FORCE_INLINE GxVector2d & operator+=(f64 scalar)
スカラ加算代入
Definition GxVectord.inl:86
GX_FORCE_INLINE const GxVector2d & subVector(const GxVector2d &vector)
ベクトル減算
Definition GxVectord.inl:839
f64 _x
X値
Definition GxVectord.h:225
static GX_FORCE_INLINE f64 getAngle(const GxVector2d &vector0, const GxVector2d &vector1)
角度差を取得(符号つき radian)
Definition GxVectord.inl:671
GX_FORCE_INLINE GxVector2d & operator*=(f64 scalar)
スカラ乗算代入
Definition GxVectord.inl:108
GX_FORCE_INLINE GxVector2d & operator=(const GxVector2d &vector)
代入
Definition GxVectord.inl:74
GX_FORCE_INLINE GxVector2d & operator-=(f64 scalar)
スカラ減算代入
Definition GxVectord.inl:97
static const GxVector2d ZERO
(0, 0)
Definition GxVectord.h:36
GX_FORCE_INLINE GxVector2d getNormalizeEx(void) const
正規化ベクトルを取得(長さ0に対応)
Definition GxVectord.inl:440
GX_FORCE_INLINE b32 isZeroVector(void) const
ゼロベクトルかを取得
Definition GxVectord.inl:323
GX_FORCE_INLINE const GxVector2d & mulScalar(f64 scalar)
スカラ乗算
Definition GxVectord.inl:798
GX_FORCE_INLINE f64 getLength(void) const
長さを取得
Definition GxVectord.inl:332
GX_FORCE_INLINE const GxVector2d & addScalar(f64 scalar)
スカラ加算
Definition GxVectord.inl:772
GX_FORCE_INLINE GxVector2d & operator/=(f64 scalar)
スカラ除算代入
Definition GxVectord.inl:119
static GX_FORCE_INLINE GxVector2d getMinimum(const GxVector2d &vector0, const GxVector2d &vector1)
要素毎に最小値を選択
Definition GxVectord.inl:690
GX_FORCE_INLINE const GxVector2d & divVector(const GxVector2d &vector)
ベクトル除算
Definition GxVectord.inl:865
GX_FORCE_INLINE GxVector2d getNormalize(void) const
正規化ベクトルを取得
Definition GxVectord.inl:407
GX_FORCE_INLINE f64 getLengthSquare(void) const
長さの2乗を取得
Definition GxVectord.inl:341
static GX_FORCE_INLINE const GxVector2d & getSubVector(GxVector2d &dst, const GxVector2d &vector0, const GxVector2d &vector1)
ベクトル減算を取得
Definition GxVectord.inl:540
static GX_FORCE_INLINE const GxVector2d & getSubScalar(GxVector2d &dst, const GxVector2d &vector, f64 scalar)
スカラ減算を取得
Definition GxVectord.inl:478
GX_FORCE_INLINE const f64 & operator[](u32 i) const
const配列
Definition GxVectord.inl:304
GX_FORCE_INLINE void setLengthEx(f64 length)
長さを設定(長さ0に対応)
Definition GxVectord.inl:385
static GX_FORCE_INLINE f64 getCross(const GxVector2d &vector0, const GxVector2d &vector1)
外積を取得
Definition GxVectord.inl:659
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
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
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
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
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
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
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
static GX_FORCE_INLINE GxVector3d getCrossVector(const GxVector3d &vector)
直交する単位ベクトルを取得
Definition GxVectord.inl:1757
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
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 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
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
GX_FORCE_INLINE GxVector4d & operator-=(f64 scalar)
スカラ減算代入
Definition GxVectord.inl:2410
GX_FORCE_INLINE void setLength(f64 length)
長さを設定
Definition GxVectord.inl:2664
GX_FORCE_INLINE const f64 & operator[](u32 i) const
const配列
Definition GxVectord.inl:2617
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
GxVector4d(void)
デフォルトコンストラクタ
Definition GxVectord.h:531
GX_FORCE_INLINE const GxVector4d & mulVector(const GxVector4d &vector)
ベクトル乗算
Definition GxVectord.inl:3183
static GX_FORCE_INLINE f64 getDot(const GxVector4d &vector0, const GxVector4d &vector1)
内積を取得
Definition GxVectord.inl:2986
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
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
f64 _w
W値
Definition GxVectord.h:705
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
GX_FORCE_INLINE const GxVector4d & addVector(const GxVector4d &vector)
ベクトル加算
Definition GxVectord.inl:3153
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
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
GX_FORCE_INLINE f64 getLength(void) const
長さを取得
Definition GxVectord.inl:2645
GX_FORCE_INLINE f64 getLengthSquare(void) const
長さの2乗を取得
Definition GxVectord.inl:2654
32bitブーリアン
Definition GxDefine.h:173