12 #include "ai_constants.h"
51 AtPoint operator+(
float f)
const
85 AtPoint operator-(
float f)
const
128 AtPoint operator*(
float f)
const
162 AtPoint operator/(
float f)
const
165 float inv = 1.0f / f;
174 float inv = 1.0f / f;
181 bool operator==(
const AtPoint& p)
const
183 return (x == p.x && y == p.y && z == p.z);
186 bool operator!=(
const AtPoint& p)
const
188 return !(*
this == p);
199 float& operator[](
unsigned int i)
204 const float& operator[](
unsigned int i)
const
356 float inv = 1.0f / f;
364 float inv = 1.0f / f;
370 bool operator==(
const AtPoint2& p)
const
372 return (x == p.x && y == p.y);
375 bool operator!=(
const AtPoint2& p)
const
377 return !(*
this == p);
387 float& operator[](
unsigned int i)
392 const float& operator[](
unsigned int i)
const
463 return v1.x * v2.x + v1.y * v2.y;
471 return sqrtf(v1.x * v1.x + v1.y * v1.y);
479 return sqrtf(
SQR(p1.x-p2.x) +
SQR(p1.y - p2.y));
489 out.x =
LERP(t, lo.x, hi.x);
490 out.y =
LERP(t, lo.y, hi.y);
500 out.x =
CLAMP(in.x, lo, hi);
501 out.y =
CLAMP(in.y, lo, hi);
518 return sqrtf(a.x*a.x + a.y*a.y + a.z*a.z);
526 return a.x*b.x + a.y*b.y + a.z*b.z;
534 return sqrtf(
SQR(a.x-b.x) +
SQR(a.y-b.y) +
SQR(a.z-b.z));
542 return SQR(a.x-b.x) +
SQR(a.y-b.y) +
SQR(a.z-b.z);
559 out.x = a.y * b.z - a.z * b.y;
560 out.y = a.z * b.x - a.x * b.z;
561 out.z = a.x * b.y - a.y * b.x;
587 out.x =
LERP(t, lo.x, hi.x);
588 out.y =
LERP(t, lo.y, hi.y);
589 out.z =
LERP(t, lo.z, hi.z);
599 out.x =
CLAMP(in.x, lo, hi);
600 out.y =
CLAMP(in.y, lo, hi);
601 out.z =
CLAMP(in.z, lo, hi);
611 out.x =
MIN(a.x, b.x);
612 out.y =
MIN(a.y, b.y);
613 out.z =
MIN(a.z, b.z);
623 out.x =
MAX(a.x, b.x);
624 out.y =
MAX(a.y, b.y);
625 out.z =
MAX(a.z, b.z);
643 float c = 1 - (a + b);
644 return c*p0 + a*p1 + b*p2;
657 return (a.x==b.x) && (a.y==b.y) && (a.z==b.z);
665 return ABS(a.x) < epsilon &&
ABS(a.y) < epsilon &&
ABS(a.z) < epsilon;
681 a = u * a.x + v * a.y + w * a.z;
687 inline void AiBerpUV(
float a,
float b,
float u0,
float v0,
float u1,
float v1,
float u2,
float v2,
float* u,
float* v)
689 float c = 1.0f - (a + b);
690 *u = c * u0 + a * u1 + b * u2;
691 *v = c * v0 + a * v1 + b * v2;
738 vout.x = v1.x + v2.x;
739 vout.y = v1.y + v2.y;
740 vout.z = v1.z + v2.z;
741 vout.w = v1.w + v2.w;
749 vout.x = v1.x - v2.x;
750 vout.y = v1.y - v2.y;
751 vout.z = v1.z - v2.z;
752 vout.w = v1.w - v2.w;
784 float f = 1.0f / vin.w;
862 inline void AiV3Create(
AtVector& vout,
float x,
float y,
float z)
906 vout.x = 1.0f / vin.x;
907 vout.y = 1.0f / vin.y;
908 vout.z = 1.0f / vin.z;
923 pout = (v1 + v2) * 0.5f;
928 pout = o + dir *
AiV3Dot(dir, p - o);
933 pout.x = (float) (origin.x + dir.x * t);
934 pout.y = (float) (origin.y + dir.y * t);
935 pout.z = (float) (origin.z + dir.z * t);
938 #define AiV3isZero AiV3IsSmall // the wrong spelling is deprecated