R3Shapes Package


Description:

The R3Shapes package supports basic 3D geometry classes.

It contains classes representing 3D primitives (such as vectors, points, lines, rays, spans, planes, and halfspaces). It also contains classes for 3D transformations (such as 4x4 matrices, etc.) and higher level 3D shapes (such as triangles, boxes, spheres, cones, etc). The higher level shape classes are derived from an abstract R3Shape class which supports transformations, bounding box queries, drawing, and other abstract geometric functions.

For all pairs of 3D primitives (and many 3D shapes), functions are provided for computing the relationships between them. For instance, there are functions to compute the distance between primitives (R3Distance), check for intersections (R3Intersects), check whether one primitive contains another (R3Contains), compute whether primitives are perpendicular (R3Perpendicular), and check whether primitives are parallel (R3Parallel).


List of Classes:


List of Functions:


Example:

Click this to see a sample program.


R3Affine

Base Classes:

Public Base Classes:

R3Transformation

Member Functions:

Constructor functions:

R3Affine(void);
R3Affine(const R4Matrix& matrix, RNBoolean mirror = 0);

Property functions/operators:

const R4Matrix& Matrix(void) const;
const R4Matrix& InverseMatrix(void) const;
const RNBoolean IsIdentity(void) const;
const RNBoolean IsMirrored(void) const;
const RNBoolean IsAffine(void) const;
const RNBoolean IsIsotropic(void) const;
const RNBoolean HasTranslation(void) const;
const RNBoolean HasScale(void) const;
const RNBoolean HasRotation(void) const;
const RNBoolean HasMirror(void) const;
const R3Affine Inverse(void) const;

Application functions/operators:

void Apply(R3Vector& vector) const;
void Apply(R3Point& point) const;
void Apply(R3Transformation& transformation) const;
void Apply(R3Affine& affine) const;
void ApplyInverse(R3Vector& vector) const;
void ApplyInverse(R3Point& point) const;
void ApplyInverse(R3Transformation& transformation) const;
void ApplyInverse(R3Affine& affine) const;
void ApplyInverseTranspose(R3Vector& vector) const;
void ApplyTranspose(R3Vector& vector) const;

Manipulation functions/operators:

void XMirror(void);
void YMirror(void);
void ZMirror(void);
void Mirror(void);
void XTranslate(RNScalar offset);
void YTranslate(RNScalar offset);
void ZTranslate(RNScalar offset);
void Translate(RNScalar offset);
void Translate(RNAxis axis, RNScalar offset);
void Translate(const R3Vector& offset);
void XScale(RNScalar scale);
void YScale(RNScalar scale);
void ZScale(RNScalar scale);
void Scale(RNScalar scale);
void Scale(RNAxis axis, RNScalar scale);
void Scale(const R3Vector& scale);
void XRotate(RNAngle radians);
void YRotate(RNAngle radians);
void ZRotate(RNAngle radians);
void Rotate(const R3Vector& radians);
void Rotate(RNAxis axis, RNAngle radians);
void Rotate(const R3Vector& vector, RNAngle radians);
void Rotate(const R3Vector& from, const R3Vector& to);
void Transform(const R3Transformation& transformation);
void Transform(const R3Affine& affine);
void InverseTransform(const R3Transformation& transformation);
void InverseTransform(const R3Affine& affine);
void Reset(const R3Transformation& transformation);
void Reset(const R4Matrix& matrix, RNBoolean mirror = 0);

Draw functions/operators:

void Load(void) const;
void Draw(void) const;
void Push(void) const;
void Pop(void) const;


R3Box

Base Classes:

Public Base Classes:

R3Solid

Member Functions:

Constructor functions:

R3Box(void);
R3Box(const R3Box& box);
R3Box(const R3Point& min, const R3Point& max);
R3Box(RNCoord xmin, RNCoord ymin, RNCoord zmin,
RNCoord xmax, RNCoord ymax, RNCoord zmax);

Box property functions/operators:

