DRECT2D Struct Reference

2D rectangle using 'double' precision coordinates. More...

#include <mi32/rect.h>

Inheritance diagram for DRECT2D:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 DRECT2D (const LRECT2D &rect)
 DRECT2D (double xi, double yi, double xl, double yl)
 DRECT2D (const DPOINT2D &pt1, const DPOINT2D &pt2)
 DRECT2D (const DPOINT2D &pt)
 DRECT2D (const FPOINT2D &pt)
 DRECT2D ()
void AlignToMultiple (double AlignSize, double RoundTolerance=.000001)
void ClipTo (const DRECT2D &rect)
bool ComputeEdgePoint (const DPOINT2D &OutsidePt, DPOINT2D &EdgePt) const
bool Contains (const DRECT2D &rhs) const
bool Contains (const DPOINT2D &pt) const
bool Contains (double x, double y) const
void Expand (const double xval, const double yval)
void Expand (const double value)
void Extend (const DPOINT2D &pt)
void Extend (const DRECT2D &rect)
void Extend (const double xval, const double yval)
double GetArea () const
void GetBottomLeft (DPOINT2D &ret) const
void GetBottomRight (DPOINT2D &ret) const
void GetCenter (DPOINT2D &ret) const
DPOINT2D GetCenter () const
void GetCorners (DPOINT3D *corners, bool ClosePoly=false, bool OrientCCW=false) const
void GetCorners (DPOINT2D *corners, bool ClosePoly=false, bool OrientCCW=false) const
int GetDimension () const
double GetDistance (const DRECT2D &rect) const
double GetHeight () const
double GetMaxDistance (const DRECT2D &rect) const
double GetMaxDistanceSquared (const DRECT2D &rect) const
DEPRECATED void GetRect (LRECT2D &rect) const
void GetRectRoundLimited (LRECT2D &rect) const
void GetRectRoundNoLimit (LRECT2D &rect) const
void GetRectRoundPositive (LRECT2D &rect) const
void GetRectTruncate (LRECT2D &rect) const
void GetSize (DPOINT2D &ret) const
void GetTopLeft (DPOINT2D &ret) const
void GetTopRight (DPOINT2D &ret) const
double GetWidth () const
bool IniRead (INIHANDLE IniHandle, const char *IniGroup, const char *IniName, const DRECT2D &dft)
bool IniRead (INIHANDLE IniHandle, const char *IniGroup, const char *IniName)
void IniWrite (INIHANDLE IniHandle, const char *IniGroup, const char *IniName) const
void Intersect (const DRECT2D &rect)
bool Intersects (const DRECT2D &rhs) const
bool IsEquivalentTo (const DRECT2D &rhs, double threshold=0.0) const
bool IsNonEmpty () const
bool IsValid () const
void Limit (DPOINT2D &point) const
DRECT2Doperator= (const LRECT2D &rhs)
DRECT2Doperator= (const DPOINT2D &pt)
bool Overlaps (const DRECT2D &rhs) const
void Set (double x1, double y1, double x2, double y2)
void SetCorners (const DPOINT2D pt1, const DPOINT2D pt2)
void SetInvalid ()
void SwapBytes ()

Public Attributes

double xinit
double xlast
double yinit
double ylast

Detailed Description

2D rectangle using 'double' precision coordinates.


Constructor & Destructor Documentation

DRECT2D::DRECT2D (  )  [inline]

Default constructor, initialize to "invalid" area.

DRECT2D::DRECT2D ( const FPOINT2D pt  )  [inline]

Construct from FPOINT2D (or FPOINT3D).

DRECT2D::DRECT2D ( const DPOINT2D pt  )  [inline]

Construct from DPOINT2D (or DPOINT3D).

DRECT2D::DRECT2D ( const DPOINT2D pt1,
const DPOINT2D pt2 
) [inline]

Construct from two DPOINT2D's (or DPOINT3D's).

A regular ctor from DPOINT2D and then a call to Extend(DPOINT2D&) would use 6 assignments and 4 comparisons, this uses 2 compares and 4 assignments

DRECT2D::DRECT2D ( double  xi,
double  yi,
double  xl,
double  yl 
) [inline]
DRECT2D::DRECT2D ( const LRECT2D rect  )  [inline]

Implicit conversion from LRECT2D.


Member Function Documentation

void DRECT2D::AlignToMultiple ( double  AlignSize,
double  RoundTolerance = .000001 
) [inline]

