3ds Max C++ API Reference
point3.h File Reference
#include "GeomExport.h"
#include "maxheap.h"
#include "gfloat.h"
#include "assert1.h"
#include "point2.h"
#include <cmath>

Classes

class  Point3
 
class  Ray
 

Typedefs

typedef Point3 UVVert
 
typedef Point3 VertColor
 

Functions

float Length (const Point3 &)
 
float FLength (const Point3 &)
 
float LengthSquared (const Point3 &)
 
int MaxComponent (const Point3 &)
 
int MinComponent (const Point3 &)
 
Point3 Normalize (const Point3 &)
 
Point3 FNormalize (const Point3 &)
 
Point3 CrossProd (const Point3 &a, const Point3 &b)
 
__forceinline Point3 operator* (float f, const Point3 &a)
 
__forceinline Point3 operator* (const Point3 &a, float f)
 
__forceinline Point3 operator/ (const Point3 &a, float f)
 
__forceinline Point3 operator+ (const Point3 &a, float f)
 
__forceinline float DotProd (const Point3 &a, const Point3 &b)
 

Typedef Documentation

◆ UVVert

typedef Point3 UVVert

◆ VertColor

typedef Point3 VertColor

Function Documentation

◆ Length()

float Length ( const Point3 v)
inline
Remarks
Returns the 'Length' of the point (vector). This is:

sqrt(v.x*v.x+v.y*v.y+v.z*v.z)
297 {
298  return v.Length();
299 }
float Length() const
Definition: point3.h:281

◆ FLength()

float FLength ( const Point3 v)
inline
Remarks
Returns the 'Length' of the point (vector) using a faster assembly language implementation for square root. This is:

Sqrt(v.x*v.x+v.y*v.y+v.z*v.z)
302 {
303  return v.FLength();
304 }
float FLength() const
Definition: point3.h:286

◆ LengthSquared()

__forceinline float LengthSquared ( const Point3 v)
Remarks
The 'Length' squared of the point. This is v.x*v.x+v.y*v.y+v.z*v.z.
307 {
308  return v.LengthSquared();
309 }
float LengthSquared() const
Definition: point3.h:291

◆ MaxComponent()

int MaxComponent ( const Point3 )
Remarks
Returns the component with the maximum absolute value. 0=x, 1=y, 2=z.

◆ MinComponent()

int MinComponent ( const Point3 )
Remarks
Returns the component with the minimum absolute value. 0=x, 1=y, 2=z.

◆ Normalize()

Point3 Normalize ( const Point3 )
Remarks
Returns a normalized unit vector. This is a Point3 with each component divided by the point Length().

◆ FNormalize()

Point3 FNormalize ( const Point3 )
Remarks
Returns a normalized unit vector using faster assembly language code than that used by Normalize(). This is a Point3 with each component divided by the point Length().

◆ CrossProd()

Point3 CrossProd ( const Point3 a,
const Point3 b 
)
Remarks
This returns the cross product of the specified Point3's (vectors). The cross product of two vectors is a third vector, perpendicular to the plane formed by the two vectors.

◆ operator*() [1/2]

__forceinline Point3 operator* ( float  f,
const Point3 a 
)
Remarks
Returns a Point3 that is the specified Point3 multiplied by the specified float.
395 {
396  return (Point3(a.x * f, a.y * f, a.z * f));
397 }
Definition: point3.h:56
float y
Definition: point3.h:61
float x
Definition: point3.h:60
float z
Definition: point3.h:62

◆ operator*() [2/2]

__forceinline Point3 operator* ( const Point3 a,
float  f 
)
Remarks
Returns a Point3 that is the specified Point3 multiplied by the specified float.
402 {
403  return (Point3(a.x * f, a.y * f, a.z * f));
404 }

◆ operator/()

__forceinline Point3 operator/ ( const Point3 a,
float  f 
)
Remarks
Returns a Point3 that is the specified Point3 divided by the specified float.
409 {
410  DbgAssert(f != 0.0f);
411  float invF = 1.0f / f; // Mimic 2019 behavior
412  return (Point3(a.x * invF, a.y * invF, a.z * invF));
413 }
#define DbgAssert(expr)
Definition: assert1.h:82

◆ operator+()

__forceinline Point3 operator+ ( const Point3 a,
float  f 
)
Remarks
Returns a Point3 that is the specified Point3 with the specified floating point valued added to each component x, y, and z.
418 {
419  return (Point3(a.x + f, a.y + f, a.z + f));
420 }

◆ DotProd()

__forceinline float DotProd ( const Point3 a,
const Point3 b 
)
Remarks
Returns the dot product of two Point3s. This is the sum of each of the components multiplied together, element by element a.x*b.x+a.y*b.y+a.z*b.z

The dot product has the property of equaling the product of the magnitude (length) of the two vector times the cosine of the angle between them.
428 {
429  return (a.x * b.x + a.y * b.y + a.z * b.z);
430 }