const RNCoord XMin(void) const;
const RNCoord YMin(void) const;
const RNCoord ZMin(void) const;
const RNCoord XMax(void) const;
const RNCoord YMax(void) const;
const RNCoord ZMax(void) const;
const RNCoord Coord(RNDirection dir, RNDimension dim) const;
const R3Point& Min(void) const;
const R3Point& Max(void) const;
const R3Point Corner(RNOctant octant) const;
const R3Point Corner(RNDirection xdir, RNDirection ydir, RNDirection zdir) const;
const R3Point Centroid(void) const;
const R3Point ClosestPoint(const R3Point& point) const;
const R3Plane Plane(RNSide side) const;
const R3Plane Plane(RNDirection dir, RNDimension dim) const;
const R3Box Side(RNSide side) const;
const R3Box Side(RNDirection dir, RNDimension dim) const;
const R3Box Octant(RNOctant octant) const;
const R3Box Octant(RNDirection xdir, RNDirection ydir, RNDirection zdir) const;
const RNBoolean IsEmpty(void) const;
const RNBoolean IsFinite(void) const;
const int NDimensions(void) const;
const int NDimensionsAlongSide(RNDirection dir, RNDimension dim) const;
const RNBoolean IsSideNull(RNDirection dir, RNDimension dim) const;
const RNBoolean IsSideLinear(RNDirection dir, RNDimension dim) const;
const int NDimensionsAlongAxis(const RNAxis axis) const;
const RNBoolean IsAxisNull(const RNAxis axis) const;
const RNLength XLength(void) const;
const RNLength YLength(void) const;
const RNLength ZLength(void) const;
const RNLength AxisLength(const RNAxis axis) const;
const RNLength DiagonalLength(void) const;
const RNLength XRadius(void) const;
const RNLength YRadius(void) const;
const RNLength ZRadius(void) const;
const RNLength AxisRadius(const RNAxis axis) const;
const RNLength DiagonalRadius(void) const;
const RNCoord XCenter(void) const;
const RNCoord YCenter(void) const;
const RNCoord ZCenter(void) const;
const RNCoord AxisCenter(const RNAxis axis) const;
const RNAxis ShortestAxis(void) const;
const RNAxis LongestAxis(void) const;
const RNLength ShortestAxisLength(void) const;
const RNLength LongestAxisLength(void) const;

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Manipulation functions/operators:

virtual void Empty(void);
virtual void Translate(const R3Vector& vector);
virtual void Union(const R3Point& point);
virtual void Union(const R3Box& box);
virtual void Union(const R3Sphere& sphere);
virtual void Intersect(const R3Box& box);
virtual void Transform(const R3Transformation& transformation);
virtual void Reset(const R3Point& min, const R3Point& max);

Direct point access functions/operators:

const R3Point& operator[](RNDirection dir) const;
R3Point& operator[](RNDirection dir);

Draw functions/operators:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;

Relationship functions/operators:

RNBoolean operator==(const R3Box& box) const;
RNBoolean operator!=(const R3Box& box) const;

Standard shape definitions:

RN_CLASS_TYPE_DECLARATIONS(R3Box);
R3_SHAPE_RELATIONSHIP_DECLARATIONS(R3Box);


R3Circle

Base Classes:

Public Base Classes:

R3Surface

Member Functions:

Constructor functions:

R3Circle(void);
R3Circle(const R3Circle& circle);
R3Circle(const R3Point& center, RNLength radius, const R3Vector& normal);
R3Circle(const R3Point& p1, const R3Point& p2, const R3Point& p3);

Circle property functions/operators:

const R3Point& Center(void) const;
const RNLength Radius(void) const;
const R3Plane& Plane(void) const;
const R3Vector& Normal(void) const;
const RNBoolean IsEmpty(void) const;
const RNBoolean IsFinite(void) const;

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Comparision functions/operators:

RNBoolean operator==(const R3Circle& circle) const;
RNBoolean operator!=(const R3Circle& circle) const;

Manipulation functions/operators:

virtual void Flip(void);
virtual void Reposition(const R3Point& center);
virtual void Translate(const R3Vector& offset);
virtual void Align(const R3Vector& normal);
virtual void Resize(RNScalar radius);
virtual void Transform(const R3Transformation& transformation);
virtual void Reset(const R3Point& center, RNScalar radius, const R3Vector& normal);

Draw functions/operators:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;

Standard shape definitions:

RN_CLASS_TYPE_DECLARATIONS(R3Circle);
R3_SHAPE_RELATIONSHIP_DECLARATIONS(R3Circle);


R3Cone

Base Classes:

Public Base Classes:

R3Solid

Member Functions:

Constructor functions:

R3Cone(void);
R3Cone(const R3Cone& cone);
R3Cone(const R3Span& axis, RNLength radius);
R3Cone(const R3Point& p1, const R3Point& p2, RNLength radius);

Cone propetry functions/operators:

const R3Point& Apex(void) const;
const R3Span& Axis(void) const;
const R3Circle& Base(void) const;
const RNLength Radius(void) const;
const RNLength Height(void) const;
const RNBoolean IsEmpty(void) const;
const RNBoolean IsFinite(void) const;

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Manipulation functions/operators:

virtual void Empty(void);
virtual void Translate(const R3Vector& vector);
virtual void Reposition(const R3Span& span);
virtual void Resize(RNLength radius);
virtual void Transform(const R3Transformation& transformation);

Draw functions/operators:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;

Relationship functions/operators:

RNBoolean operator==(const R3Cone& cone) const;
RNBoolean operator!=(const R3Cone& cone) const;

Standard shape definitions:

