|
void | AiV2Create (AtVector2 &vout, float x, float y) |
| Create a 2D vector: vout = (x, y)
|
|
float | AiV2Dot (const AtVector2 &v1, const AtVector2 &v2) |
| Dot product: <v1, v2>
|
|
float | AiV2Length (const AtVector2 &v1) |
| Vector Length: ||v1||.
|
|
float | AiV2Dist (const AtPoint2 &p1, const AtPoint2 &p2) |
| Distance between two points: ||p1-p2||.
|
|
AtVector2 | AiV2Lerp (float t, const AtVector2 &lo, const AtVector2 &hi) |
| 2D vector linear interpolation (t=0 -> result=lo, t=1 -> result=hi)
|
|
AtVector2 | AiV2Clamp (const AtVector2 &in, float lo, float hi) |
| Clamp each vector coordinate to the range [lo,hi].
|
|
|
float | AiV3Length (const AtVector &a) |
| Vector Length: ||a||.
|
|
float | AiV3Dot (const AtVector &a, const AtVector &b) |
| Dot product: <a, b>
|
|
float | AiV3Dist (const AtVector &a, const AtVector &b) |
| Distance between two points: ||a-b||.
|
|
float | AiV3Dist2 (const AtVector &a, const AtVector &b) |
| Squared distance between two points: ||a-b||^2.
|
|
float | AiV3DistPlane (const AtPoint &x, const AtPoint &p, const AtVector &n) |
| Signed distance between point x and a plane defined by point p and normalized vector n.
|
|
AtVector | AiV3Cross (const AtVector &a, const AtVector &b) |
| Cross product: a x b.
|
|
AtVector | AiV3Normalize (const AtVector &a) |
| Normalize a vector: a / ||a||.
|
|
AtVector | AiV3Lerp (float t, const AtVector &lo, const AtVector &hi) |
| 3D vector linear interpolation (t=0 -> result=lo, t=1 -> result=hi)
|
|
AtVector | AiV3Clamp (const AtVector &in, float lo, float hi) |
| Clamp each vector coordinate to the range [lo,hi].
|
|
AtVector | AiV3Min (const AtVector &a, const AtVector &b) |
| Minimum of two vectors, component-wise.
|
|
AtVector | AiV3Max (const AtVector &a, const AtVector &b) |
| Maximum of two vectors, component-wise.
|
|
AtVector | ABS (const AtVector &a) |
| Absolute value of each component.
|
|
AtVector | AiBerpXYZ (float a, float b, const AtVector &p0, const AtVector &p1, const AtVector &p2) |
| Barycentric interpolation of a point inside a triangle.
|
|
AI_API bool | AiV3Exists (const AtVector &a) |
| Check whether a vector has all valid components (not NaN and not infinite)
|
|
bool | AiV3Equal (const AtVector &a, const AtVector &b) |
| Vector equality: a == b.
|
|
bool | AiV3IsSmall (const AtVector &a, float epsilon=AI_EPSILON) |
| Check for a zero vector, within a small tolerance: ||a|| < epsilon.
|
|
bool | AiV3IsZero (const AtVector &a) |
| Check for a zero vector: ||a|| == 0.
|
|
void | AiV3RotateToFrame (AtVector &a, const AtVector &u, const AtVector &v, const AtVector &w) |
| Rotate vector a so that it aligns with frame {u,v,w}.
|
|
void | AiBerpUV (float a, float b, float u0, float v0, float u1, float v1, float u2, float v2, float *u, float *v) |
| Barycentric interpolation of UV coordinates inside a 3D triangle.
|
|
|
void | AiV4Create (AtHPoint &vout, float x, float y, float z, float w) |
| Create a 4D vector: pout = (x, y, z, w)
|
|
void | AiV4CreatePoint (AtHPoint &pout, const AtVector &v) |
| Create a 4D point: pout = (v.x, v.y, v.z, 1)
|
|
void | AiV4CreateVector (AtHPoint &vout, const AtVector &v) |
| Create a 4D vector: vout = (v.x, v.y, v.z, 0)
|
|
void | AiV4Add (AtHPoint &vout, const AtHPoint &v1, const AtHPoint &v2) |
| Add two vectors: vout = v1 + v2.
|
|
void | AiV4Sub (AtHPoint &vout, const AtHPoint &v1, const AtHPoint &v2) |
| Substract two vectors: vout = v1 - v2.
|
|
void | AiV4Scale (AtHPoint &vout, const AtHPoint &vin, float k) |
| Scale a vector by a constant: vout = vin * k.
|
|
void | AiV4Neg (AtHPoint &vout, const AtHPoint &vin) |
| Negate a vector: vout = -vin.
|
|
void | AiV4Project (AtVector &vout, const AtHPoint &vin) |
| Project a homogeneous vector back into 3d: vout = vin.w != 0 ? vin * (1 / vin.w) : (0,0,0)
|
|
|
void | AiV2Add (AtVector2 &out, const AtVector2 &v1, const AtVector2 &v2) |
|
void | AiV2Sub (AtVector2 &out, const AtVector2 &v1, const AtVector2 &v2) |
|
void | AiV2Scale (AtVector2 &out, const AtVector2 &v1, float k) |
|
void | AiV2Lerp (AtVector2 &out, float t, const AtVector2 &lo, const AtVector2 &hi) |
|
void | AiV2Clamp (AtVector2 &out, const AtVector2 &in, float lo, float hi) |
|
void | AiV3Cross (AtVector &out, const AtVector &a, const AtVector &b) |
|
void | AiV3Normalize (AtVector &out, const AtVector &in) |
|
void | AiV3Lerp (AtVector &out, float t, const AtVector &lo, const AtVector &hi) |
|
void | AiV3Min (AtVector &out, const AtVector &a, const AtVector &b) |
|
void | AiV3Max (AtVector &out, const AtVector &a, const AtVector &b) |
|
void | AiV3Clamp (AtVector &out, const AtVector &in, float lo, float hi) |
|
void | AiBerpXYZ (float a, float b, const AtVector &p0, const AtVector &p1, const AtVector &p2, AtVector &out) |
|
void | AiV3Create (AtVector &vout, float x, float y, float z) |
|
void | AiV3Copy (AtVector &vout, const AtVector &vin) |
|
void | AiV3Add (AtVector &vout, const AtVector &v1, const AtVector &v2) |
|
void | AiV3Sub (AtVector &vout, const AtVector &v1, const AtVector &v2) |
|
void | AiV3AddScalar (AtVector &vout, const AtVector &vin, float k) |
|
void | AiV3SubScalar (AtVector &vout, const AtVector &vin, float k) |
|
void | AiV3Scale (AtVector &vout, const AtVector &vin, float k) |
|
void | AiV3Neg (AtVector &vout, const AtVector &vin) |
|
void | AiV3Invert (AtVector &vout, const AtVector &vin) |
|
void | AiV3Mult (AtVector &vout, const AtVector &v1, const AtVector &v2) |
|
void | AiV3Div (AtVector &vout, const AtVector &v1, const AtVector &v2) |
|
void | AiV3Midpoint (AtPoint &pout, const AtVector &v1, const AtVector &v2) |
|
void | AiV3ProjectPointOnLine (AtPoint &pout, const AtPoint &o, const AtVector &dir, const AtPoint &p) |
|
void | AiV3RayPoint (AtPoint &pout, const AtPoint &origin, const AtVector &dir, double t) |
|
#define | AiV3isZero AiV3IsSmall |
|
This module contains vector math types and vector utilities. There are two equivalent definitions of the basic 3D vector type (AtPoint
, and AtVector
).