Go to the documentation of this file.
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++)
935Â m(0, 0) = in_col0.
X;
936Â m(1, 0) = in_col0.
Y;
937Â m(2, 0) = in_col0.
Z;
939Â m(0, 1) = in_col1.
X;
940Â m(1, 1) = in_col1.
Y;
941Â m(2, 1) = in_col1.
Z;
943Â m(0, 2) = in_col2.
X;
944Â m(1, 2) = in_col2.
Y;
945Â m(2, 2) = in_col2.
Z;
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);
1072Â
AkReal32 srt = sqrtf(trace + 1.f);
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);
1206Â
X = cross.
X * invs;
1207Â
Y = cross.
Y * invs;
1208Â
Z = cross.
Z * invs;
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();
1342Â && distsqrd < 0.001
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
1434Â
Ak3DVector ray = in_Destination - in_Origin;
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;
1579Â
if (L.
Length() < 0.001f)
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)
Tell us about your project. We're here to help.
Register your project and we'll help you get started with no strings attached!
Get started with Wwise