RN_CLASS_TYPE_DECLARATIONS(R3Cone);
R3_SHAPE_RELATIONSHIP_DECLARATIONS(R3Cone);


R3CoordSystem

Base Classes:

Public Base Classes:

R3Base

Member Functions:

Constructor functions:

R3CoordSystem(void);
R3CoordSystem(const R3CoordSystem& cs);
R3CoordSystem(const R3Point& origin, const R3Triad& axes);

Property functions/operators:

const R3Point& Origin(void) const;
const R3Triad& Axes(void) const;
const R4Matrix Matrix(void) const;
const R4Matrix InverseMatrix(void) const;
const RNBoolean operator==(const R3CoordSystem& cs) const;
const RNBoolean operator!=(const R3CoordSystem& cs) const;

Manipulation functions/operators:

void Translate(const R3Vector& offset);
void Rotate(RNAxis axis, RNAngle radians);
void Rotate(const R3Vector& axis, RNAngle radians);
void Rotate(const R3Vector& from, const R3Vector& to);
void Mirror(const R3Plane& plane);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void SetOrigin(const R3Point& origin);
void SetAxes(const R3Triad& axes);

Draw functions/operators:

void Draw(void) const;
void Outline(void) const;


R3Cylinder

Base Classes:

Public Base Classes:

R3Solid

Member Functions:

Constructor functions:

R3Cylinder(void);
R3Cylinder(const R3Cylinder& cylinder);
R3Cylinder(const R3Span& axis, RNLength radius);
R3Cylinder(const R3Point& p1, const R3Point& p2, RNLength radius);

Cylinder propetry functions/operators:

const R3Span& Axis(void) const;
const R3Circle& Base(void) const;
const R3Circle& Top(void) const;
const RNLength Radius(void) const;
const RNLength Height(void) const;
const RNBoolean IsEmpty(void) const;
const RNBoolean IsFinite(void) const;

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Manipulation functions/operators:

virtual void Empty(void);
virtual void Translate(const R3Vector& vector);
virtual void Reposition(const R3Span& span);
virtual void Resize(RNLength radius);
virtual void Transform(const R3Transformation& transformation);

Draw functions/operators:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;

Relationship functions/operators:

RNBoolean operator==(const R3Cylinder& cylinder) const;
RNBoolean operator!=(const R3Cylinder& cylinder) const;

Standard shape definitions:

RN_CLASS_TYPE_DECLARATIONS(R3Cylinder);
R3_SHAPE_RELATIONSHIP_DECLARATIONS(R3Cylinder);


R3Halfspace

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R3Halfspace(void);
R3Halfspace(const R3Halfspace& halfspace);
R3Halfspace(RNScalar a, RNScalar b, RNScalar c, RNScalar d);
R3Halfspace(const RNScalar array[4]);
R3Halfspace(const R3Vector& normal, RNScalar d);
R3Halfspace(const R3Point& point, const R3Vector& normal);
R3Halfspace(const R3Point& point, const R3Line& line);
R3Halfspace(const R3Point& point, const R3Vector& vector1, const R3Vector& vector2);
R3Halfspace(const R3Point& point1, const R3Point& point2, const R3Point& point3);
R3Halfspace(const R3Plane& plane, int dummy /* avoid implicit conversion */);

Property functions/operators:

const R3Plane& Plane(void) const;
const R3Vector& Normal(void) const;
const RNBoolean IsZero(void) const;
const RNBoolean operator==(const R3Halfspace& halfspace) const;
const RNBoolean operator!=(const R3Halfspace& halfspace) const;

Manipulation functions/operators:

void Flip(void);
void Mirror(const R3Plane& plane);
void Translate(const R3Vector& vector);
void Reposition(const R3Point& point);
void Align(const R3Vector& vector);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void Reset(const R3Plane& plane);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R3Halfspace operator-(void) const;


R3Line

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R3Line(void);
R3Line(const R3Line& line);
R3Line(const R3Point& point, const R3Vector& vector, RNBoolean normalized = FALSE);
R3Line(const R3Point& point1, const R3Point& point2);
R3Line(RNCoord x1, RNCoord y1, RNCoord z1, RNCoord x2, RNCoord y2, RNCoord z2);

Property functions/operators:

const R3Point& Point(void) const;
const R3Vector& Vector(void) const;
const RNBoolean IsZero(void) const;
const RNBoolean operator==(const R3Line& line) const;
const RNBoolean operator!=(const R3Line& line) const;

Manipulation functions/operators:

void Flip(void);
void Mirror(const R3Plane& plane);
void Translate(const R3Vector& vector);
void Reposition(const R3Point& point);
void Align(const R3Vector& vector, RNBoolean normalized = FALSE);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void Reset(const R3Point& point, const R3Vector& vector, RNBoolean normalized = FALSE);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R3Line operator-(void) const;


