Hide menu
Loading...
Searching...
No Matches
cadex.ModelData.Box Class Reference

Defines a 3D axis-aligned bounding box. More...

Inherits global.SystemIDisposable.

Public Member Functions

 Box (global::System.IntPtr cPtr, bool cMemoryOwn)
 
void Dispose ()
 
 Box ()
 Constructor.
 
 Box (cadex.Geom.Point theCorner1, cadex.Geom.Point theCorner2)
 Constructor.
 
cadex.Geom.Point MinCorner ()
 
cadex.Geom.Point MaxCorner ()
 
cadex.Geom.Point Corner (uint theIdx)
 Returns one of the bounding box corners.
 
cadex.Geom.Point Center ()
 Returns a center point.
 
void Add (cadex.Geom.Point thePoint)
 Adjusts the box corners so that it contains thePoint.
 
void Add (cadex.ModelData.Box theBox)
 Adjusts the box corners so that it contains theBox.
 
void Clear ()
 Resets the box.
 
void SetXRange (double theMin, double theMax)
 Sets the range of box along X axis to the specified values.
 
void SetYRange (double theMin, double theMax)
 Sets the range of box along Y axis to the specified values.
 
void SetZRange (double theMin, double theMax)
 Sets the range of box along Z axis to the specified values.
 
void SetRange (uint theIdx, double theMin, double theMax)
 Sets one range of the box to the specified values.
 
double XRange ()
 Returns the length of range along X axis.
 
double YRange ()
 Returns the length of range along Y axis.
 
double ZRange ()
 Returns the length of range along Z axis.
 
double Range (uint theIndex)
 
void Enlarge (double theX, double theY, double theZ)
 Enlarge the box dimensions by specified values.
 
void Enlarge (double theSize)
 Enlarge the box dimensions by specified value.
 
cadex.ModelData.Box Enlarged (double theX, double theY, double theZ)
 Return the box with dimensions enlarged by specified values.
 
cadex.ModelData.Box Enlarged (double theSize)
 Return the box with dimensions enlarged by specified value.
 
bool IsIn (cadex.Geom.Point thePoint)
 Returns true if the point lies inside the box.
 
bool Intersects (cadex.ModelData.Box theOther)
 Returns whether the other box has at least one common point with this box.
 
bool IsInfinite ()
 Returns true if at least one coordinate is infinite.
 
void Multiply (double theValue)
 Scales box by scalar value.
 
cadex.ModelData.Box Multiplied (double theValue)
 Returns the box scaled by scalar value.
 
void Transform (cadex.Geom.Transformation theTransformation)
 Transforms the box.
 
cadex.ModelData.Box Transformed (cadex.Geom.Transformation theTransformation)
 Returns the transformed box.
 

Protected Member Functions

virtual void Dispose (bool disposing)
 

Detailed Description

Defines a 3D axis-aligned bounding box.

Performs the scaling transformation of all the points of the box in the form:

\[ P'=\mathrm{theVal}^{-1}\; P \]

where \(P\) and \(P'\) are the box points before and after transformation respectively and \(\mathrm{theVal}^{-1}\) is the scale factor.

Performs the scaling transformation of all the points of the box in the form:

\[ P'=\mathrm{theVal}\; P \]

where \(P\) and \(P'\) are the box points before and after transformation respectively and \(\mathrm{theVal}\) is the scale factor.

Returns the result of th scaling transformation of all the points of the box in the form:

\[ P'=\mathrm{theVal}^{-1}\; P \]

where \(P\) and \(P'\) are the box points before and after transformation respectively and \(\mathrm{theVal}^{-1}\) is the scale factor.

Returns the result of the scaling transformation of all the points of the box in the form:

\[ P'=\mathrm{theVal}\; P \]

where \(P\) and \(P'\) are the box points before and after transformation respectively and \(\mathrm{theVal}\) is the scale factor.

The box is defined via two corners - MinCorner() and MaxCorner() - containing minimum and maximum coordinates respectively.

Constructor & Destructor Documentation

◆ Box() [1/2]

cadex.ModelData.Box.Box ( )
inline

Constructor.

Creates a box with infinite boundaries.

◆ Box() [2/2]

cadex.ModelData.Box.Box ( cadex.Geom.Point theCorner1,
cadex.Geom.Point theCorner2 )
inline

Constructor.

Creates a box from 2 points. Minimum corner is determined from the minimum values for each coordinate in the given points. Maximum corner is determined from the maximum values.

Member Function Documentation

◆ Add()

void cadex.ModelData.Box.Add ( cadex.Geom.Point thePoint)
inline

Adjusts the box corners so that it contains thePoint.

Takes into account only finite coordinates of thePoint (those whose absolute value is less than \(10^{100}\)).

◆ Center()

cadex.Geom.Point cadex.ModelData.Box.Center ( )
inline

Returns a center point.

Returns a middle of the diagonal between MinCorner() and MaxCorner().

◆ Clear()

void cadex.ModelData.Box.Clear ( )
inline

Resets the box.

Assigns infinite values to the coordinates, so that IsInfinite() returns true.

◆ Corner()

cadex.Geom.Point cadex.ModelData.Box.Corner ( uint theIdx)
inline

Returns one of the bounding box corners.

Corner Index
Minimum corner 0
Maximum corner 1

◆ Enlarge() [1/2]

void cadex.ModelData.Box.Enlarge ( double theSize)
inline

Enlarge the box dimensions by specified value.

Each box extent is shifted by \(\frac{1}{2}\cdot\mathrm{theSize}\) to the negative and positive side along respective axis.

◆ Enlarge() [2/2]

void cadex.ModelData.Box.Enlarge ( double theX,
double theY,
double theZ )
inline

Enlarge the box dimensions by specified values.

Each box extent is shifted by \(\frac{1}{2}\) of the specified shift value to the negative and positive side along respective axis.

◆ Enlarged() [1/2]

cadex.ModelData.Box cadex.ModelData.Box.Enlarged ( double theSize)
inline

Return the box with dimensions enlarged by specified value.

Each box extent of the result is shifted by \(\frac{1}{2}\cdot\mathrm{theSize}\) to the negative and positive side along respective axis compared to the original.

◆ Enlarged() [2/2]

cadex.ModelData.Box cadex.ModelData.Box.Enlarged ( double theX,
double theY,
double theZ )
inline

Return the box with dimensions enlarged by specified values.

Each box extent of the result is shifted by \(\frac{1}{2}\) of the specified shift value to the negative and positive side along respective axis compared to the original.

◆ IsInfinite()

bool cadex.ModelData.Box.IsInfinite ( )
inline

Returns true if at least one coordinate is infinite.

"Infinite" means that coordinate's absolute value is greater than \(10^{100}\).

See also
Clear()

◆ Multiply()

void cadex.ModelData.Box.Multiply ( double theValue)
inline

Scales box by scalar value.

Performs the scaling transformation of all the points of the box in the form:

\[ P'=\mathrm{theValue}\; P \]

where \(P\) and \(P'\) are the box points before and after transformation respectively and \(\mathrm{theValue}\) is the scale factor.

◆ SetRange()

void cadex.ModelData.Box.SetRange ( uint theIdx,
double theMin,
double theMax )
inline

Sets one range of the box to the specified values.

Range axis Index
X 0
Y 1
Z 2

◆ Transform()

void cadex.ModelData.Box.Transform ( cadex.Geom.Transformation theTransformation)
inline

Transforms the box.

If the transformation does not contain anything besides perhaps a translation, the box dimensions are kept as is and its position is recalculated accordingly.

If rotation or scale are present, all box corners are transformed and a new axis-aligned box containing them is built. If the box was infinite in one of the directions, the new box will also be infinite in the directions that are results of applying the transformation to the original directions. The new box most likely has larger dimensions than the original.

For more accurate results, it's recommended instead to transform the arguments the box was built from and only then calculate the box.