Functions | |
void | Trim_NURBS_Surface_By_Curve (int degree, int cpcount, const float *control_points, const float *weights, const float *knots, double start_u, double end_u) |
void Trim_NURBS_Surface_By_Curve | ( | int | degree, | |
int | cpcount, | |||
const float * | control_points, | |||
const float * | weights, | |||
const float * | knots, | |||
double | start_u, | |||
double | end_u | |||
) |
Inserts a NURBS curve into the trim list and applies the trim to a surface.
degree | - Degree of the curve. | |
cpcount | - Number of valid points in control_points. | |
control_points | - Vector of u-v tuples for the coordinates of the control . (A simple N x 2 array may also be used.) Passed by reference always. length should be 2 x cpcount x sizeof(float). | |
weights | - Control point weights. | |
knots | - Knot sequence. | |
start_u | - Start parameter. | |
end_u | - End parameter. |
NURBS Surfaces in HOOPS effectively have a parameterization from [0..1, 0..1], for he purposes of specifying trim regions. The uvpoints (for polys) and uvcontrol_points (for curves) are in the order [u1,v1,u2,v2, ... , u(N-1),v(N-1),uN,vN].
The last point of the trim will be implicitly connected to the first to form a closed region. Trim objects are normally each interpreted as independent closed regions, but can be combined using trim collections (see Create_Trim_Collection() ). Portions of the NURBS surface that fall within that closed region are cut away or saved, depending on the operation type set in Set_Trim_Operation() . The process of trimming a NURBS surface is thus a boolean subtract.
Trim objects are prepended to the front of the trim list, meaning that trim list offset 0 is the most recently inserted.
Here's some pseudocode:
key = HC_KInsert_NURBS_Surface(...) HC_Open_Gometry( key ) HC_Trim_Surface_By_Poly(...) HC_Close_Geometry()