12GX_CORE_NAMESPACE_BEGIN()
14#define GX_VECTOR_ZERO_VECTOR_CHECK_VALUE F32_ABS_MIN
55: _x(static_cast<f32>(point._x))
56, _y(static_cast<f32>(point._y))
286 return (vector0.
_x == vector1.
_x) && (vector0.
_y == vector1.
_y);
297 return (vector0.
_x != vector1.
_x) || (vector0.
_y != vector1.
_y);
355#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
356 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < oldLength * oldLength,
"ゼロベクトルに長さを設定しようとしました");
359 if (oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
364 if( oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
366 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
367 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
368 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルに長さを設定しようとしました");
375 const auto scale = length / oldLength;
390 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
412#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
413 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
416 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
421 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
423 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
424 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
425 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
432 const auto inverseLength = 1.0f / length;
445 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
466 dst.
_x = vector.
_x + scalar;
467 dst.
_y = vector.
_y + scalar;
481 dst.
_x = vector.
_x - scalar;
482 dst.
_y = vector.
_y - scalar;
496 dst.
_x = vector.
_x * scalar;
497 dst.
_y = vector.
_y * scalar;
511 auto inverseLength = 1.0f / scalar;
513 dst.
_x = vector.
_x * inverseLength;
514 dst.
_y = vector.
_y * inverseLength;
528 dst.
_x = vector0.
_x + vector1.
_x;
529 dst.
_y = vector0.
_y + vector1.
_y;
543 dst.
_x = vector0.
_x - vector1.
_x;
544 dst.
_y = vector0.
_y - vector1.
_y;
558 dst.
_x = vector0.
_x * vector1.
_x;
559 dst.
_y = vector0.
_y * vector1.
_y;
573 dst.
_x = vector0.
_x / vector1.
_x;
574 dst.
_y = vector0.
_y / vector1.
_y;
589#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
590 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length* length,
"ゼロベクトルを正規化しようとしました");
593 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
598 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
600 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
601 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
602 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
609 const auto inverseLength = 1.0f / length;
611 dst.
_x = vector.
_x * inverseLength;
612 dst.
_y = vector.
_y * inverseLength;
627 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
631 dst.
_x = vector.
_x * inverseLength;
632 dst.
_y = vector.
_y * inverseLength;
651 return vector0.
_x * vector1.
_x + vector0.
_y * vector1.
_y;
662 return vector0.
_x * vector1.
_y - vector0.
_y * vector1.
_x;
694 vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y);
706 dst.
_x = vector0.
_x < vector1.
_x ? vector0.
_x : vector1.
_x;
707 dst.
_y = vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y;
721 vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y);
733 dst.
_x = vector0.
_x > vector1.
_x ? vector0.
_x : vector1.
_x;
734 dst.
_y = vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y;
749 vector0.
_y + (vector1.
_y - vector0.
_y) * t);
762 dst.
_x = vector0.
_x + (vector1.
_x - vector0.
_x) * t;
763 dst.
_y = vector0.
_y + (vector1.
_y - vector0.
_y) * t;
814 auto inverseScalar = 1.0f / scalar;
882#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
883 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
886 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
891 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
893 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
894 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
895 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
902 const auto inverseLength = 1.0f / length;
918 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
978: _x(static_cast<f32>(point._x))
979, _y(static_cast<f32>(point._y))
1235 return (vector0.
_x == vector1.
_x) && (vector0.
_y == vector1.
_y) && (vector0.
_z == vector1.
_z);
1246 return (vector0.
_x != vector1.
_x) || (vector0.
_y != vector1.
_y) || (vector0.
_z != vector1.
_z);
1405#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
1406 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < oldLength * oldLength,
"ゼロベクトルに長さを設定しようとしました");
1409 if (oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
1414 if( oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
1416 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
1417 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
1418 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルに長さを設定しようとしました");
1425 const auto scale = length / oldLength;
1441 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
1465#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
1466 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
1469 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE ) length = 1.0f;
1471 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
1473 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
1474 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
1475 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
1482 const auto inverseLength = 1.0f / length;
1487 _z * inverseLength);
1498 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
1505 _z * inverseLength);
1524 _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0],
1525 _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1],
1526 _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2]);
1537 _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0],
1538 _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1],
1539 _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2]);
1550 _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0],
1551 _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1],
1552 _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2]);
1563 _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0],
1564 _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1],
1565 _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2]);
1575 auto iw = 1.0f / (
_x * matrix.
_m[0][3] +
_y * matrix.
_m[1][3] +
_z * matrix.
_m[2][3] + matrix.
_m[3][3]);
1578 (
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0]) * iw,
1579 (
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1]) * iw,
1580 (
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2]) * iw);
1590 return _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
1600 return _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
1610 return _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0];
1620 return _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0];
1630 return (
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0])
1631 / (
_x * matrix.
_m[0][3] +
_y * matrix.
_m[1][3] +
_z * matrix.
_m[2][3] + matrix.
_m[3][3]);
1641 return _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
1651 return _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
1661 return _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1];
1671 return _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1];
1681 return (
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1])
1682 / (
_x * matrix.
_m[0][3] +
_y * matrix.
_m[1][3] +
_z * matrix.
_m[2][3] + matrix.
_m[3][3]);
1692 return _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
1702 return _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
1712 return _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2];
1722 return _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2];
1732 return (
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2])
1733 / (
_x * matrix.
_m[0][3] +
_y * matrix.
_m[1][3] +
_z * matrix.
_m[2][3] + matrix.
_m[3][3]);
1757 dst.
_x = vector.
_x + scalar;
1758 dst.
_y = vector.
_y + scalar;
1759 dst.
_z = vector.
_z + scalar;
1773 dst.
_x = vector.
_x - scalar;
1774 dst.
_y = vector.
_y - scalar;
1775 dst.
_z = vector.
_z - scalar;
1789 dst.
_x = vector.
_x * scalar;
1790 dst.
_y = vector.
_y * scalar;
1791 dst.
_z = vector.
_z * scalar;
1805 auto inverseScalar = 1.0f / scalar;
1807 dst.
_x = vector.
_x * inverseScalar;
1808 dst.
_y = vector.
_y * inverseScalar;
1809 dst.
_z = vector.
_z * inverseScalar;
1823 dst.
_x = vector0.
_x + vector1.
_x;
1824 dst.
_y = vector0.
_y + vector1.
_y;
1825 dst.
_z = vector0.
_z + vector1.
_z;
1839 dst.
_x = vector0.
_x - vector1.
_x;
1840 dst.
_y = vector0.
_y - vector1.
_y;
1841 dst.
_z = vector0.
_z - vector1.
_z;
1855 dst.
_x = vector0.
_x * vector1.
_x;
1856 dst.
_y = vector0.
_y * vector1.
_y;
1857 dst.
_z = vector0.
_z * vector1.
_z;
1871 dst.
_x = vector0.
_x / vector1.
_x;
1872 dst.
_y = vector0.
_y / vector1.
_y;
1873 dst.
_z = vector0.
_z / vector1.
_z;
1888#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
1889 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
1892 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
1897 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
1899 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
1900 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
1901 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
1908 const auto inverseLength = 1.0f / length;
1910 dst.
_x = vector.
_x * inverseLength;
1911 dst.
_y = vector.
_y * inverseLength;
1912 dst.
_z = vector.
_z * inverseLength;
1927 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
1931 dst.
_x = vector.
_x * inverseLength;
1932 dst.
_y = vector.
_y * inverseLength;
1933 dst.
_z = vector.
_z * inverseLength;
1954 dst.
_x = vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
1955 dst.
_y = vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
1956 dst.
_z = vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
1970 dst.
_x = vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
1971 dst.
_y = vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
1972 dst.
_z = vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
1986 dst.
_x = vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
1987 dst.
_y = vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
1988 dst.
_z = vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
2002 dst.
_x = vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
2003 dst.
_y = vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
2004 dst.
_z = vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
2018 dst.
_x = vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0];
2019 dst.
_y = vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1];
2020 dst.
_z = vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2];
2034 dst.
_x = vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0];
2035 dst.
_y = vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1];
2036 dst.
_z = vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2];
2050 f32 inverseW = 1.0f / (vector.
_x * matrix.
_m[0][3] + vector.
_y * matrix.
_m[1][3] + vector.
_z * matrix.
_m[2][3] + matrix.
_m[3][3]);
2052 dst.
_x = (vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0] + matrix.
_m[3][0]) * inverseW;
2053 dst.
_y = (vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1] + matrix.
_m[3][1]) * inverseW;
2054 dst.
_z = (vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2] + matrix.
_m[3][2]) * inverseW;
2085 return vector0.
_x * vector1.
_x + vector0.
_y * vector1.
_y + vector0.
_z * vector1.
_z;
2097 vector0.
_z * vector1.
_x - vector0.
_x * vector1.
_z,
2098 vector0.
_x * vector1.
_y - vector0.
_y * vector1.
_x);
2110 dst.
_x = vector0.
_y * vector1.
_z - vector0.
_z * vector1.
_y;
2111 dst.
_y = vector0.
_z * vector1.
_x - vector0.
_x * vector1.
_z;
2112 dst.
_z = vector0.
_x * vector1.
_y - vector0.
_y * vector1.
_x;
2128 temporary.
_x = -temporary.
_x;
2149 temporary.
_x = -temporary.
_x;
2176 const auto x = vector0.
_x - vector1.
_x;
2177 const auto y = vector0.
_y - vector1.
_y;
2178 const auto z = vector0.
_z - vector1.
_z;
2180 return x * x + y * y + z * z;
2194 if( denominator <= FLT_EPSILON )
2215 if( denominator <= FLT_EPSILON )
2223 const auto signe =
getDot(up,
getCross(vector2, vector0, vector1));
2237 vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y,
2238 vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z);
2250 dst.
_x = vector0.
_x < vector1.
_x ? vector0.
_x : vector1.
_x;
2251 dst.
_y = vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y;
2252 dst.
_z = vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z;
2266 vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y,
2267 vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z);
2279 dst.
_x = vector0.
_x > vector1.
_x ? vector0.
_x : vector1.
_x;
2280 dst.
_y = vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y;
2281 dst.
_z = vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z;
2296 vector0.
_y + (vector1.
_y - vector0.
_y) * t,
2297 vector0.
_z + (vector1.
_z - vector0.
_z) * t);
2310 dst.
_x = vector0.
_x + (vector1.
_x - vector0.
_x) * t;
2311 dst.
_y = vector0.
_y + (vector1.
_y - vector0.
_y) * t;
2312 dst.
_z = vector0.
_z + (vector1.
_z - vector0.
_z) * t;
2329 GxVector3 v0(endPosition - startPosition);
2330 GxVector3 v1(checkPosition - startPosition);
2335 if( denominator <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
2340 return numerator / denominator;
2353 auto t =
getLineParam(position, linePosition0, linePosition1);
2367 auto t =
getLineParam(position, linePosition0, linePosition1);
2382 auto t =
getLineParam(position, startPosition, endPosition);
2397 auto t =
getLineParam(position, startPosition, endPosition);
2417 if( cosRadian <= 0.f )
2428 if( cosRadian <= 0.f &&
2452 if( cosRadian < 0.f )
2463 if( cosRadian < 0.f &&
2522 auto inverseScalar = 1.0f / scalar;
2524 _x *= inverseScalar;
2525 _y *= inverseScalar;
2526 _z *= inverseScalar;
2595#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
2596 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
2599 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
2604 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
2606 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
2607 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
2608 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
2615 const auto inverseLength = 1.0f / length;
2617 _x *= inverseLength;
2618 _y *= inverseLength;
2619 _z *= inverseLength;
2632 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
2636 _x *= inverseLength;
2637 _y *= inverseLength;
2638 _z *= inverseLength;
2657 const auto x =
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
2658 const auto y =
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
2659 const auto z =
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
2675 const auto x =
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
2676 const auto y =
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
2677 const auto z =
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
2693 const auto x =
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0];
2694 const auto y =
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1];
2695 const auto z =
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2];
2711 const auto x =
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0];
2712 const auto y =
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1];
2713 const auto z =
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2];
2729 const auto x =
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] + matrix.
_m[3][0];
2730 const auto y =
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] + matrix.
_m[3][1];
2731 const auto z =
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] + matrix.
_m[3][2];
2732 const auto inverseW = 1.0f / (
_x * matrix.
_m[0][3] +
_y * matrix.
_m[1][3] +
_z * matrix.
_m[2][3] + matrix.
_m[3][3]);
3071 return (vector0.
_x == vector1.
_x) && (vector0.
_y == vector1.
_y) && (vector0.
_z == vector1.
_z) && (vector0.
_w == vector1.
_w);
3082 return (vector0.
_x != vector1.
_x) || (vector0.
_y != vector1.
_y) || (vector0.
_z != vector1.
_z) || (vector0.
_w != vector1.
_w);
3141#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
3142 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < oldLength * oldLength,
"ゼロベクトルに長さを設定しようとしました");
3145 if (oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
3150 if( oldLength * oldLength <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
3152 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
3153 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
3154 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルに長さを設定しようとしました");
3161 const auto scale = length / oldLength;
3178 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
3204#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
3205 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
3208 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
3213 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
3215 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
3216 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
3217 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
3224 const auto inverseLength = 1.0f / length;
3226 return GxVector4(
_x * inverseLength,
_y * inverseLength,
_z * inverseLength,
_w * inverseLength);
3237 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
3240 return GxVector4(
_x * inverseLength,
_y * inverseLength,
_z * inverseLength,
_w * inverseLength);
3253 _x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] +
_w * matrix.
_m[3][0],
3254 _x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] +
_w * matrix.
_m[3][1],
3255 _x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] +
_w * matrix.
_m[3][2],
3256 _x * matrix.
_m[0][3] +
_y * matrix.
_m[1][3] +
_z * matrix.
_m[2][3] +
_w * matrix.
_m[3][3]);
3268 dst.
_x = vector.
_x + scalar;
3269 dst.
_y = vector.
_y + scalar;
3270 dst.
_z = vector.
_z + scalar;
3271 dst.
_w = vector.
_w + scalar;
3285 dst.
_x = vector.
_x - scalar;
3286 dst.
_y = vector.
_y - scalar;
3287 dst.
_z = vector.
_z - scalar;
3288 dst.
_w = vector.
_w - scalar;
3302 dst.
_x = vector.
_x * scalar;
3303 dst.
_y = vector.
_y * scalar;
3304 dst.
_z = vector.
_z * scalar;
3305 dst.
_w = vector.
_w * scalar;
3319 auto inverseScalar = 1.0f / scalar;
3321 dst.
_x = vector.
_x * inverseScalar;
3322 dst.
_y = vector.
_y * inverseScalar;
3323 dst.
_z = vector.
_z * inverseScalar;
3324 dst.
_w = vector.
_w * inverseScalar;
3338 dst.
_x = vector0.
_x + vector1.
_x;
3339 dst.
_y = vector0.
_y + vector1.
_y;
3340 dst.
_z = vector0.
_z + vector1.
_z;
3341 dst.
_w = vector0.
_w + vector1.
_w;
3355 dst.
_x = vector0.
_x - vector1.
_x;
3356 dst.
_y = vector0.
_y - vector1.
_y;
3357 dst.
_z = vector0.
_z - vector1.
_z;
3358 dst.
_w = vector0.
_w - vector1.
_w;
3372 dst.
_x = vector0.
_x * vector1.
_x;
3373 dst.
_y = vector0.
_y * vector1.
_y;
3374 dst.
_z = vector0.
_z * vector1.
_z;
3375 dst.
_w = vector0.
_w * vector1.
_w;
3389 dst.
_x = vector0.
_x / vector1.
_x;
3390 dst.
_y = vector0.
_y / vector1.
_y;
3391 dst.
_z = vector0.
_z / vector1.
_z;
3392 dst.
_w = vector0.
_w / vector1.
_w;
3407#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
3408 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length* length,
"ゼロベクトルを正規化しようとしました");
3411 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
3416 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
3418 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
3419 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
3420 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
3427 const auto inverseLength = 1.0f / length;
3429 dst.
_x = vector.
_x * inverseLength;
3430 dst.
_y = vector.
_y * inverseLength;
3431 dst.
_z = vector.
_z * inverseLength;
3432 dst.
_w = vector.
_w * inverseLength;
3447 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
3451 dst.
_x = vector.
_x * inverseLength;
3452 dst.
_y = vector.
_y * inverseLength;
3453 dst.
_z = vector.
_z * inverseLength;
3454 dst.
_w = vector.
_w * inverseLength;
3476 dst.
_x = vector.
_x * matrix.
_m[0][0] + vector.
_y * matrix.
_m[1][0] + vector.
_z * matrix.
_m[2][0] + vector.
_w * matrix.
_m[3][0];
3477 dst.
_y = vector.
_x * matrix.
_m[0][1] + vector.
_y * matrix.
_m[1][1] + vector.
_z * matrix.
_m[2][1] + vector.
_w * matrix.
_m[3][1];
3478 dst.
_z = vector.
_x * matrix.
_m[0][2] + vector.
_y * matrix.
_m[1][2] + vector.
_z * matrix.
_m[2][2] + vector.
_w * matrix.
_m[3][2];
3479 dst.
_w = vector.
_x * matrix.
_m[0][3] + vector.
_y * matrix.
_m[1][3] + vector.
_z * matrix.
_m[2][3] + vector.
_w * matrix.
_m[3][3];
3492 return vector0.
_x * vector1.
_x + vector0.
_y * vector1.
_y + vector0.
_z * vector1.
_z + vector0.
_w * vector1.
_w;
3504 vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y,
3505 vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z,
3506 vector0.
_w < vector1.
_w ? vector0.
_w : vector1.
_w);
3518 dst.
_x = vector0.
_x < vector1.
_x ? vector0.
_x : vector1.
_x;
3519 dst.
_y = vector0.
_y < vector1.
_y ? vector0.
_y : vector1.
_y;
3520 dst.
_z = vector0.
_z < vector1.
_z ? vector0.
_z : vector1.
_z;
3521 dst.
_w = vector0.
_w < vector1.
_w ? vector0.
_w : vector1.
_w;
3535 vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y,
3536 vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z,
3537 vector0.
_w > vector1.
_w ? vector0.
_w : vector1.
_w);
3549 dst.
_x = vector0.
_x > vector1.
_x ? vector0.
_x : vector1.
_x;
3550 dst.
_y = vector0.
_y > vector1.
_y ? vector0.
_y : vector1.
_y;
3551 dst.
_z = vector0.
_z > vector1.
_z ? vector0.
_z : vector1.
_z;
3552 dst.
_w = vector0.
_w > vector1.
_w ? vector0.
_w : vector1.
_w;
3567 vector0.
_y + (vector1.
_y - vector0.
_y) * t,
3568 vector0.
_z + (vector1.
_z - vector0.
_z) * t,
3569 vector0.
_w + (vector1.
_w - vector0.
_w) * t);
3582 dst.
_x = vector0.
_x + (vector1.
_x - vector0.
_x) * t;
3583 dst.
_y = vector0.
_y + (vector1.
_y - vector0.
_y) * t;
3584 dst.
_z = vector0.
_z + (vector1.
_z - vector0.
_z) * t;
3585 dst.
_w = vector0.
_w + (vector1.
_w - vector0.
_w) * t;
3642 auto inverseScalar = 1.0f / scalar;
3644 _x *= inverseScalar;
3645 _y *= inverseScalar;
3646 _z *= inverseScalar;
3647 _w *= inverseScalar;
3720#if GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
3721 GX_ERROR(GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < length * length,
"ゼロベクトルを正規化しようとしました");
3724 if (length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE)
3729 if( length * length <= GX_VECTOR_ZERO_VECTOR_CHECK_VALUE )
3731 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"%s(%d)", __FILE__, __LINE__);
3732 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"[%s]", __FUNCTION__);
3733 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"ゼロベクトルを正規化しようとしました");
3740 const auto inverseLength = 1.0f / length;
3741 _x *= inverseLength;
3742 _y *= inverseLength;
3743 _z *= inverseLength;
3744 _w *= inverseLength;
3757 if( GX_VECTOR_ZERO_VECTOR_CHECK_VALUE < lengthSquare )
3760 _x *= inverseLength;
3761 _y *= inverseLength;
3762 _z *= inverseLength;
3763 _w *= inverseLength;
3783 const auto x =
_x * matrix.
_m[0][0] +
_y * matrix.
_m[1][0] +
_z * matrix.
_m[2][0] +
_w * matrix.
_m[3][0];
3784 const auto y =
_x * matrix.
_m[0][1] +
_y * matrix.
_m[1][1] +
_z * matrix.
_m[2][1] +
_w * matrix.
_m[3][1];
3785 const auto z =
_x * matrix.
_m[0][2] +
_y * matrix.
_m[1][2] +
_z * matrix.
_m[2][2] +
_w * matrix.
_m[3][2];
3786 const auto w =
_x * matrix.
_m[0][3] +
_y * matrix.
_m[1][3] +
_z * matrix.
_m[2][3] +
_w * matrix.
_m[3][3];
3796#undef GX_VECTOR_ZERO_VECTOR_CHECK_VALUE
3798GX_CORE_NAMESPACE_END()
GX_FORCE_INLINE b32 operator!=(const GxVector2 &vector0, const GxVector2 &vector1)
Definition GxVector.inl:295
GX_FORCE_INLINE const GxVector2 operator/(const GxVector2 &vector, f32 scalar)
Definition GxVector.inl:224
GX_FORCE_INLINE b32 operator==(const GxVector2 &vector0, const GxVector2 &vector1)
Definition GxVector.inl:284
GX_FORCE_INLINE const GxVector2 operator*(const GxVector2 &vector, f32 scalar)
Definition GxVector.inl:200
GX_FORCE_INLINE const GxVector2 operator+(const GxVector2 &vector, f32 scalar)
Definition GxVector.inl:176
GX_FORCE_INLINE const GxVector2 operator-(const GxVector2 &vector, f32 scalar)
Definition GxVector.inl:188
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:22
3次元浮動小数点数クラス
Definition GxStruct.h:91
f32 _y
Y値
Definition GxStruct.h:143
f32 _x
X値
Definition GxStruct.h:142
f32 _z
Z値
Definition GxStruct.h:144
4次元浮動小数点数クラス
Definition GxStruct.h:153
4×4行列(行優先)
Definition GxMatrix.h:607
f32 _m[4][4]
値
Definition GxMatrix.h:864
アフィン変換行列(行優先)
Definition GxMatrix.h:330
f32 _m[4][4]
値
Definition GxMatrix.h:597
座標
Definition GxStruct.h:867
クォータニオン
Definition GxQuaternion.h:19
GX_FORCE_INLINE GxQuaternion getConjugate(void) const
共役クォータニオンを取得
Definition GxQuaternion.inl:385
f32 _x
X値
Definition GxQuaternion.h:272
f32 _y
Y値
Definition GxQuaternion.h:273
f32 _z
Z値
Definition GxQuaternion.h:274
2次元ベクトル
Definition GxVector.h:34
GX_FORCE_INLINE const GxVector2 & normalize(void)
正規化する
Definition GxVector.inl:878
GX_FORCE_INLINE GxVector2 getNormalize(void) const
正規化ベクトルを取得
Definition GxVector.inl:408
static GX_FORCE_INLINE const GxVector2 & getAddScalar(GxVector2 &dst, const GxVector2 &vector, f32 scalar)
スカラ加算を取得
Definition GxVector.inl:464
GX_FORCE_INLINE const GxVector2 & addVector(const GxVector2 &vector)
ベクトル加算
Definition GxVector.inl:827
static GX_FORCE_INLINE GxVector2 getLerp(const GxVector2 &vector0, const GxVector2 &vector1, f32 t)
線形補間
Definition GxVector.inl:746
static GX_FORCE_INLINE f32 getCross(const GxVector2 &vector0, const GxVector2 &vector1)
外積を取得
Definition GxVector.inl:660
static GX_FORCE_INLINE const GxVector2 & getSubScalar(GxVector2 &dst, const GxVector2 &vector, f32 scalar)
スカラ減算を取得
Definition GxVector.inl:479
GX_FORCE_INLINE GxVector2 & operator-=(f32 scalar)
スカラ減算代入
Definition GxVector.inl:98
GX_FORCE_INLINE const GxVector2 & divVector(const GxVector2 &vector)
ベクトル除算
Definition GxVector.inl:866
static GX_FORCE_INLINE GxVector2 getMaximum(const GxVector2 &vector0, const GxVector2 &vector1)
要素毎に最大値を選択
Definition GxVector.inl:718
f32 _y
Y値
Definition GxVector.h:235
GX_FORCE_INLINE const f32 & operator[](u32 i) const
const配列
Definition GxVector.inl:305
GX_FORCE_INLINE f32 getLengthSquare(void) const
長さの2乗を取得
Definition GxVector.inl:342
GX_FORCE_INLINE GxVector2 getNormalizeEx(void) const
正規化ベクトルを取得(長さ0に対応)
Definition GxVector.inl:441
GxVector2(void)
デフォルトコンストラクタ
Definition GxVector.h:64
GX_FORCE_INLINE const GxVector2 & subScalar(f32 scalar)
スカラ減算
Definition GxVector.inl:786
GX_FORCE_INLINE GxVector2 & operator*=(f32 scalar)
スカラ乗算代入
Definition GxVector.inl:109
static const GxVector2 ZERO
(0, 0)
Definition GxVector.h:45
static GX_FORCE_INLINE const GxVector2 & getMulScalar(GxVector2 &dst, const GxVector2 &vector, f32 scalar)
スカラ乗算を取得
Definition GxVector.inl:494
GX_FORCE_INLINE void setLength(f32 length)
長さを設定
Definition GxVector.inl:351
GX_FORCE_INLINE const GxVector2 & addScalar(f32 scalar)
スカラ加算
Definition GxVector.inl:773
static GX_FORCE_INLINE f32 getAngle(const GxVector2 &vector0, const GxVector2 &vector1)
角度差を取得(符号つき radian)
Definition GxVector.inl:672
GX_FORCE_INLINE GxVector2 & operator+=(f32 scalar)
スカラ加算代入
Definition GxVector.inl:87
GX_FORCE_INLINE const GxVector2 & mulVector(const GxVector2 &vector)
ベクトル乗算
Definition GxVector.inl:853
f32 _x
X値
Definition GxVector.h:234
static GX_FORCE_INLINE const GxVector2 & getDivScalar(GxVector2 &dst, const GxVector2 &vector, f32 scalar)
スカラ除算を取得
Definition GxVector.inl:509
GX_FORCE_INLINE f32 getLength(void) const
長さを取得
Definition GxVector.inl:333
GX_FORCE_INLINE b32 isZeroVector(void) const
ゼロベクトルかを取得
Definition GxVector.inl:324
static GX_FORCE_INLINE f32 getDot(const GxVector2 &vector0, const GxVector2 &vector1)
内積を取得
Definition GxVector.inl:649
GX_FORCE_INLINE const GxVector2 & normalizeEx(void)
正規化する(長さ0に対応)
Definition GxVector.inl:914
GX_FORCE_INLINE const GxVector2 & subVector(const GxVector2 &vector)
ベクトル減算
Definition GxVector.inl:840
GX_FORCE_INLINE const GxVector2 & mulScalar(f32 scalar)
スカラ乗算
Definition GxVector.inl:799
GX_FORCE_INLINE GxVector2 & operator=(const GxVector2 &vector)
代入
Definition GxVector.inl:75
static GX_FORCE_INLINE const GxVector2 & getAddVector(GxVector2 &dst, const GxVector2 &vector0, const GxVector2 &vector1)
ベクトル加算を取得
Definition GxVector.inl:526
static GX_FORCE_INLINE const GxVector2 & getMulVector(GxVector2 &dst, const GxVector2 &vector0, const GxVector2 &vector1)
ベクトル乗算を取得
Definition GxVector.inl:556
GX_FORCE_INLINE void setLengthEx(f32 length)
長さを設定(長さ0に対応)
Definition GxVector.inl:386
GX_FORCE_INLINE GxVector2 & operator/=(f32 scalar)
スカラ除算代入
Definition GxVector.inl:120
GX_FORCE_INLINE const GxVector2 & divScalar(f32 scalar)
スカラ除算
Definition GxVector.inl:812
static GX_FORCE_INLINE const GxVector2 & getSubVector(GxVector2 &dst, const GxVector2 &vector0, const GxVector2 &vector1)
ベクトル減算を取得
Definition GxVector.inl:541
static GX_FORCE_INLINE const GxVector2 & getDivVector(GxVector2 &dst, const GxVector2 &vector0, const GxVector2 &vector1)
ベクトル除算を取得
Definition GxVector.inl:571
static GX_FORCE_INLINE GxVector2 getMinimum(const GxVector2 &vector0, const GxVector2 &vector1)
要素毎に最小値を選択
Definition GxVector.inl:691
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
static GX_FORCE_INLINE const GxVector3 & getAddVector(GxVector3 &dst, const GxVector3 &vector0, const GxVector3 &vector1)
ベクトル加算を取得
Definition GxVector.inl:1821
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
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
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
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
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
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 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
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
GX_FORCE_INLINE GxVector3 & operator-=(f32 scalar)
スカラ減算代入
Definition GxVector.inl:1047
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
GX_FORCE_INLINE void setXY(const GxVector3 &vector)
XY要素のベクトルを設定
Definition GxVector.inl:1297
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
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
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
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
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 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
GX_FORCE_INLINE const GxVector4 & normalize(void)
正規化する
Definition GxVector.inl:3716
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
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
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
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 GX_FORCE_INLINE GxVector4 getMaximum(const GxVector4 &vector0, const GxVector4 &vector1)
要素毎に最大値を選択
Definition GxVector.inl:3532
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
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
32bitブーリアン
Definition GxDefine.h:173