Rhino C++ API
8.13
|
#include <opennurbs_bezier.h>
Public Member Functions | |
ON_BezierCage () | |
ON_BezierCage (const ON_3dPoint *box_corners, int order0, int order1, int order2) | |
ON_BezierCage (const ON_BezierCage &src) | |
ON_BezierCage (const ON_BoundingBox &bbox, int order0, int order1, int order2) | |
ON_BezierCage (int dim, bool is_rat, int order0, int order1, int order2) | |
~ON_BezierCage () | |
bool | Create (const ON_3dPoint *box_corners, int order0, int order1, int order2) |
bool | Create (const ON_BoundingBox &bbox, int order0, int order1, int order2) |
bool | Create (int dim, bool is_rat, int order0, int order1, int order2) |
double * | CV (int i, int j, int k) const |
int | CVSize () const |
ON::point_style | CVStyle () const |
int | Degree (int) const |
void | Destroy () |
int | Dimension () const |
ON_Interval | Domain (int) const |
void | Dump (ON_TextLog &text_log) const |
void | EmergencyDestroy () |
bool | Evaluate (double r, double s, double t, int der_count, int v_stride, double *v) const |
returns false if unable to evaluate More... | |
bool | GetBBox (double *boxmin, double *boxmax, bool bGrowBox=false) const |
bool | GetCV (int i, int j, int k, ON::point_style, double *) const |
bool | GetCV (int i, int j, int k, ON_3dPoint &) const |
bool | GetCV (int i, int j, int k, ON_4dPoint &) const |
bool | IsRational () const |
true if NURBS curve is rational More... | |
bool | IsSingular (int) const |
bool | IsValid () const |
bool | MakeNonRational () |
bool | MakeRational () |
bool | Morph (const ON_SpaceMorph &morph) |
ON_BezierCage & | operator= (const ON_BezierCage &src) |
int | Order (int) const |
= IsRational() ? Dim()+1 : Dim() More... | |
ON_3dPoint | PointAt (double r, double s, double t) const |
ON_3dPoint | PointAt (ON_3dPoint rst) const |
bool | Read (ON_BinaryArchive &archive) |
bool | ReserveCVCapacity (int cv_capacity) |
Tools for managing CV and knot memory. More... | |
bool | Rotate (double rotation_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center) |
bool | Rotate (double sin_angle, double cos_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center) |
bool | Scale (double scale_factor) |
bool | SetCV (int i, int j, int k, const ON_3dPoint &point) |
bool | SetCV (int i, int j, int k, const ON_4dPoint &hpoint) |
bool | SetCV (int i, int j, int k, ON::point_style, const double *) |
bool | SetWeight (int i, int j, int k, double w) |
bool | Transform (const ON_Xform &xform) |
bool | Translate (const ON_3dVector &translation_vector) |
double | Weight (int i, int j, int k) const |
bool | Write (ON_BinaryArchive &archive) const |
bool | ZeroCVs () |
zeros control vertices and, if rational, sets weights to 1 More... | |
Public Attributes | |
double * | m_cv |
int | m_cv_capacity |
int | m_cv_stride [3] |
int | m_dim |
Implementation. More... | |
bool | m_is_rat |
int | m_order [3] |
ON_BezierCage::ON_BezierCage | ( | ) |
ON_BezierCage::ON_BezierCage | ( | int | dim, |
bool | is_rat, | ||
int | order0, | ||
int | order1, | ||
int | order2 | ||
) |
ON_BezierCage::ON_BezierCage | ( | const ON_BoundingBox & | bbox, |
int | order0, | ||
int | order1, | ||
int | order2 | ||
) |
Description: Construct a bezier volume that maps the unit cube to a bounding box. Parameters: bbox - [in] target bounding box order0 - [in] order1 - [in] order2 - [in]
ON_BezierCage::ON_BezierCage | ( | const ON_3dPoint * | box_corners, |
int | order0, | ||
int | order1, | ||
int | order2 | ||
) |
Description: Construct a bezier volume that maps the unit cube to an eight sided box. Parameters: box_corners - [in] 8 points that define corners of the target volume.
7______________6 |\ |\ | \ | \ | \ _____________\ | 4 | 5 | | | | | | | | 3—|-------—2 | \ | \ | \ |t \ | s \ | \ | \0_____________\1 r
order0 - [in] order1 - [in] order2 - [in]
ON_BezierCage::~ON_BezierCage | ( | ) |
ON_BezierCage::ON_BezierCage | ( | const ON_BezierCage & | src | ) |
bool ON_BezierCage::Create | ( | const ON_3dPoint * | box_corners, |
int | order0, | ||
int | order1, | ||
int | order2 | ||
) |
Description: Create a bezier volume from a 3d box Parameters: box_corners - [in] 8 points that define corners of the volume
7______________6 |\ |\ | \ | \ | \ _____________\ | 4 | 5 | | | | | | | | 3---|----------2 | \ | \ | \ |t \ | s \ | \ | \0_____________\1 r
bool ON_BezierCage::Create | ( | const ON_BoundingBox & | bbox, |
int | order0, | ||
int | order1, | ||
int | order2 | ||
) |
Description: Create a Bezier volume with corners defined by a bounding box. Parameters: bbox - [in] target bounding box - the bezier will map the unit cube onto this bounding box. order0 - [in] order1 - [in] order2 - [in]
bool ON_BezierCage::Create | ( | int | dim, |
bool | is_rat, | ||
int | order0, | ||
int | order1, | ||
int | order2 | ||
) |
Description: Creates a bezier volume with specified orders. Parameters: dim - [in] is_rat - [in] order0 - [in] order1 - [in] order2 - [in] Returns: True if input was valid and creation succeeded.
double* ON_BezierCage::CV | ( | int | i, |
int | j, | ||
int | k | ||
) | const |
Description: Expert user function to get a pointer to control vertex memory. If you are not an expert user, please use ON_BezierCage::GetCV( ON_3dPoint& ) or ON_BezierCage::GetCV( ON_4dPoint& ). Parameters: cv_index0 - [in] (0 <= cv_index0 < m_order[0]) cv_index1 - [in] (0 <= cv_index1 < m_order[1]) Returns: Pointer to control vertex. Remarks: If the Bezier surface is rational, the format of the returned array is a homogeneos rational point with length m_dim+1. If the Bezier surface is not rational, the format of the returned array is a nonrational euclidean point with length m_dim. See Also ON_BezierCage::CVStyle ON_BezierCage::GetCV ON_BezierCage::Weight
int ON_BezierCage::CVSize | ( | ) | const |
number of doubles per control vertex
ON::point_style ON_BezierCage::CVStyle | ( | ) | const |
Description: Returns the style of control vertices in the m_cv array. Returns: @untitled table ON::not_rational m_is_rat is false ON::homogeneous_rational m_is_rat is true
int ON_BezierCage::Degree | ( | int | ) | const |
void ON_BezierCage::Destroy | ( | ) |
Description: Frees the CV array and sets all members to zero.
int ON_BezierCage::Dimension | ( | ) | const |
Description: The dimension of the image of the bazier volume map. This is generally three, but can be any positive integer. Returns: Dimesion of the image space.
ON_Interval ON_BezierCage::Domain | ( | int | ) | const |
void ON_BezierCage::Dump | ( | ON_TextLog & | text_log | ) | const |
void ON_BezierCage::EmergencyDestroy | ( | ) |
Description: Sets all members to zero. Does not free the CV array even when m_cv is not nullptr. Generally used when the CVs were allocated from a memory pool that no longer exists and the free done in ~ON_BezierCage would cause a crash.
bool ON_BezierCage::Evaluate | ( | double | r, |
double | s, | ||
double | t, | ||
int | der_count, | ||
int | v_stride, | ||
double * | v | ||
) | const |
returns false if unable to evaluate
v | array of length stride*(ndir+1)*(ndir+2)/2 |
bool ON_BezierCage::GetBBox | ( | double * | boxmin, |
double * | boxmax, | ||
bool | bGrowBox = false |
||
) | const |
Description: Gets the axis aligned bounding box that contains the bezier's control points. The bezier volume maps the unit cube into this box. Parameters: boxmin - [in] array of Dimension() doubles boxmax - [in] array of Dimension() doubles bGrowBox = [in] if true and the input is a valid box then the input box is grown to include this object's bounding box. Returns: true if successful.
bool ON_BezierCage::GetCV | ( | int | i, |
int | j, | ||
int | k, | ||
ON::point_style | , | ||
double * | |||
) | const |
i | get a single control vertex |
bool ON_BezierCage::GetCV | ( | int | i, |
int | j, | ||
int | k, | ||
ON_3dPoint & | |||
) | const |
i | get a single control vertex |
bool ON_BezierCage::GetCV | ( | int | i, |
int | j, | ||
int | k, | ||
ON_4dPoint & | |||
) | const |
i | get a single control vertex |
bool ON_BezierCage::IsRational | ( | ) | const |
true if NURBS curve is rational
bool ON_BezierCage::IsSingular | ( | int | ) | const |
bool ON_BezierCage::IsValid | ( | ) | const |
Description: Tests class to make sure members are correctly initialized. Returns: True if the orders are all >= 2, dimension is positive, and the rest of the members have settings that are valid for the orders and dimension.
bool ON_BezierCage::MakeNonRational | ( | ) |
bool ON_BezierCage::MakeRational | ( | ) |
bool ON_BezierCage::Morph | ( | const ON_SpaceMorph & | morph | ) |
ON_BezierCage& ON_BezierCage::operator= | ( | const ON_BezierCage & | src | ) |
int ON_BezierCage::Order | ( | int | ) | const |
= IsRational() ? Dim()+1 : Dim()
ON_3dPoint ON_BezierCage::PointAt | ( | double | r, |
double | s, | ||
double | t | ||
) | const |
Description: Evaluates bezer volume map. Parameters: rst - [in] Returns: Value of the bezier volume map at (r,s,t).
ON_3dPoint ON_BezierCage::PointAt | ( | ON_3dPoint | rst | ) | const |
Description: Evaluates bezer volume map. Parameters: rst - [in] Returns: Value of the bezier volume map at (rst.x,rst.y,rst.z).
bool ON_BezierCage::Read | ( | ON_BinaryArchive & | archive | ) |
Description: Reads the definition of this class from an archive previously saved by ON_BezierVolue::Write. Parameters: archive - [in] target archive Returns: True if successful.
bool ON_BezierCage::ReserveCVCapacity | ( | int | cv_capacity | ) |
Tools for managing CV and knot memory.
Description: cv_capacity - [in] number of doubles to reserve
bool ON_BezierCage::Rotate | ( | double | rotation_angle, |
const ON_3dVector & | rotation_axis, | ||
const ON_3dPoint & | rotation_center | ||
) |
Description: Rotates the bezier surface about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). Parameters: rotation_angle - [in] angle of rotation in radians rotation_axis - [in] direction of the axis of rotation rotation_center - [in] point on the axis of rotation Returns: true if bezier surface successfully rotated Remarks: Uses ON_BezierCage::Transform() function to calculate the result.
bool ON_BezierCage::Rotate | ( | double | sin_angle, |
double | cos_angle, | ||
const ON_3dVector & | rotation_axis, | ||
const ON_3dPoint & | rotation_center | ||
) |
Description: Rotates the bezier surface about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). Parameters: sin_angle - [in] sine of rotation angle cos_angle - [in] sine of rotation angle rotation_axis - [in] direction of the axis of rotation rotation_center - [in] point on the axis of rotation Returns: true if bezier surface successfully rotated Remarks: Uses ON_BezierCage::Transform() function to calculate the result.
bool ON_BezierCage::Scale | ( | double | scale_factor | ) |
Description: Scales the bezier surface by the specified facotor. The scale is centered at the origin. Parameters: scale_factor - [in] scale factor Returns: true if bezier surface successfully scaled Remarks: Uses ON_BezierCage::Transform() function to calculate the result.
bool ON_BezierCage::SetCV | ( | int | i, |
int | j, | ||
int | k, | ||
const ON_3dPoint & | point | ||
) |
set a single control vertex If NURBS is rational, weight will be set to 1.
bool ON_BezierCage::SetCV | ( | int | i, |
int | j, | ||
int | k, | ||
const ON_4dPoint & | hpoint | ||
) |
set a single control vertex value of control vertex If NURBS is not rational, euclidean location of homogeneous point will be used.
bool ON_BezierCage::SetCV | ( | int | i, |
int | j, | ||
int | k, | ||
ON::point_style | , | ||
const double * | |||
) |
i | set a single control vertex |
bool ON_BezierCage::SetWeight | ( | int | i, |
int | j, | ||
int | k, | ||
double | w | ||
) |
i | set value of control vertex weight |
bool ON_BezierCage::Transform | ( | const ON_Xform & | xform | ) |
bool ON_BezierCage::Translate | ( | const ON_3dVector & | translation_vector | ) |
Description: Translates the bezier surface along the specified vector. Parameters: translation_vector - [in] translation vector Returns: true if bezier surface successfully translated Remarks: Uses ON_BezierCage::Transform() function to calculate the result.
double ON_BezierCage::Weight | ( | int | i, |
int | j, | ||
int | k | ||
) | const |
i | get value of control vertex weight |
bool ON_BezierCage::Write | ( | ON_BinaryArchive & | archive | ) | const |
Description: Saves the definition of this class in serial binary form that can be read by ON_BezierVolue::Read. Parameters: archive - [in] target archive Returns: True if successful.
bool ON_BezierCage::ZeroCVs | ( | ) |
zeros control vertices and, if rational, sets weights to 1
double* ON_BezierCage::m_cv |
int ON_BezierCage::m_cv_capacity |
int ON_BezierCage::m_cv_stride[3] |
int ON_BezierCage::m_dim |
Implementation.
NOTE: These members are left "public" so that expert users may efficiently create bezier curves using the default constructor and borrow the knot and CV arrays from their native NURBS representation. No technical support will be provided for users who access these members directly. If you can't get your stuff to work, then use the constructor with the arguments and the SetKnot() and SetCV() functions to fill in the arrays.
bool ON_BezierCage::m_is_rat |
int ON_BezierCage::m_order[3] |