Align rectangle to integer multiple of specified size.

void DRECT2D::ClipTo ( const DRECT2D rect  )  [inline]

Clip this rectangle to specified rectangle.

bool DRECT2D::ComputeEdgePoint ( const DPOINT2D OutsidePt,
DPOINT2D EdgePt 
) const [inline]

Given the center point of the DRECT2D and the 'TestPt' which is outside the box, compute the point on the edge of the box which falls between the center point and the 'TestPt'.

Returns:
'true' if the point is found, false if the 'TestPt' is inside the box or the box is invalid
Parameters:
OutsidePt Point outside of 'this'
EdgePt Point on rectangle edge RETURNED if 'true' returned, center of the box if 'false' is returned
bool DRECT2D::Contains ( const DRECT2D rhs  )  const [inline]

Check if contains specified point.

Reimplemented in DRECT3D.

bool DRECT2D::Contains ( const DPOINT2D pt  )  const [inline]

Check if contains specified point.

bool DRECT2D::Contains ( double  x,
double  y 
) const [inline]

Check if contains specified point.

void DRECT2D::Expand ( const double  xval,
const double  yval 
) [inline]

Expand rectangle by specified amounts.

Reimplemented in DRECT3D.

void DRECT2D::Expand ( const double  value  )  [inline]

Expand rectangle by specified amount.

Reimplemented in DRECT3D.

void DRECT2D::Extend ( const DPOINT2D pt  )  [inline]

Extend rectangle to include specified DPOINT2D point.

Reimplemented in DRECT3D.

void DRECT2D::Extend ( const DRECT2D rect  )  [inline]

Extend rectangle to encompass both rectangles.

Reimplemented in DRECT3D.

void DRECT2D::Extend ( const double  xval,
const double  yval 
) [inline]

Extend rectangle to include specified X,Y point.

Reimplemented in DRECT3D.

double DRECT2D::GetArea (  )  const [inline]

Compute area of rectangle.

void DRECT2D::GetBottomLeft ( DPOINT2D ret  )  const [inline]

Return bottom left point of rectangle.

void DRECT2D::GetBottomRight ( DPOINT2D ret  )  const [inline]

Return bottom right point of rectangle.

void DRECT2D::GetCenter ( DPOINT2D ret  )  const [inline]

Return center point of rectangle.

DPOINT2D DRECT2D::GetCenter (  )  const [inline]

Return center point of rectangle.

Reimplemented in DRECT3D.

void DRECT2D::GetCorners ( DPOINT3D corners,
bool  ClosePoly = false,
bool  OrientCCW = false 
) const [inline]

Get corners as array.

Parameters:
corners Array of points to fill in
ClosePoly Return "closed" polygon, corners[4] = corners[0]
OrientCCW Orient points in counterclockwise order for right-hand cartesian
void DRECT2D::GetCorners ( DPOINT2D corners,
bool  ClosePoly = false,
bool  OrientCCW = false 
) const [inline]

Get corners as array.

Parameters:
corners Array of points to fill in
ClosePoly Return "closed" polygon, corners[4] = corners[0]
OrientCCW Orient points in counterclockwise order for right-hand cartesian
int DRECT2D::GetDimension (  )  const [inline]

Compute number of non zero dimensions (0, 1, or 2).

Reimplemented in DRECT3D.

double DRECT2D::GetDistance ( const DRECT2D rect  )  const [inline]

Compute the distance between two disjoint rectangles.

Returns:
Distance between two disjoint rectangles, 0.0 if they overlap.
double DRECT2D::GetHeight (  )  const [inline]

Return height of rectangle.

double DRECT2D::GetMaxDistance ( const DRECT2D rect  )  const [inline]

Compute the maximum distance between two rectangles Uses Extend() and then computes the diagonal distance.

Returns:
Max distance between two rectangles
double DRECT2D::GetMaxDistanceSquared ( const DRECT2D rect  )  const [inline]

Compute the maximum distance between two rectangles Uses Extend() and then computes the diagonal distance.

Returns:
Max distance between two rectangles
DEPRECATED void DRECT2D::GetRect ( LRECT2D rect  )  const [inline]

Get rectangle as an LRECT2D (with rounding).

void DRECT2D::GetRectRoundLimited ( LRECT2D rect  )  const [inline]