R3Plane

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R3Plane(void);
R3Plane(const R3Plane& plane);
R3Plane(RNScalar a, RNScalar b, RNScalar c, RNScalar d);
R3Plane(const RNScalar array[4]);
R3Plane(const R3Vector& normal, RNScalar d);
R3Plane(const R3Point& point, const R3Vector& normal);
R3Plane(const R3Point& point, const R3Line& line);
R3Plane(const R3Point& point, const R3Vector& vector1, const R3Vector& vector2);
R3Plane(const R3Point& point1, const R3Point& point2, const R3Point& point3);
R3Plane(const RNArray& points);

Property functions/operators:

const RNScalar A(void) const;
const RNScalar B(void) const;
const RNScalar C(void) const;
const RNScalar D(void) const;
const RNScalar operator[](int i) const;
const R3Point Point(void) const;
const R3Vector& Normal(void) const;
const RNBoolean IsZero(void) const;
const RNBoolean operator==(const R3Plane& plane) const;
const RNBoolean operator!=(const R3Plane& plane) const;

Manipulation functions/operators:

void Flip(void);
void Mirror(const R3Plane& plane);
void Translate(const R3Vector& vector);
void Reposition(const R3Point& point);
void Align(const R3Vector& normal);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void Reset(const R3Point& point, const R3Vector& normal);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R3Plane operator-(void) const;

Undocumented functions/operators:

RNScalar& operator[](int i);


R3Point

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor/destructor functions:

R3Point(void);
R3Point(const R3Point& point);
R3Point(RNCoord x, RNCoord y, RNCoord z);
R3Point(const RNCoord array[3]);

Property functions/operators:

const RNCoord X(void) const;
const RNCoord Y(void) const;
const RNCoord Z(void) const;
const RNCoord Coord(RNDimension dim) const;
const RNCoord operator[](RNDimension dim) const;
const RNCoord *Coords(void) const;
const RNBoolean IsZero(void) const;
const RNBoolean IsFinite(void) const;
const R3Vector Vector(void) const;
const R3Box BBox(void) const;
const R3Sphere BSphere(void) const;

Relationship functions/operators:

const RNBoolean Collinear(const R3Point& point1, const R3Point& point2) const;
const RNBoolean operator==(const R3Point& point) const;
const RNBoolean operator!=(const R3Point& point) const;

Manipulation functions/operators:

void X(RNCoord x);
void Y(RNCoord y);
void Z(RNCoord z);
void SetCoord(RNDimension dim, RNCoord coord);
void Translate(const R3Vector& vector);
void Project(const R3Line& line);
void Project(const R3Plane& plane);
void Mirror(const R3Plane& plane);
void Rotate(const R3Vector& axis, RNAngle theta);
void Rotate(const R3Line& axis, RNAngle theta);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void Reset(RNCoord x, RNCoord y, RNCoord z);

Draw functions/operators:

void Draw(void) const;

Assignment operators:

R3Point& operator=(const R3Point& point);
R3Point& operator+=(const R3Point& point);
R3Point& operator+=(const R3Vector& vector);
R3Point& operator-=(const R3Vector& vector);
R3Point& operator*=(const RNScalar a);
R3Point& operator/=(const RNScalar a);

Arithmetic operators:

friend R3Point operator-(const R3Point& point);
friend R3Point operator+(const R3Point& point1, const R3Point& point2);
friend R3Point operator+(const R3Point& point, const R3Vector& vector);
friend R3Point operator+(const R3Vector& vector, const R3Point& point);
friend R3Vector operator-(const R3Point& point1, const R3Point& point2);
friend R3Point operator-(const R3Point& point, const R3Vector& vector);
friend R3Point operator*(const R3Point& point, const RNScalar a);
friend R3Point operator*(const RNScalar a, const R3Point& point);
friend R3Point operator/(const R3Point& point, const RNScalar a);

Undocumented functions/operators:

RNCoord& operator[](RNDimension dim);


R3Ray

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R3Ray(void);
R3Ray(const R3Ray& ray);
R3Ray(const R3Point& point, const R3Vector& vector, RNBoolean normalized = FALSE);
R3Ray(const R3Point& point1, const R3Point& point2);
R3Ray(RNCoord x1, RNCoord y1, RNCoord z1, RNCoord x2, RNCoord y2, RNCoord z2);

Property functions/operators:

const R3Point& Start(void) const;
const R3Vector& Vector(void) const;
const R3Line& Line(void) const;
const R3Point Point(RNScalar t) const;
const RNScalar T(const R3Point& point) const;
const RNBoolean IsZero(void) const;
const RNBoolean operator==(const R3Ray& ray) const;
const RNBoolean operator!=(const R3Ray& ray) const;

Manipulation functions/operators:

