R2Shapes Package


Description:

The R2Shapes package supports basics 2D geometry classes. It contains classes representing 2D primitives (such as vectors, points, etc.). It also contains classes for 2D transformations (such as 3x3 matrices, etc.) and higher level 2D shapes (such as polygons, boxes, circles, etc).

For all pairs of 2D primitives (and many 2D shapes), functions are provided for computing the relationships between them. For instance, there are functions to compute the distance between primitives (R2Distance), check for intersections (R2Intersects), check whether one primitive contains another (R2Contains), compute whether primitives are perpendicular (R2Perpendicular), and check whether primitives are parallel (R2Parallel).


List of Classes:


List of Functions:


Example:

Click this to see a sample program.


R2Affine

Base Classes:

Public Base Classes:

R2Transformation

Member Functions:

Constructor functions:

R2Affine(void);
R2Affine(const R3Matrix& matrix, RNBoolean mirror = 0);

Property functions/operators:

const R3Matrix& Matrix(void) const;
const R3Matrix InverseMatrix(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 R2Affine Inverse(void) const;

Application functions/operators:

virtual void Apply(R2Vector& vector) const;
virtual void Apply(R2Point& point) const;
virtual void Apply(R2Transformation& transformation) const;
virtual void Apply(R2Affine& affine) const;
virtual void ApplyInverse(R2Vector& vector) const;
virtual void ApplyInverse(R2Point& point) const;
virtual void ApplyInverse(R2Transformation& transformation) const;
virtual void ApplyInverse(R2Affine& affine) const;

Manipulation functions/operators:

void Invert(void);
void XMirror(void);
void YMirror(void);
void Mirror(void);
void XTranslate(RNScalar offset);
void YTranslate(RNScalar offset);
void Translate(RNScalar offset);
void Translate(RNAxis axis, RNScalar offset);
void Translate(const R2Vector& offset);
void XScale(RNScalar scale);
void YScale(RNScalar scale);
void Scale(RNScalar scale);
void Scale(RNAxis axis, RNScalar scale);
void Scale(const R2Vector& scale);
void Rotate(RNAngle radians);
void Transform(const R2Transformation& transformation);
void Transform(const R2Affine& affine);
void InverseTransform(const R2Transformation& transformation);
void InverseTransform(const R2Affine& affine);
void Reset(const R2Transformation& transformation);
void Reset(const R3Matrix& matrix, RNBoolean mirror = 0);

Draw functions/operators:

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

Do not use these ???:

const RNScalar ScaleFactor(void) const;


R2Arc

Base Classes:

Public Base Classes:

R2Curve

Member Functions:

Constructor functions:

R2Arc(void);
R2Arc(const R2Arc& arc);
R2Arc(const R2Point& center, RNLength radius, RNAngle start, RNAngle stop);

Arc property functions/operators:

const R2Circle& Circle(void) const;
const R2Point& Center(void) const;
const RNLength Radius(void) const;
const RNAngle StartAngle(void) const;
const RNAngle StopAngle(void) const;
const RNAngle SweepAngle(void) const;
const R2Point Point(RNAngle angle) const;
const R2Point MidPoint(void) const;
const R2Point StartPoint(void) const;
const R2Point StopPoint(void) const;
const RNBoolean IsEmpty(void) const;
const RNBoolean IsFinite(void) const;

Shape property functions/operators:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsLinear(void) const ;
virtual const RNBoolean IsConvex(void) const ;
virtual const R2Point Centroid(void) const;
virtual const R2Shape& BShape(void) const;
virtual const R2Box BBox(void) const;
virtual const R2Circle BCircle(void) const;

Manipulation functions/operators:

virtual void Empty(void);
virtual void SetStartAngle(RNAngle theta);
virtual void SetStopAngle(RNAngle theta);
virtual void Translate(const R2Vector& vector);
virtual void Reposition(const R2Point& center);
virtual void Resize(RNLength radius);
virtual void Transform(const R2Transformation& transformation);

Draw functions/operators:

virtual void Draw(const R2DrawFlags draw_flags = R2_DEFAULT_DRAW_FLAGS) const;


R2Box

Base Classes:

Public Base Classes:

R2Solid

Member Functions:

Constructor functions:

R2Box(void);
R2Box(const R2Box& box);
R2Box(const R2Point& min, const R2Point& max);
R2Box(const R2Point& center, RNLength width, RNLength height);
R2Box(RNCoord xmin, RNCoord ymin, RNCoord xmax, RNCoord ymax);

Box property functions/operators:

const RNCoord XMin(void) const;
const RNCoord YMin(void) const;
const RNCoord XMax(void) const;
const RNCoord YMax(void) const;
const RNCoord Coord(RNDirection dir, RNDimension dim) const;
const R2Point& Min(void) const;
const R2Point& Max(void) const;
const R2Point Corner(RNQuadrant octant) const;
const R2Point Corner(RNDirection xdir, RNDirection ydir) const;
const R2Point Centroid(void) const;
const R2Point ClosestPoint(const R2Point& point) const;
const R2Box Quadrant(RNQuadrant octant) const;
const R2Box Quadrant(RNDirection xdir, RNDirection ydir) const;
const RNBoolean IsEmpty(void) const;
const RNBoolean IsFinite(void) const;
const int NDimensions(void) const;
const RNBoolean IsAxisNull(const RNAxis axis) const;
const RNLength XLength(void) const;
const RNLength YLength(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 AxisRadius(const RNAxis axis) const;
const RNLength DiagonalRadius(void) const;
const RNCoord XCenter(void) const;
const RNCoord YCenter(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 IsLinear(void) const;
virtual const RNBoolean IsConvex(void) const;
virtual const RNArea Area(void) const;
virtual const R2Shape& BShape(void) const;
virtual const R2Box BBox(void) const;
virtual const R2Circle BCircle(void) const;

Manipulation functions/operators:

virtual void Empty(void);
virtual void Translate(const R2Vector& vector);
virtual void Union(const R2Point& point);
virtual void Union(const R2Box& box);
virtual void Union(const R2Circle& circle);
virtual void Intersect(const R2Box& box);
virtual void Transform(const R2Transformation& transformation);

Draw functions/operators:

virtual void Draw(const R2DrawFlags draw_flags = R2_DEFAULT_DRAW_FLAGS) const;

Relationship functions/operators:

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

Undocumented functions/operators:

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


R2Circle

Base Classes:

Public Base Classes:

R2Solid

Member Functions:

Constructor functions:

R2Circle(void);
R2Circle(const R2Circle& circle);
R2Circle(const R2Point& center, RNLength radius);

Circle property functions/operators:

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

Shape property functions/operators:

virtual const RNBoolean IsPoint(void) const;
virtual const RNBoolean IsLinear(void) const ;
virtual const RNBoolean IsConvex(void) const ;
virtual const RNArea Area(void) const;
virtual const R2Point Centroid(void) const;
virtual const R2Shape& BShape(void) const;
virtual const R2Box BBox(void) const;
virtual const R2Circle BCircle(void) const;

Manipulation functions/operators:

virtual void Empty(void);
virtual void Translate(const R2Vector& vector);
virtual void Reposition(const R2Point& center);
virtual void Resize(RNLength radius);
virtual void Transform(const R2Transformation& transformation);

Draw functions/operators:

virtual void Draw(const R2DrawFlags draw_flags = R2_DEFAULT_DRAW_FLAGS) const;


R2Curve

Base Classes:

Public Base Classes:

R2Shape

Member Functions:

Constructors/destructors ???:

R2Curve(void);
~R2Curve(void);

Shape property functions/operators:

const RNBoolean IsCurve(void) const;

Curve property functions/operators:

virtual const R2Point Start(void) const = 0;:

virtual const R2Point End(void) const = 0;:


R2Grid

Base Classes:

Public Base Classes:

None

Member Functions:

Constructors:

R2Grid(int xresolution = 0, int yresolution = 0);
R2Grid(int xresolution, int yresolution, const R2Box& bbox);
R2Grid(const R2Grid& grid);
~R2Grid(void);

Grid property functions:

int NEntries() const;
int XResolution(void) const;
int YResolution(void) const;
int Resolution(RNDimension dim) const;
RNScalar Sum(void) const;
RNScalar Mean(void) const;
RNScalar Median(void) const;
RNScalar Maximum(void) const;
RNScalar Minimum(void) const;
RNInterval Range(void) const;
RNScalar L1Norm(void) const;
RNScalar L2Norm(void) const;
RNScalar Area(void) const;
int Cardinality(void) const;
R2Box GridBox(void) const;
R2Box WorldBox(void) const;

Transformation property functions:

const R2Affine& WorldToGridTransformation(void) const;
const R2Affine& GridToWorldTransformation(void) const;
RNScalar WorldToGridScaleFactor(void) const;
RNScalar GridToWorldScaleFactor(void) const;

Grid value access functions:

RNScalar GridValue(int index) const;
RNScalar GridValue(int i, int j) const;
RNScalar GridValue(RNCoord x, RNCoord y) const;
RNScalar GridValue(const R2Point& grid_point) const;
RNScalar WorldValue(RNCoord x, RNCoord y) const;
RNScalar WorldValue(const R2Point& world_point) const;
RNScalar& operator()(int i, int j);

Grid manipulation functions:

void Abs(void);
void Sqrt(void);
void Square(void);
void Negate(void);
void Invert(void);
void Normalize(void);
void Laplacian(void);
void Sobel(void);
void DetectEdges(void);
void FillHoles(void);
void GradientAngle(void);
void GradientMagnitude(void);
void Gradient(RNDimension dim);
void Hessian(RNDimension dim1, RNDimension dim2);
void Clear(RNScalar value = 0);
void Dilate(RNScalar grid_distance);
void Erode(RNScalar grid_distance);
void Blur(RNScalar grid_sigma = 2);
void BilateralFilter(RNLength grid_sigma = 2, RNScalar value_sigma = -1);
void PercentileFilter(RNLength grid_radius, RNScalar percentile);
void MinFilter(RNLength grid_radius);
void MaxFilter(RNLength grid_radius);
void MedianFilter(RNLength grid_radius);
void Convolve(const RNScalar filter[3][3]);
void Substitute(RNScalar old_value, RNScalar new_value);
void Add(RNScalar value);
void Add(const R2Grid& grid);
void Subtract(RNScalar value);
void Subtract(const R2Grid& grid);
void Multiply(RNScalar value);
void Multiply(const R2Grid& grid);
void Divide(RNScalar value);
void Divide(const R2Grid& grid);
void Pow(RNScalar exponent);
void Mask(const R2Grid& grid);
void Threshold(RNScalar threshold, RNScalar low, RNScalar high);
void SignedDistanceTransform(void);
void SquaredDistanceTransform(void);
void Resample(int xres, int yres);
void SetGridValue(int index, RNScalar value);
void SetGridValue(int i, int j, RNScalar value);
void AddGridValue(int i, int j, RNScalar value);

Arithmetic operators:

R2Grid& operator=(const R2Grid& grid);
R2Grid& operator+=(RNScalar scale);
R2Grid& operator+=(const R2Grid& grid);
R2Grid& operator-=(RNScalar scale);
R2Grid& operator-=(const R2Grid& grid);
R2Grid& operator*=(RNScalar scale);
R2Grid& operator*=(const R2Grid& grid);
R2Grid& operator/=(RNScalar scale);
R2Grid& operator/=(const R2Grid& grid);

Rasterization functions:

void RasterizeGridPoint(RNCoord x, RNCoord y, RNScalar value);
void RasterizeWorldPoint(RNCoord x, RNCoord y, RNScalar value);
void RasterizeGridPoint(const R2Point& point, RNScalar value);
void RasterizeWorldPoint(const R2Point& point, RNScalar value);
void RasterizeGridSpan(const int p1[3], const int p2[3], RNScalar value);
void RasterizeGridSpan(const R2Point& p1, const R2Point& p2, RNScalar value);
void RasterizeWorldSpan(const R2Point& p1, const R2Point& p2, RNScalar value);
void RasterizeGridTriangle(const int p1[3], const int p2[3], const int p3[3], RNScalar value);
void RasterizeGridTriangle(const R2Point& p1, const R2Point& p2, const R2Point& p3, RNScalar value);
void RasterizeWorldTriangle(const R2Point& p1, const R2Point& p2, const R2Point& p3, RNScalar value);
void RasterizeGridCircle(const R2Point& center, RNLength radius, RNScalar value);
void RasterizeWorldCircle(const R2Point& center, RNLength radius, RNScalar value);

Relationship functions:

RNScalar Dot(const R2Grid& grid) const;
RNScalar L1Distance(const R2Grid& grid) const;
RNScalar L2Distance(const R2Grid& grid) const;
RNScalar L2DistanceSquared(const R2Grid& grid) const;

Transformation manipulation functions:

void SetWorldToGridTransformation(const R2Affine& affine);
void SetWorldToGridTransformation(const R2Box& world_box);
void SetWorldToGridTransformation(const R2Point& world_origin, const R2Vector& world_xaxis, RNLength world_radius);

Transformation utility functions:

R2Point WorldPosition(const R2Point& grid_point) const;
R2Point GridPosition(const R2Point& world_point) const;
R2Point WorldPosition(RNCoord x, RNCoord y) const;
R2Point GridPosition(RNCoord x, RNCoord y) const;

Reading/writing:

int Read(const char *filename);
int ReadPFM(const char *filename);
int ReadRAW(const char *filename);
int ReadGRD(const char *filename);
int ReadImage(const char *filename);
int Write(const char *filename) const;
int WritePFM(const char *filename) const;
int WriteRAW(const char *filename) const;
int WriteGRD(const char *filename) const;
int WriteImage(const char *filename) const;
int Print(FILE *fp = NULL) const;
void Capture(void);

Draw functions:

void Draw(void) const;
void DrawMesh(void) const;
void DrawImage(int x = 0, int y = 0) const;

Utility functions:

RNScalar GridValue(RNCoord x, RNCoord y, RNLength sigma) const;
void ConnectedComponentFilter(RNScalar isolevel, RNArea min_grid_area, RNArea max_grid_area,
RNScalar under_isolevel_value = 0, RNScalar too_small_value = 0, RNScalar too_large_value = 0);
int ConnectedComponents(RNScalar isolevel = 0, int max_components = 0, int *seeds = NULL, int *sizes = NULL, int *grid_components = NULL);
int GenerateIsoContour(RNScalar isolevel, R2Point *points, int max_points) const;

Debugging functions:

const RNScalar *GridValues(void) const;
void IndicesToIndex(int i, int j, int& index);
void IndexToIndices(int index, int& i, int& j);


R2Halfspace

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R2Halfspace(void);
R2Halfspace(const R2Halfspace& halfspace);
R2Halfspace(RNScalar a, RNScalar b, RNScalar c);
R2Halfspace(const RNScalar array[3]);
R2Halfspace(const R2Point& point, const R2Vector& normal);
R2Halfspace(const R2Point& point1, const R2Point& point2);
R2Halfspace(RNCoord x1, RNCoord y1, RNCoord x2, RNCoord y2);
R2Halfspace(const R2Line& line, int dummy);

Property functions/operators:

const R2Line& Line(void) const;
const R2Vector& Normal(void) const;
const RNBoolean IsZero(void) const;
const RNBoolean operator==(const R2Halfspace& halfspace) const;
const RNBoolean operator!=(const R2Halfspace& halfspace) const;

Manipulation functions/operators:

void Flip(void);
void Mirror(const R2Line& line);
void Translate(const R2Vector& vector);
void Reposition(const R2Point& point);
void Align(const R2Vector& vector);
void Transform(const R2Transformation& transformation);
void InverseTransform(const R2Transformation& transformation);
void Reset(const R2Line& line);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R2Halfspace operator-(void) const;


R2Image

Base Classes:

Public Base Classes:

None

Member Functions:

Constructors:

R2Image(void);
R2Image(const char *filename);
R2Image(int width, int height, int ncomponents = 3);
R2Image(int width, int height, int ncomponents, unsigned char *data);
R2Image(const R2Image& image);
~R2Image(void);

Accessors:

const unsigned char *Pixels(void) const;
const unsigned char *Pixels(int row) const;
const unsigned char *Pixel(int row, int column) const;
const RNRgb PixelRGB(int row, int column) const;
int Width(void) const;
int Height(void) const;
int Depth(void) const;
int NComponents(void) const;
int RowSize(void) const;
int Size(void) const;

Manipulation:

void Add(const R2Image& image);
void Subtract(const R2Image& image);
void SetPixelRGB(int row, int column, const RNRgb& rgb);

Reading/writing:

int Read(const char *filename);
int ReadBMP(const char *filename);
int ReadPPM(const char *filename);
int ReadPFM(const char *filename);
int ReadJPEG(const char *filename);
int ReadTIFF(const char *filename);
int ReadRAW(const char *filename);
int ReadGRD(const char *filename);
int Write(const char *filename) const;
int WriteBMP(const char *filename) const;
int WritePPM(const char *filename, int ascii = 0) const;
int WriteRAW(const char *filename) const;
int WriteJPEG(const char *filename) const;
int WriteTIFF(const char *filename) const;
void Capture(void);

Draw functions:

void Draw(int x = 0, int y = 0) const;


R2Line

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R2Line(void);
R2Line(const R2Line& line);
R2Line(const RNScalar a, const RNScalar b, const RNScalar c);
R2Line(const RNScalar array[3]);
R2Line(const R2Point& point, const R2Vector& vector, RNBoolean normalized = FALSE);
R2Line(const R2Point& point1, const R2Point& point2);
R2Line(RNCoord x1, RNCoord y1, RNCoord x2, RNCoord y2);

Property functions/operators:

const RNScalar A(void) const;
const RNScalar B(void) const;
const RNScalar C(void) const;
const R2Point Point(void) const;
const R2Vector& Vector(void) const;
const R2Vector& Normal(void) const;
const RNBoolean IsZero(void) const;
const RNBoolean operator==(const R2Line& line) const;
const RNBoolean operator!=(const R2Line& line) const;

Manipulation functions/operators:

void Flip(void);
void Mirror(const R2Line& line);
void Project(const R2Line& line);
void Translate(const R2Vector& vector);
void Reposition(const R2Point& point);
void Align(const R2Vector& vector, RNBoolean normalized = FALSE);
void Transform(const R2Transformation& transformation);
void InverseTransform(const R2Transformation& transformation);
void Reset(const R2Point& point, const R2Vector& vector, RNBoolean normalized = FALSE);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R2Line operator-(void) const;


R2Point

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor/destructor functions:

R2Point(void);
R2Point(const R2Point& point);
R2Point(RNCoord x, RNCoord y);
R2Point(const RNCoord array[2]);

Property functions/operators:

const RNCoord X(void) const;
const RNCoord Y(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 R2Vector Vector(void) const;

Relationship functions/operators:

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

Manipulation functions/operators:

void X(RNCoord x);
void Y(RNCoord y);
void SetCoord(RNDimension dim, RNCoord coord);
void Translate(const R2Vector& vector);
void Project(const R2Line& line);
void Mirror(const R2Line& line);
void Rotate(const R2Point& origin, RNAngle theta);
void Transform(const R2Transformation& transformation);
void InverseTransform(const R2Transformation& transformation);
void Reset(RNCoord x, RNCoord y);

Draw functions/operators:

void Draw(void) const;

Assignment operators:

R2Point& operator=(const R2Point& point);
R2Point& operator+=(const R2Point& point);
R2Point& operator+=(const R2Vector& vector);
R2Point& operator-=(const R2Vector& vector);
R2Point& operator*=(const RNScalar a);
R2Point& operator*=(const R3Matrix& m);
R2Point& operator/=(const RNScalar a);

Arithmetic operators:

friend R2Point operator+(const R2Point& point);
friend R2Point operator-(const R2Point& point);
friend R2Point operator+(const R2Point& point1, const R2Point& point2) ;
friend R2Point operator+(const R2Point& point, const R2Vector& vector) ;
friend R2Point operator+(const R2Vector& vector, const R2Point& point) ;
friend R2Vector operator-(const R2Point& point1, const R2Point& point2);
friend R2Point operator-(const R2Point& point, const R2Vector& vector);
friend R2Point operator*(const R2Point& point, const RNScalar a);
friend R2Point operator*(const RNScalar a, const R2Point& point);
friend R2Point operator*(const R2Point& point, const R3Matrix& m);
friend R2Point operator/(const R2Point& point, const RNScalar a);

Undocumented functions/operators:

RNCoord& operator[](RNDimension dim);


R2Ray

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R2Ray(void);
R2Ray(const R2Ray& ray);
R2Ray(const R2Point& point, const R2Vector& vector, RNBoolean normalized = FALSE);
R2Ray(const R2Point& point1, const R2Point& point2);
R2Ray(RNCoord x1, RNCoord y1, RNCoord x2, RNCoord y2);

Property functions/operators:

const R2Point& Start(void) const;
const R2Vector& Vector(void) const;
const R2Vector& Normal(void) const;
const R2Line& Line(void) const;
const R2Point Point(RNScalar t) const;
const RNScalar T(const R2Point& point) const;
const RNBoolean IsZero(void) const;
const RNBoolean operator==(const R2Ray& ray) const;
const RNBoolean operator!=(const R2Ray& ray) const;

Manipulation functions/operators:

void Flip(void);
void Project(const R2Line& line);
void Mirror(const R2Line& line);
void Translate(const R2Vector& vector);
void Reposition(const R2Point& point);
void Align(const R2Vector& vector);
void Transform(const R2Transformation& transformation);
void InverseTransform(const R2Transformation& transformation);
void Reset(const R2Point& point, const R2Vector& vector, RNBoolean normalized = FALSE);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R2Ray operator-(void) const;


R2Shape

Base Classes:

Public Base Classes:

R2Base

Member Functions:

Constructors/destructors:


R2Solid

Base Classes:

Public Base Classes:

R2Shape

Member Functions:

Constructors/destructors ???:

R2Solid(void);
~R2Solid(void);

Shape property functions/operators:

const RNBoolean IsSolid(void) const;


R2Span

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R2Span(void);
R2Span(const R2Span& span);
R2Span(const R2Point& point, const R2Vector& vector);
R2Span(const R2Point& point1, const R2Point& point2);
R2Span(RNCoord x1, RNCoord y1, RNCoord x2, RNCoord y2);

Property functions/operators:

const R2Point& Start(void) const;
const R2Point& End(void) const;
const R2Vector& Vector(void) const;
const R2Vector& Normal(void) const;
const R2Point Point(int k) const;
const R2Point Point(RNScalar t) const;
const R2Point& operator[](int k) const;
const R2Ray& Ray(void) const;
const R2Line& Line(void) const;
const R2Point Midpoint(void) const;
const R2Point Centroid(void) const;
const RNLength Length(void) const;
const RNScalar T(const R2Point& point) const;
const RNBoolean IsPoint(void) const;
const RNBoolean operator==(const R2Span& span) const;
const RNBoolean operator!=(const R2Span& span) const;
const R2Box BBox(void) const;
const R2Circle BCircle(void) const;

Manipulation functions/operators:

void Flip(void);
void Project(const R2Line& line);
void Mirror(const R2Line& line);
void Translate(const R2Vector& vector);
void Reposition(int k, const R2Point& point);
void Align(const R2Vector& vector);
void Transform(const R2Transformation& transformation);
void InverseTransform(const R2Transformation& transformation);
void Reset(const R2Point& point1, const R2Point& point2);
RNClassID Clip(const R2Line& line);

Draw functions/operators:

void Draw(void) const;

Arithmetic functions/operators:

R2Span operator-(void) const;


R2Vector

Base Classes:

Public Base Classes:

None

Member Functions:

Constructor functions:

R2Vector(void);
R2Vector(const R2Vector& vector);
R2Vector(RNCoord x, RNCoord y);
R2Vector(const RNCoord array[2]);
R2Vector(RNAngle angle);

Property functions/operators:

const RNCoord X(void) const;
const RNCoord Y(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 RNAngle Angle(void) const;
const R2Point Point(void) const;
const RNQuadrant Quadrant(void) const;
const RNDimension MaxDimension(void) const;

Relationship functions/operators:

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

Manipulation functions/operators:

void X(RNCoord x);
void Y(RNCoord y);
void SetCoord(RNDimension dim, RNCoord coord);
void Flip(void);
void Normalize(void);
void Scale(RNScalar a);
void Rotate(RNAngle theta);
void Project(const R2Vector& vector);
void Mirror(const R2Line& line);
void Transform(const R2Transformation& transformation);
void InverseTransform(const R2Transformation& transformation);
void Reset(RNCoord x, RNCoord y);

Draw functions/operators:

void Draw(void) const;

Assignment operators:

R2Vector& operator=(const R2Vector& vector);
R2Vector& operator+=(const R2Vector& vector);
R2Vector& operator-=(const R2Vector& vector);
R2Vector& operator*=(const RNScalar a);
R2Vector& operator*=(const R2Vector& vector);
R2Vector& operator*=(const R3Matrix& matrix);
R2Vector& operator/=(const RNScalar a);
R2Vector& operator/=(const R2Vector& vector);

Arithmetic operators:

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

Undocumented functions/operators:

RNCoord& operator[](RNDimension dim);


R2Transformation

Base Classes:

Public Base Classes:

R2Base

Member Functions:

Destructor function:

virtual ~R2Transformation(void);

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(R2Vector& vector) const = 0;
virtual void Apply(R2Point& point) const = 0;
virtual void Apply(R2Transformation& transformation) const = 0;
virtual void Apply(R2Affine& affine) const = 0;
virtual void ApplyInverse(R2Vector& vector) const = 0;
virtual void ApplyInverse(R2Point& point) const = 0;
virtual void ApplyInverse(R2Transformation& transformation) const = 0;
virtual void ApplyInverse(R2Affine& affine) const = 0;

Manipulation functions/operators:

virtual void Reset(const R2Transformation& transformation) = 0;
virtual void Transform(const R2Transformation& transformation) = 0;
virtual void InverseTransform(const R2Transformation& 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;


R3Matrix

Base Classes:

Public Base Classes:

R3Base

Member Functions:

Constructor functions:

R3Matrix(void);
R3Matrix(const R3Matrix& matrix);
R3Matrix(RNScalar a00, RNScalar a01, RNScalar a02,
RNScalar a10, RNScalar a11, RNScalar a12,
RNScalar a20, RNScalar a21, RNScalar a22);
R3Matrix(const RNScalar* array);

Property functions/operators:

const int IsZero(void) const;
const int 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 R3Matrix Transpose(void) const;
const R3Matrix Inverse(void) const;
const RNBoolean operator==(const R3Matrix& matrix) const;
const RNBoolean operator!=(const R3Matrix& matrix) const;

Manipulation functions/operators:

void Flip(void);
void Invert(void);
void XTranslate(RNScalar offset);
void YTranslate(RNScalar offset);
void Translate(RNScalar offset);
void Translate(RNAxis axis, RNScalar offset);
void Translate(const R2Vector& offset);
void XScale(RNScalar scale);
void YScale(RNScalar scale);
void Scale(RNScalar scale);
void Scale(RNAxis axis, RNScalar scale);
void Scale(const R2Vector& scale);
void Rotate(RNAngle radians);
void Transform(const R3Matrix& matrix);
void Multiply(const R3Matrix& matrix);
void Add(const R3Matrix& matrix);
void Subtract(const R3Matrix& matrix);

Assignment operators:

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

Draw functions/operators:

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

Arithmetic operators:

friend R3Matrix operator-(const R3Matrix& matrix);
friend R3Matrix operator+(const R3Matrix& matrix1, const R3Matrix& matrix2);
friend R3Matrix operator-(const R3Matrix& matrix1, const R3Matrix& matrix2);
friend R3Matrix operator*(RNScalar a, const R3Matrix& matrix);
friend R3Matrix operator*(const R3Matrix& matrix, RNScalar a);
friend R3Matrix operator*(const R3Matrix& matrix1, const R3Matrix& matrix2);
friend R3Matrix operator/(const R3Matrix& matrix, RNScalar scale);
friend R2Vector operator*(const R3Matrix& matrix, const R2Vector& vector);
friend R2Point operator*(const R3Matrix& matrix, const R2Point& point);

Undocumented functions/operators:

RNScalar *operator[](int i);


Click this to go back to list of GAPS packages.

funk@cs.princeton.edu