Get rectangle as LRECT2D with rounding, subject to range restrictions of FAST_ROUND_LIMITED.

void DRECT2D::GetRectRoundNoLimit ( LRECT2D rect  )  const [inline]

Get rectangle as LRECT2D with rounding, subject to accuracy of FAST_ROUND_NOLIMIT.

void DRECT2D::GetRectRoundPositive ( LRECT2D rect  )  const [inline]

Get rectangle as LRECT2D with rounding, valid for all positive coordinates only.

void DRECT2D::GetRectTruncate ( LRECT2D rect  )  const [inline]

Get rectangle as an LRECT2D (with truncating towards 0).

void DRECT2D::GetSize ( DPOINT2D ret  )  const [inline]

Get size of rectangle.

void DRECT2D::GetTopLeft ( DPOINT2D ret  )  const [inline]

Return top left point of rectangle.

void DRECT2D::GetTopRight ( DPOINT2D ret  )  const [inline]

Return top right point of rectangle.

double DRECT2D::GetWidth (  )  const [inline]

Return width of rectangle.

bool DRECT2D::IniRead ( INIHANDLE  IniHandle,
const char *  IniGroup,
const char *  IniName,
const DRECT2D dft 
) [inline]

Read rectangle from INI file with default.

bool DRECT2D::IniRead ( INIHANDLE  IniHandle,
const char *  IniGroup,
const char *  IniName 
) [inline]

Read rectangle from INI file.

Reimplemented in DRECT3D.

void DRECT2D::IniWrite ( INIHANDLE  IniHandle,
const char *  IniGroup,
const char *  IniName 
) const [inline]

Read rectangle from INI file.

Reimplemented in DRECT3D.

void DRECT2D::Intersect ( const DRECT2D rect  )  [inline]

Intersect two DRECT2D's, may result in an invalid rectangle.

Reimplemented in DRECT3D.

bool DRECT2D::Intersects ( const DRECT2D rhs  )  const [inline]

Determine if two rectangles have non-empty intersection.

bool DRECT2D::IsEquivalentTo ( const DRECT2D rhs,
double  threshold = 0.0 
) const [inline]

Determine if the two rectangles are equivalent This method uses "Fuzzy" edge comparisons Specify a different threshold to allow greater distances.

Returns:
'True' if they are, 'False' if not
Parameters:
threshold Default threshold is max absolute value of rectangle coordinate * 1.0E-13
bool DRECT2D::IsNonEmpty (  )  const [inline]

Check if rectangle is non-empty (has positive area).

bool DRECT2D::IsValid (  )  const [inline]

Check if rectangle is valid.

Reimplemented in DRECT3D.

void DRECT2D::Limit ( DPOINT2D point  )  const [inline]

Limit point to extents specified by rectangle.

DRECT2D& DRECT2D::operator= ( const LRECT2D rhs  )  [inline]

Assignment from LRECT2D.

DRECT2D& DRECT2D::operator= ( const DPOINT2D pt  )  [inline]

Assignment from DPOINT2D.

bool DRECT2D::Overlaps ( const DRECT2D rhs  )  const [inline]

Check if rectangle overlaps.

Reimplemented in DRECT3D.

void DRECT2D::Set ( double  x1,
double  y1,
double  x2,
double  y2 
) [inline]

Set given (x1,y1), (x2,y2) with no ordering test.

Reimplemented in DRECT3D.

void DRECT2D::SetCorners ( const DPOINT2D  pt1,
const DPOINT2D  pt2 
) [inline]

Set from any two opposite corners.

void DRECT2D::SetInvalid (  )  [inline]

Sets the initial values to the maximum possible and the final values to the minimum possible, thus making the rectangle "invalid".

Setting a rectangle to invalid means that no point will be in it. It also makes it easy to compute the min/max of a bunch of points. You just iterate through all the points and Extend() the rectangle. Normally, you'd have to handle the first point specially.

Reimplemented in DRECT3D.

void DRECT2D::SwapBytes (  )  [inline]

Perform byte-order swapping.

Reimplemented in DRECT3D.


Member Data Documentation

Minimum X coordinate (inclusive).

Maximum X coordinate (inclusive).

Minimum Y coordinate (inclusive).

Maximum Y coordinate (inclusive).


The documentation for this struct was generated from the following file:

Generated on Sun Oct 7 21:33:19 2012 for TNTsdk 2012 by  doxygen 1.6.1