void Flip(void);
void Mirror(const R3Plane& plane);
void Translate(const R3Vector& vector);
void Reposition(const R3Point& point);
void Align(const R3Vector& vector, RNBoolean normalized = FALSE);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void Reset(const R3Point& point, const R3Vector& vector, RNBoolean normalized = FALSE);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R3Ray operator-(void) const;


R3Shape

Base Classes:

Public Base Classes:

R3Base

Member Functions:

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Manipulation functions/operators:

virtual void Transform(const R3Transformation& transformation);

Draw functions/operations:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;
virtual void Outline(const R3DrawFlags draw_flags = R3_EDGES_DRAW_FLAG) const;


R3Span

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R3Span(void);
R3Span(const R3Span& span);
R3Span(const R3Point& point, const R3Vector& vector);
R3Span(const R3Point& point1, const R3Point& point2);
R3Span(RNCoord x1, RNCoord y1, RNCoord z1, RNCoord x2, RNCoord y2, RNCoord z2);

Property functions/operators:

const R3Point& Start(void) const;
const R3Point& End(void) const;
const R3Vector& Vector(void) const;
const R3Point Point(int k) const;
const R3Point Point(RNScalar t) const;
const R3Point& operator[](int k) const;
const R3Ray& Ray(void) const;
const R3Line& Line(void) const;
const R3Point Midpoint(void) const;
const R3Point Centroid(void) const;
const R3Box BBox(void) const;
const R3Sphere BSphere(void) const;
const RNLength Length(void) const;
const RNScalar T(const R3Point& point) const;
const RNBoolean IsPoint(void) const;
const RNBoolean operator==(const R3Span& span) const;
const RNBoolean operator!=(const R3Span& span) const;

Manipulation functions/operators:

void Flip(void);
void Mirror(const R3Plane& plane);
void Translate(const R3Vector& vector);
void Reposition(int k, const R3Point& point);
void Align(const R3Vector& vector);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void Reset(const R3Point& point1, const R3Point& point2);
RNClassID Clip(const R3Plane& plane);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R3Span operator-(void) const;


R3Sphere

Base Classes:

Public Base Classes:

R3Solid

Member Functions:

Constructor functions:

R3Sphere(void);
R3Sphere(const R3Sphere& sphere);
R3Sphere(const R3Point& center, RNLength radius);

Sphere property functions/operators:

const R3Point& Center(void) const;
const RNLength Radius(void) const;
const RNBoolean IsEmpty(void) const;
const RNBoolean IsFinite(void) const;

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Manipulation functions/operators:

virtual void Empty(void);
virtual void Translate(const R3Vector& vector);
virtual void Reposition(const R3Point& center);
virtual void Resize(RNLength radius);
virtual void Transform(const R3Transformation& transformation);

Draw functions/operators:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;

Standard shape definitions:

RN_CLASS_TYPE_DECLARATIONS(R3Sphere);
R3_SHAPE_RELATIONSHIP_DECLARATIONS(R3Sphere);


R3Triad

Base Classes:

Public Base Classes:

R3Base

Member Functions:

Constructor functions:

R3Triad(void);
R3Triad(const R3Triad& triad);
R3Triad(const R3Vector& xaxis, const R3Vector& yaxis, const R3Vector& zaxis);
R3Triad(const R3Vector& towards, const R3Vector& up);

Property functions/operators:

const R4Matrix Matrix(void) const;
const R4Matrix InverseMatrix(void) const;
const R3Vector& Axis(RNDimension dim) const;
const R3Vector& operator[](RNDimension dim) const;
const RNBoolean operator==(const R3Triad& triad) const;
const RNBoolean operator!=(const R3Triad& triad) const;

Manipulation functions/operators:

void Normalize(void);
void Rotate(RNAxis axis, RNAngle radians);
void Rotate(const R3Vector& vector, RNAngle radians);
void Rotate(const R3Vector& from, const R3Vector& to);
void Mirror(const R3Plane& plane);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
R3Triad& operator=(const R3Triad& triad);

Draw functions/operators:

void Draw(void) const;
void Outline(void) const;


R3TriangleVertex

Base Classes:

Public Base Classes:

None

Member Functions:

Constructors:

R3TriangleVertex(void);
R3TriangleVertex(const R3TriangleVertex& vertex);
R3TriangleVertex(const R3Point& position);
R3TriangleVertex(const R3Point& position, const R3Vector& normal);
R3TriangleVertex(const R3Point& position, const R2Point& texcoords);
R3TriangleVertex(const R3Point& position, const R3Vector& normal, const R2Point& texcoords);

Property functions/operators:

const R3Point& Position(void) const;
const R3Vector& Normal(void) const;
const R2Point& TextureCoords(void) const;
const RNFlags Flags(void) const;
const RNMark Mark(void) const;

Manipulation functions/operators:

void Mirror(const R3Plane& plane);
void Transform(const R3Transformation& transformation);
void SetPosition(const R3Point& position);
void SetNormal(const R3Vector& normal);
void SetTextureCoords(const R2Point& texcoords);
void SetMark(RNMark mark);
R3Point position;
R3Vector normal;
R2Point texcoords;
RNFlags flags;
RNMark mark;


R3Triangle

Base Classes:

Public Base Classes:

R3Surface

Member Functions:

Constructor functions:

R3Triangle(void);
R3Triangle(const R3Triangle& triangle);
R3Triangle(R3TriangleVertex *v0, R3TriangleVertex *v1, R3TriangleVertex *v2);
R3Triangle(R3TriangleVertex *vertices[3]);

Vertex access functions/operators:

R3TriangleVertex *Vertex(int index) const;
R3TriangleVertex *V0(void) const;
R3TriangleVertex *V1(void) const;
R3TriangleVertex *V2(void) const;

Triangle property functions/operators:

const R3Plane& Plane(void) const;
const R3Vector& Normal(void) const;
const R3Box& Box(void) const;
const RNFlags Flags(void) const;
const RNMark Mark(void) const;
const RNBoolean IsFinite(void) const;
const RNBoolean IsDegenerate(void) const;

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Manipulation functions/operators:

virtual void Flip(void);
virtual void Transform(const R3Transformation& transformation);
virtual void Mirror(const R3Plane& plane);
virtual void Reset(R3TriangleVertex *v1, R3TriangleVertex *v2, R3TriangleVertex *v3);
virtual void Reset(R3TriangleVertex *vertices[3]);
virtual void SetMark(RNMark mark);
virtual void Update(void);

Draw functions/operators:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;

Arithmetic functions/operators:

R3Triangle operator-(void) const;

Standard shape definitions:

RN_CLASS_TYPE_DECLARATIONS(R3Triangle);
R3_SHAPE_RELATIONSHIP_DECLARATIONS(R3Triangle);


R3TriangleArray

Base Classes:

Public Base Classes:

R3Surface

Member Functions:

Constructor functions:

R3TriangleArray(void);
R3TriangleArray(const R3TriangleArray& array);
R3TriangleArray(const RNArray& vertices, const RNArray& triangles);

Triangle array properties:

const R3Box& Box(void) const;

Vertex access functions/operators:

int NVertices(void) const;
R3TriangleVertex *Vertex(int index) const;

Triangle access functions/operators:

int NTriangles(void) const;
R3Triangle *Triangle(int index) const;

