이 파일의 문서화 페이지로 가기
45 #define AKVECTORS_PI (3.1415926535897932384626433832795f)
46 #define AKVECTORS_TWOPI (6.283185307179586476925286766559f)
47 #define AKVECTORS_PIOVERTWO (1.5707963267948966192313216916398f)
48 #define AKVECTORS_EPSILON (1.0e-38f) // epsilon value for fast log(0)
97 p.
v[0] =
v[0] - b.
v[0];
98 p.
v[1] =
v[1] - b.
v[1];
99 p.
v[2] =
v[2] - b.
v[2];
100 p.
v[3] =
v[3] - b.
v[3];
146 return !(((*(
AkUInt32*)&in_val) & 0x7fffffff) >= 0x7f800000);
149 static constexpr
AkReal32 POSITIVE_EPSILON = 0.00001f;
166 return !(((*(
AkUInt64*)&in_val) & 0x7fffffffffffffff) >= 0x7ff0000000000000);
169 static constexpr
AkReal64 POSITIVE_EPSILON = 0.000000000001f;
181 template<
typename TFromReal,
typename TToReal>
184 out_to =
static_cast<TToReal
>(in_from);
198 template<
typename TReal>
208 template<
typename TDataType>
225 X(static_cast<TDataType>(0.0)),
226 Y(static_cast<TDataType>(0.0)),
227 Z(static_cast<TDataType>(0.0))
230 T3DVector(TDataType in_x, TDataType in_y, TDataType in_z) :
238 template<
typename TFromDataType>
290 template<
typename TVectorType>
330 X =
static_cast<TDataType
>(0.0);
331 Y =
static_cast<TDataType
>(0.0);
332 Z =
static_cast<TDataType
>(0.0);
339 return X == b.
X &&
Y == b.
Y &&
Z == b.
Z;
344 return X != b.
X ||
Y != b.
Y ||
Z != b.
Z;
349 return X < b.
X &&
Y < b.
Y &&
Z < b.
Z;
354 return X <= b.
X &&
Y <= b.
Y &&
Z <= b.
Z;
359 return X > b.
X &&
Y > b.
Y &&
Z > b.
Z;
364 return X >= b.
X &&
Y >= b.
Y &&
Z >= b.
Z;
378 TDataType oneoverf =
static_cast<TDataType
>(1.0) / f;
423 TDataType oneoverf =
static_cast<TDataType
>(1.0) / f;
510 return fabs(
X - b.
X) <= tolerance && fabs(
Y - b.
Y) <= tolerance && fabs(
Z - b.
Z) <= tolerance;
527 const TDataType azimuth,
528 const TDataType elevation)
544 return (a.
X*b.
Y*c.
Z + a.
Y*b.
Z*c.
X + a.
Z*b.
X*c.
Y) -
545 (a.
Z*b.
Y*c.
X + a.
Y*b.
X*c.
Z + a.
X*b.
Z*c.
Y);
560 v.
X =
static_cast<TDataType
>(0.0); v.
Y =
static_cast<TDataType
>(0.0); v.
Z =
static_cast<TDataType
>(0.0);
569 TDataType oneover_d =
static_cast<TDataType
>(1.0) / d;
575 v.
X =
X * invA.
X +
Y * invB.
X +
Z * invC.
X;
576 v.
Y =
X * invA.
Y +
Y * invB.
Y +
Z * invC.
Y;
577 v.
Z =
X * invA.
Z +
Y * invB.
Z +
Z * invC.
Z;
587 if (l !=
static_cast<TDataType
>(0.0))
595 X =
static_cast<TDataType
>(0.0);
596 Y =
static_cast<TDataType
>(0.0);
597 Z =
static_cast<TDataType
>(0.0);
609 return X*v2.
X +
Y*v2.
Y +
Z*v2.
Z;
623 uxv.
X = u.
Y*v.
Z - u.
Z*v.
Y;
624 uxv.
Y = u.
Z*v.
X - u.
X*v.
Z;
625 uxv.
Z = u.
X*v.
Y - u.
Y*v.
X;
651 abs.
X = (TDataType)fabs(abs.
X);
652 abs.
Y = (TDataType)fabs(abs.
Y);
653 abs.
Z = (TDataType)fabs(abs.
Z);
670 template<
typename TDataType>
676 template<
typename TDataType>
699 template<
typename TDataType>
700 template<
typename TVectorType>
704 v.X =
static_cast<typename TVectorType::data_type
>(X);
705 v.Y =
static_cast<typename TVectorType::data_type
>(Y);
706 v.Z =
static_cast<typename TVectorType::data_type
>(Z);
771 return b.
X ==
X && b.
Y ==
Y;
776 return b.
X !=
X && b.
Y !=
Y;
781 return sqrtf(
X*
X+
Y*
Y);
789 AkReal32 r = sqrtf( in_Cartesian.
X*in_Cartesian.
X + in_Cartesian.
Y*in_Cartesian.
Y + in_Cartesian.
Z*in_Cartesian.
Z);
792 X = atan2f(in_Cartesian.
Y, in_Cartesian.
X);
793 Y = asinf(in_Cartesian.
Z / r);
811 v.
X = 0.0f; v.
Y = 0.0f;
822 v.
X =
X * invA.
X +
Y * invB.
X;
823 v.
Y =
X * invA.
Y +
Y * invB.
Y;
880 const AkReal32 POSITIVE_TEST_EPSILON = 0.00001f;
881 return X >= -POSITIVE_TEST_EPSILON &&
882 Y >= -POSITIVE_TEST_EPSILON;
893 static const int MAX_SIZE = 16;
904 for (
int i = 0; i < MAX_SIZE; i++)
912 for (
int i = 0; i < MAX_SIZE; i++)
954 for (
int i = 0; i < 3; i++)
956 for (
int j = 0; j < 3; j++)
966 return m_Data[column][row];
971 return m_Data[column][row];
985 Add(*
this, *
this, in_rhs);
991 #define ADD(i,j) out_res(i,j) = in_m0(i,j) + in_m1(i,j)
1008 out_mat(0, 0) = in_f; out_mat(0, 1) = 0.f; out_mat(0, 2) = 0.f;
1009 out_mat(1, 0) = 0.f; out_mat(1, 1) = in_f; out_mat(1, 2) = 0.f;
1010 out_mat(2, 0) = 0.f; out_mat(2, 1) = 0.f; out_mat(2, 2) = in_f;
1016 out_mat(0, 0) = 0.f; out_mat(0, 1) = -in_u.
Z; out_mat(0, 2) = in_u.
Y;
1017 out_mat(1, 0) = in_u.
Z; out_mat(1, 1) = 0.f; out_mat(1, 2) = -in_u.
X;
1018 out_mat(2, 0) = -in_u.
Y; out_mat(2, 1) = in_u.
X; out_mat(2, 2) = 0.f;
1023 out_mat(0, 0) = in_v0.
X*in_v1.
X; out_mat(0, 1) = in_v0.
X*in_v1.
Y; out_mat(0, 2) = in_v0.
X*in_v1.
Z;
1024 out_mat(1, 0) = in_v0.
Y*in_v1.
X; out_mat(1, 1) = in_v0.
Y*in_v1.
Y; out_mat(1, 2) = in_v0.
Y*in_v1.
Z;
1025 out_mat(2, 0) = in_v0.
Z*in_v1.
X; out_mat(2, 1) = in_v0.
Z*in_v1.
Y; out_mat(2, 2) = in_v0.
Z*in_v1.
Z;
1030 Rotation(out_mat, sinf(in_angle), cosf(in_angle), in_axis);
1039 outer *= (1.f - in_cos);
1069 AkReal32 trace = in_mat(0,0) + in_mat(1, 1) + in_mat(2, 2);
1076 q.
X = (in_mat(2, 1) - in_mat(1, 2)) * s;
1077 q.
Y = (in_mat(0, 2) - in_mat(2, 0)) * s;
1078 q.
Z = (in_mat(1, 0) - in_mat(0, 1)) * s;
1085 if (in_mat(1, 1) > in_mat(0, 0))
1087 if (in_mat(2, 2) > in_mat(i, i))
1093 AkReal32 s = sqrtf( in_mat(i, i) - in_mat(j, j) - in_mat(k, k) + 1.0f );
1094 AkReal32 t = (s == 0.f) ? 0.f : (0.5f / s);
1099 qt[j] = (in_mat(j, i) + in_mat(i, j)) * t;
1100 qt[k] = (in_mat(k, i) + in_mat(i, k)) * t;
1101 qt[3] = (in_mat(k, j) - in_mat(j, k)) * t;
1127 q.
W = cr * cp * cy + sr * sp * sy;
1128 q.
X = sr * cp * cy - cr * sp * sy;
1129 q.
Y = cr * sp * cy + sr * cp * sy;
1130 q.
Z = cr * cp * sy - sr * sp * cy;
1139 AkReal32 sa = sinf(in_angle / 2.f);
1140 q.
W = cosf(in_angle / 2.f);
1141 q.
X = in_axis.
X * sa;
1142 q.
Y = in_axis.
Y * sa;
1143 q.
Z = in_axis.
Z * sa;
1150 return sqrtf(
W*
W +
X*
X +
Y*
Y +
Z*
Z );
1201 AkReal32 sqrt = sqrtf((1.f + dot) * 2.f);
1217 AkReal32 cosHalfAngle = cosf(in_angle / 2.f);
1219 X = cosHalfAngle*in_axis.
X;
1220 Y = cosHalfAngle*in_axis.
Y;
1221 Z = cosHalfAngle*in_axis.
Z;
1255 u * u.
Dot(in_v) * 2.f
1256 + in_v * (
W *
W - u.
Dot(u))
1257 + u.
Cross(in_v) *
W * 2.0f;
1286 mint(1.175494351e-38F),
1287 maxt(3.402823466e+38F)
1294 mint(1.175494351e-38F),
1295 maxt(3.402823466e+38F)
1339 AkReal32 distsqrd = ((P2 + V2*s) - (P1 + V1*t)).LengthSquared();
1345 #ifdef AKPORTALS_DEBUG
1364 #ifdef AKPORTALS_DEBUG
1400 AKASSERT(in_p1.
X < 100000 && in_p1.
X > -100000);
1401 AKASSERT(in_p1.
Y < 100000 && in_p1.
Y > -100000);
1402 AKASSERT(in_p1.
Z < 100000 && in_p1.
Z > -100000);
1404 AKASSERT(in_p2.
X < 100000 && in_p2.
X > -100000);
1405 AKASSERT(in_p2.
Y < 100000 && in_p2.
Y > -100000);
1406 AKASSERT(in_p2.
Z < 100000 && in_p2.
Z > -100000);
1408 AKASSERT(in_p4.
X < 100000 && in_p4.
X > -100000);
1409 AKASSERT(in_p4.
Y < 100000 && in_p4.
Y > -100000);
1410 AKASSERT(in_p4.
Z < 100000 && in_p4.
Z > -100000);
1420 D = -(N.
X*p1.
X) - (N.
Y*p1.
Y) - (N.
Z*p1.
Z);
1423 #define EPSILON 0.01f
1444 if (dot < EPSILON && dot > -
EPSILON)
1446 intersect = in_Origin;
1451 out_Intersection = p1;
1464 if ((A*ray.
X + B*ray.
Y + C*ray.
Z) == 0.0f)
1467 AkReal32 t = -(A*in_Origin.X + B*in_Origin.Y + C*in_Origin.Z + D) / (A*ray.
X + B*ray.
Y + C*ray.
Z);
1468 intersect =
Ak3DVector(in_Origin.X + ray.
X*t, in_Origin.Y + ray.
Y*t, in_Origin.Z + ray.
Z*t);
1469 out_Intersection = intersect;
1475 AkReal32 t = -(A*in_Origin.X + B*in_Origin.Y + C*in_Origin.Z + D) / (A*ray.
X + B*ray.
Y + C*ray.
Z);
1478 if (t < -EPSILON || t >(rayLength +
EPSILON))
1481 intersect =
Ak3DVector(in_Origin.X + ray.
X*t, in_Origin.Y + ray.
Y*t, in_Origin.Z + ray.
Z*t);
1482 out_Intersection = intersect;
1487 intersect =
Ak3DVector(in_Origin.X + ray.
X*t, in_Origin.Y + ray.
Y*t, in_Origin.Z + ray.
Z*t);
1516 out_Intersection = intersect;
1528 pointToPlane *= distance;
1530 out_B = in_P + pointToPlane;
1554 out_mat[0] = 1 - 2 * N.
X*N.
X; out_mat[1] = -2 * N.
X*N.
Y; out_mat[2] = -2 * N.
X*N.
Z; out_mat[3] = -2 * N.
X*d;
1555 out_mat[0 + 4] = -2 * N.
X*N.
Y; out_mat[1 + 4] = 1 - 2 * N.
Y*N.
Y; out_mat[2 + 4] = -2 * N.
Y*N.
Z; out_mat[3 + 4] = -2 * N.
Y*d;
1556 out_mat[0 + 8] = -2 * N.
X*N.
Z; out_mat[1 + 8] = -2 * N.
Y*N.
Z; out_mat[2 + 8] = 1 - 2 * N.
Z*N.
Z; out_mat[3 + 8] = -2 * N.
Z*d;
1557 out_mat[0 + 12] = 0; out_mat[1 + 12] = 0; out_mat[2 + 12] = 0; out_mat[3 + 12] = 1;
1567 out_Intrs.
count = 0;
1610 point.
Y = (N1.
Z*D2 - N2.
Z*D1) / L.
X;
1611 point.
Z = (N2.
Y*D1 - N1.
Y*D2) / L.
X;
1615 point.
X = (N1.
Z*D2 - N2.
Z*D1) / L.
Y;
1617 point.
Z = (N2.
X*D1 - N1.
X*D2) / L.
Y;
1621 point.
X = (N1.
Y*D2 - N2.
Y*D1) / L.
Z;
1622 point.
Y = (N2.
X*D1 - N1.
X*D2) / L.
Z;
1641 #ifdef AKPORTALS_DEBUG
1665 #ifdef AKPORTALS_DEBUG
1677 if (cpt < 2 || cpt2 < 2)
1679 #ifdef AKPORTALS_DEBUG
1691 #ifdef AKPORTALS_DEBUG
1708 out_Intrs.
points[0] = minPoint;
1709 out_Intrs.
points[1] = maxPoint;
1710 out_Intrs.
count = 2;
1759 template<
typename TReal>
1797 return in_Point >=
m_Min && in_Point <=
m_Max;
1851 AKASSERT(fabs(in_Front.
Dot(in_Up) - 0.f) < 0.001);
1853 m_Center = in_center;
1854 m_Extent = in_extent;
1858 m_X = m_Z.
Cross(m_Y);
1864 return fabs(pt.
Dot(m_X)) <= m_Extent.
X && fabs(pt.
Dot(m_Y)) <= m_Extent.
Y && fabs(pt.
Dot(m_Z)) <= m_Extent.
Z;
1881 return size.
X * size.
Y * size.
Z;
1886 const AkBox& B)
const
1889 const AkBox& A = *
this;
1920 AkReal32 right = dpax + dpay + dpaz + dpbx + dpby + dpbz;
1922 return left > right;
1928 out_aabb.
Update(m_Center + x);
1929 out_aabb.
Update(m_Center - x);
1931 out_aabb.
Update(m_Center + y);
1932 out_aabb.
Update(m_Center - y);
1934 out_aabb.
Update(m_Center + Z);
1935 out_aabb.
Update(m_Center - Z);
AkMatrix3x3 & operator/=(const AkReal32 f)
AkForceInline T3DVector & operator*=(const TDataType f)
AkForceInline AkQuaternion & Normalize()
T3DVector< AkReal32 > Ak3DVector
bool FindIntersectionPoints(const AkPlane &in_PlaneB, AkIntersectionPoints &out_Intrs) const
T3DVector(const AkVector &in_vector)
AkReal32 DistPoint_to_Plane(Ak3DVector in_P, Ak3DVector &out_B) const
T3DVector(TDataType in_x, TDataType in_y, TDataType in_z)
AkForceInline T3DVector Abs() const
static AkReal64 ACos(AkReal64 in_value)
AkForceInline bool operator==(const T3DVector &b) const
AkForceInline bool IsWithin(const TBoundingBox &in_BB) const
AkForceInline Ak2DVector operator=(const Ak2DVector &b)
TBoundingBox< AkReal32 > AkBoundingBox
T3DVector< AkReal64 > Ak3DVector64
Ak3DVector PointAt(AkReal32 t) const
bool Intersect(Ak3DVector A, Ak3DVector B)
Ak4DVector operator-(const Ak4DVector &b) const
bool SeparatingAxisExists(const Ak3DVector &L, const AkBox &B) const
AkSafeConversion TTypeConverter
bool IsPointInBox(const Ak3DVector &in_Point) const
static AkReal64 Cos(AkReal64 in_value)
static bool IsFinite(AkReal64 in_val)
AkForceInline AkQuaternion Inverse() const
AkForceInline AkQuaternion operator*(const AkQuaternion &Q) const
Quaternion multiplication.
Ak4DVector & operator/=(const AkReal32 f)
Ak3DIntVector(AkInt32 x, AkInt32 y, AkInt32 z)
static AkQuaternion FromRotationMatrix(const AkMatrix3x3 &in_mat)
void SetPlane(Ak3DVector in_p1, Ak3DVector in_p2, Ak3DVector in_p4)
void OutputDebugMsg(const char *in_pszMsg)
Output a debug message on the console (Ansi string)
static AkForceInline void Diagonal(AkMatrix3x3 &out_mat, AkReal32 in_f)
T3DVector(TDataType in_scalar)
AkForceInline bool IsEmpty() const
T3DVector< AkReal32 > Ak3DVector32
static void Rotation(AkMatrix3x3 &out_mat, AkReal32 in_sin, AkReal32 in_cos, const Ak3DVector &in_axis)
AkForceInline bool operator==(const Ak2DVector &b) const
uint8_t AkUInt8
Unsigned 8-bit integer
void UpdateBoundingBox(AkBoundingBox &out_aabb) const
static AkReal64 Sqrt(AkReal64 in_value)
Ak3DVector GetCenter() const
static AkForceInline TDataType Determinant(const T3DVector &a, const T3DVector &b, const T3DVector &c)
float AkReal32
32-bit floating point
Ak2DVector & operator/=(const AkReal32 f)
AkForceInline T3DVector LinearCombination(const T3DVector &A, const T3DVector &B, const T3DVector &C) const
static AkReal32 Sqrt(AkReal32 in_value)
int32_t AkInt32
Signed 32-bit integer
static AkMatrix3x3 FromColumnVectors(const Ak3DVector &in_col0, const Ak3DVector &in_col1, const Ak3DVector &in_col2)
TBoundingBox Intersect(const TBoundingBox &in_BB) const
AkForceInline TDataType DotProduct(const T3DVector &v2) const
AkForceInline T3DVector operator-(const T3DVector &b) const
AkForceInline T3DVector & operator/=(const TDataType f)
AkForceInline T3DVector operator*(const T3DVector v2) const
#define AKVECTORS_PIOVERTWO
AkForceInline bool IsFinite() const
Ak4DVector & operator=(const Ak4DVector &b)
AkForceInline bool operator!=(const Ak2DVector &b) const
AkForceInline void Convert(AkReal64 &out_to, AkReal32 in_from)
AkForceInline bool IsAllPositive() const
AkForceInline AkReal32 Length() const
Ak3DVector GetSide() const
Ak2DVector(AkReal32 x, AkReal32 y)
static AkReal64 Sin(AkReal64 in_value)
AkForceInline AkMatrix3x3 & operator*=(const AkReal32 &in_f)
AkMatrix4x4 & operator=(AkReal32 *in_Data)
void Update(const TVectorType &in_point)
static AkQuaternion FromAngleAndAxis(AkReal32 in_angle, const Ak3DVector &in_axis)
AkForceInline TDataType LengthSquared() const
AkReal32 GetVolume() const
AkForceInline TDataType Dot(const T3DVector &v2) const
AkForceInline bool operator!=(const T3DVector &b) const
Ak2DVector operator-(const Ak2DVector &b) const
#define AKSIMD_GETELEMENT_V4F32(__vName, __num__)
Get the element at index num in vector __vName
AkReal32 m_Data[MAX_SIZE]
AkForceInline T3DVector operator+(const TDataType f) const
AkForceInline T3DVector< TDataType > operator*(const TDataType f, const T3DVector< TDataType > &v)
#define AKASSERT(Condition)
AkForceInline T3DVector operator-(const TDataType f) const
static AkForceInline T3DVector Min(const T3DVector &A, const T3DVector &B)
AkForceInline T3DVector SphericalToCartesian(const TDataType azimuth, const TDataType elevation)
AkForceInline AKSIMD_V4F32 PointV4F32() const
static AkForceInline void OuterProduct(AkMatrix3x3 &out_mat, const Ak3DVector &in_v0, const Ak3DVector &in_v1)
AkForceInline void Convert(TReal &out_to, TReal in_from)
Ak3DVector GetFront() const
AkForceInline T3DVector operator+(const T3DVector &b) const
static AkForceInline void Add(AkMatrix3x3 &out_res, const AkMatrix3x3 &in_m0, const AkMatrix3x3 &in_m1)
AkMatrix4x4 & operator/=(const AkReal32 f)
TBoundingBox< AkReal64 > AkBoundingBox64
AkForceInline Ak3DVector UnrotateVector(const Ak3DVector32 &in_v) const
AkForceInline AkReal32 & operator()(const AkUInt32 row, const AkUInt32 column)
AkQuaternion(AkReal32 in_angle, const Ak3DVector &in_axis)
AkForceInline T3DVector< TDataType > operator/(const TDataType f, const T3DVector< TDataType > &v)
AkLine(Ak3DVector in_L, Ak3DVector in_P)
static AkQuaternion FromEulers(AkReal32 in_x, AkReal32 in_y, AkReal32 in_z)
double AkReal64
64-bit floating point
static AkForceInline void CrossProductMatrix(AkMatrix3x3 &out_mat, const Ak3DVector &in_u)
bool DoesRayIntersect(const Ak3DVector &in_Origin, const Ak3DVector &in_Destination, Ak3DVector &out_Intersection) const
AkForceInline Ak3DVector32 operator*(const Ak3DVector32 &in_v) const
AkForceInline bool operator<(const T3DVector &b) const
static AkReal32 Cos(AkReal32 in_value)
AkForceInline Ak2DVector NormalizeSpherical() const
AkForceInline bool IsWithin(const TVectorType &in_Point) const
uint64_t AkUInt64
Unsigned 64-bit integer
AkForceInline void NormalizeSpherical()
static AkForceInline void Rotation(AkMatrix3x3 &out_mat, AkReal32 in_angle, const Ak3DVector &in_axis)
#define AKVECTORS_EPSILON
AkForceInline T3DVector Rotate180X_90Y() const
static AkReal32 Sin(AkReal32 in_value)
void Init(const Ak3DVector &in_center, const Ak3DVector &in_extent, const Ak3DVector &in_Front, const Ak3DVector &in_Up)
AkForceInline AkMatrix3x3 & operator+=(const AkMatrix3x3 &in_rhs)
AkForceInline bool IsValid() const
AkForceInline const AkReal32 & operator()(const AkUInt32 row, const AkUInt32 column) const
AkForceInline bool operator>=(const T3DVector &b) const
AkForceInline T3DVector operator/(const TDataType f) const
3D 64-bit vector. Intended as storage for world positions of sounds and objects, benefiting from 64-b...
AkForceInline Ak2DVector & CartesianToSpherical(const Ak3DVector &in_Cartesian)
AkPlane(Ak3DVector in_p1, Ak3DVector in_p2, Ak3DVector in_p4)
uint32_t AkUInt32
Unsigned 32-bit integer
AkQuaternion(const Ak3DVector &in_v0, const Ak3DVector &in_v1)
static AkReal32 ACos(AkReal32 in_value)
AkForceInline T3DVector operator/(const T3DVector in_rhs) const
3D vector for some operations in 3D space. Typically intended only for localized calculations due to ...
Ak3DVector GetSize() const
T3DVector(const AKSIMD_V4F32 &in_v4f32)
AkForceInline bool IsAllPositive() const
AkForceInline TDataType HorizontalMax() const
AkForceInline void Convert(TToReal &out_to, TFromReal in_from)
AkForceInline TDataType L2_Norm() const
AkForceInline AkReal32 Length() const
AkForceInline bool Equals(const T3DVector &b, const TDataType tolerance=static_cast< TDataType >(0.0)) const
AkForceInline T3DVector operator*(const TDataType f) const
static AkForceInline T3DVector Max(const T3DVector &A, const T3DVector &B)
void SetReflection(AkReal32 *out_mat) const
AkForceInline bool operator<=(const T3DVector &b) const
AkForceInline Ak3DVector operator*(const Ak3DVector &in_rhs) const
Ak4DVector(const AkVector &b)
AkForceInline T3DVector & Normalize()
Ak2DVector & operator*=(const AkReal32 f)
AkForceInline Ak3DVector RotateVector(const Ak3DVector32 &in_v) const
T3DVector(const T3DVector< TFromDataType > &in_vector)
AkForceInline T3DVector Cross(const T3DVector &v) const
AkForceInline Ak2DVector operator=(const AkSphericalCoord &b)
AkForceInline bool operator>(const T3DVector b) const
AkForceInline TDataType HorizontalMin() const
AkForceInline Ak2DVector LinearCombination(const Ak2DVector &A, const Ak2DVector &B) const
static bool IsFinite(AkReal32 in_val)
AkQuaternion(AkReal32 in_W, AkReal32 in_X, AkReal32 in_Y, AkReal32 in_Z)
AkForceInline TDataType Length() const
T3DVector(const AkVector64 &in_vector)
AkForceInline AKSIMD_V4F32 VectorV4F32() const
TBoundingBox(const TVectorType &in_min, const TVectorType &in_max)
지원이 필요하신가요?
질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!
지원 페이지를 방문해 주세요
작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요