Shape property functions:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsCurve(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsSurface(void) const;
virtual const RNBoolean IsPlanar(void) const;
virtual const RNBoolean IsSolid(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNInterval NFacets(void) const;
virtual const RNLength Length(void) const;
virtual const RNArea Area(void) const;
virtual const RNVolume Volume(void) const;
virtual const R3Line *Line(void) const;
virtual const R3Plane *Plane(void) const;
virtual const R3Point Centroid(void) const;
virtual const R3Shape& BShape(void) const;
virtual const R3Box BBox(void) const;
virtual const R3Sphere BSphere(void) const;

Shape relationship functions:

virtual RNLength Distance(const R3Point& point) const;
virtual RNLength Distance(const R3Line& line) const;
virtual RNLength Distance(const R3Ray& ray) const;
virtual RNLength Distance(const R3Span& span) const;
virtual RNLength Distance(const R3Plane& plane) const;
virtual RNLength Distance(const R3Halfspace& halfspace) const;
virtual RNLength Distance(const R3Box& box) const;
virtual RNLength Distance(const R3Sphere& sphere) const;
virtual RNLength Distance(const R3Shape& shape) const;
virtual RNLength SignedDistance(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Point& point) const;
virtual RNBoolean Contains(const R3Line& line) const;
virtual RNBoolean Contains(const R3Ray& ray) const;
virtual RNBoolean Contains(const R3Span& span) const;
virtual RNBoolean Contains(const R3Plane& plane) const;
virtual RNBoolean Contains(const R3Halfspace& halfspace) const;
virtual RNBoolean Contains(const R3Box& box) const;
virtual RNBoolean Contains(const R3Sphere& sphere) const;
virtual RNBoolean Contains(const R3Shape& shape) const;
virtual RNBoolean Inside(const R3Point& point) const;
virtual RNBoolean Inside(const R3Line& line) const;
virtual RNBoolean Inside(const R3Ray& ray) const;
virtual RNBoolean Inside(const R3Span& span) const;
virtual RNBoolean Inside(const R3Plane& plane) const;
virtual RNBoolean Inside(const R3Halfspace& halfspace) const;
virtual RNBoolean Inside(const R3Box& box) const;
virtual RNBoolean Inside(const R3Sphere& sphere) const;
virtual RNBoolean Inside(const R3Shape& shape) const;
virtual RNClassID Intersects(const R3Point& point) const;
virtual RNClassID Intersects(const R3Line& line) const;
virtual RNClassID Intersects(const R3Ray& ray,
R3Point *hit_point = NULL, R3Vector *hit_normal = NULL, RNScalar *hit_t = NULL) const;
virtual RNClassID Intersects(const R3Span& span) const;
virtual RNClassID Intersects(const R3Plane& plane) const;
virtual RNClassID Intersects(const R3Halfspace& halfspace) const;
virtual RNClassID Intersects(const R3Box& box) const;
virtual RNClassID Intersects(const R3Sphere& sphere) const;
virtual RNClassID Intersects(const R3Shape& shape) const

Manipulation functions/operators:

virtual void Flip(void);
virtual void Mirror(const R3Plane& plane);
virtual void Transform(const R3Transformation& transformation);
virtual void MoveVertex(R3TriangleVertex *vertex, const R3Point& position);
virtual void Update(void);

Draw functions/operators:

virtual void Draw(const R3DrawFlags draw_flags = R3_DEFAULT_DRAW_FLAGS) const;

Standard shape definitions:

RN_CLASS_TYPE_DECLARATIONS(R3TriangleArray);
R3_SHAPE_RELATIONSHIP_DECLARATIONS(R3TriangleArray);


R3Vector

Base Classes:

Public Base Classes:

R3Base

Member Functions:

Constructor functions:

R3Vector(void);
R3Vector(const R3Vector& vector);
R3Vector(RNCoord x, RNCoord y, RNCoord z);
R3Vector(const RNCoord array[3]);
R3Vector(RNAngle pitch, RNAngle yaw);

Property functions/operators:

const RNCoord X(void) const;
const RNCoord Y(void) const;
const RNCoord Z(void) const;
const RNCoord Coord(RNDimension dim) const;
const RNCoord operator[](RNDimension dim) const;
const RNCoord *Coords(void) const;
const RNBoolean IsZero(void) const;
const RNBoolean IsFinite(void) const;
const RNBoolean IsNormalized(void) const;
const RNLength Length(void) const;
const R3Point Point(void) const;
const RNSextant Sextant(void) const;
const RNOctant Octant(void) const;
const RNDimension MinDimension(void) const;
const RNDimension MaxDimension(void) const;

Relationship functions/operators:

const RNBoolean operator==(const R3Vector& vector) const;
const RNBoolean operator!=(const R3Vector& vector) const;
const RNScalar Dot(const R3Vector& vector) const;

Manipulation functions/operators:

void X(RNCoord x);
void Y(RNCoord y);
void Z(RNCoord z);
void SetCoord(RNDimension dim, RNCoord coord);
void Flip(void);
void Normalize(void);
void Cross(const R3Vector& vector);
void Rotate(const R3Vector& axis, RNAngle theta);
void Project(const R3Vector& vector);
void Project(const R3Plane& plane);
void Mirror(const R3Plane& plane);
void Transform(const R3Transformation& transformation);
void InverseTransform(const R3Transformation& transformation);
void Reset(RNCoord x, RNCoord y, RNCoord z);

Draw functions/operators:

void Draw(void) const;
void Outline(void) const;

Assignment operators:

R3Vector& operator=(const R3Vector& vector);
R3Vector& operator+=(const R3Vector& vector);
R3Vector& operator-=(const R3Vector& vector);
R3Vector& operator*=(const RNScalar a);
R3Vector& operator*=(const R3Vector& vector);
R3Vector& operator/=(const RNScalar a);
R3Vector& operator/=(const R3Vector& vector);

Arithmetic operators:

friend R3Vector operator+(const R3Vector& vector);
friend R3Vector operator-(const R3Vector& vector);
friend R3Vector operator+(const R3Vector& vector1, const R3Vector& vector2);
friend R3Vector operator-(const R3Vector& vector1, const R3Vector& vector2);
friend R3Vector operator*(const R3Vector& vector1, const R3Vector& vector2);
friend R3Vector operator*(const R3Vector& vector, const RNScalar a);
friend R3Vector operator*(const RNScalar a, const R3Vector& vector);
friend R3Vector operator/(const R3Vector& vector1, const R3Vector& vector2);
friend R3Vector operator/(const R3Vector& vector, const RNScalar a);
friend R3Vector operator%(const R3Vector& vector1, const R3Vector& vector2);

Undocumented functions/operators:

RNCoord& operator[](RNDimension dim);


R3Transformation

Base Classes:

Public Base Classes:

R3Base

Member Functions:

Property functions/operators:

virtual const RNBoolean IsMirrored(void) const;
virtual const RNBoolean IsLinear(void) const;
virtual const RNBoolean IsAffine(void) const;
virtual const RNBoolean IsIsotropic(void) const;

Application functions/operators:

virtual void Apply(R3Vector& vector) const = 0;
virtual void Apply(R3Point& point) const = 0;
virtual void Apply(R3Transformation& transformation) const = 0;
virtual void Apply(R3Affine& affine) const = 0;
virtual void ApplyInverse(R3Vector& vector) const = 0;
virtual void ApplyInverse(R3Point& point) const = 0;
virtual void ApplyInverse(R3Transformation& transformation) const = 0;
virtual void ApplyInverse(R3Affine& affine) const = 0;
virtual void ApplyInverseTranspose(R3Vector& vector) const = 0;
virtual void ApplyTranspose(R3Vector& vector) const = 0;

Manipulation functions/operators:

virtual void Reset(const R3Transformation& transformation) = 0;
virtual void Transform(const R3Transformation& transformation) = 0;
virtual void InverseTransform(const R3Transformation& transformation) = 0;

Draw functions/operators:

virtual void Load(void) const = 0;
virtual void Draw(void) const = 0;
virtual void Push(void) const = 0;
virtual void Pop(void) const = 0;

Do not use these ???:

virtual const RNScalar ScaleFactor(void) const;


R4Matrix

Base Classes:

Public Base Classes:

R3Base

Member Functions:

Constructor functions:

R4Matrix(void);
R4Matrix(const R4Matrix& matrix);
R4Matrix(RNScalar a00, RNScalar a01, RNScalar a02, RNScalar a03,
RNScalar a10, RNScalar a11, RNScalar a12, RNScalar a13,
RNScalar a20, RNScalar a21, RNScalar a22, RNScalar a23,
RNScalar a30, RNScalar a31, RNScalar a32, RNScalar a33);
R4Matrix(const RNScalar* array);

Property functions/operators:

const RNBoolean IsZero(void) const;
const RNBoolean IsIdentity(void) const;
const RNBoolean IsIsotropic(void) const;
const RNBoolean HasTranslation(void) const;
const RNBoolean HasScale(void) const;
const RNBoolean HasRotation(void) const;
const RNBoolean HasMirror(void) const;
const RNScalar *operator[](int i) const;
const RNScalar Determinant(void) const;
const R4Matrix Transpose(void) const;
const R4Matrix Inverse(void) const;
const RNBoolean operator==(const R4Matrix& matrix) const;
const RNBoolean operator!=(const R4Matrix& matrix) const;

Draw functions/operators:

void Load(void) const;
void Draw(void) const;
void Push(void) const;
void Pop(void) const;

Manipulation functions/operators:

void Flip(void);
void Invert(void);
void XTranslate(RNScalar offset);
void YTranslate(RNScalar offset);
void ZTranslate(RNScalar offset);
void Translate(RNScalar offset);
void Translate(RNAxis axis, RNScalar offset);
void Translate(const R3Vector& offset);
void XScale(RNScalar scale);
void YScale(RNScalar scale);
void ZScale(RNScalar scale);
void Scale(RNScalar scale);
void Scale(RNAxis axis, RNScalar scale);
void Scale(const R3Vector& scale);
void XRotate(RNAngle radians);
void YRotate(RNAngle radians);
void ZRotate(RNAngle radians);
void Rotate(const R3Vector& radians);
void Rotate(RNAxis axis, RNAngle radians);
void Rotate(const R3Vector& vector, RNAngle radians);
void Rotate(const R3Vector& from, const R3Vector& to);
void Transform(const R4Matrix& matrix);
void Multiply(const R4Matrix& matrix);
void Add(const R4Matrix& matrix);
void Subtract(const R4Matrix& matrix);

Assignment operators:

R4Matrix& operator=(const R4Matrix& matrix);
R4Matrix& operator+=(const R4Matrix& matrix);
R4Matrix& operator-=(const R4Matrix& matrix);
R4Matrix& operator*=(RNScalar a);
R4Matrix& operator*=(const R4Matrix& matrix);
R4Matrix& operator/=(RNScalar a);

Arithmetic operators:

friend R4Matrix operator-(const R4Matrix& matrix);
friend R4Matrix operator+(const R4Matrix& matrix1, const R4Matrix& matrix2);
friend R4Matrix operator-(const R4Matrix& matrix1, const R4Matrix& matrix2);
friend R4Matrix operator*(RNScalar a, const R4Matrix& matrix);
friend R4Matrix operator*(const R4Matrix& matrix, RNScalar a);
friend R4Matrix operator*(const R4Matrix& matrix1, const R4Matrix& matrix2);
friend R4Matrix operator/(const R4Matrix& matrix, RNScalar scale);
friend R3Vector operator*(const R4Matrix& matrix, const R3Vector& vector);
friend R3Point operator*(const R4Matrix& matrix, const R3Point& point);

Undocumented functions/operators:

RNScalar *operator[](int i);


Click this to go back to main page.

funk@cs.princeton.edu