e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the plane
(x, y, z) = u * e1 + v * e2 + origin
e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the plane radius Radius of the cylinder
(x, y, z) = radius * [cos(u) * e1 + sin(u) * e2] +
v * e3 + origin
e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the cone alpha Angle between the axis of the cone and the generating line
(x, y, z) = v * tan(alpha) * [cos(u) * e1 +
sin(u) * e2] + v * e3 + origin
e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the torus radius1 Distance from the center of the generating arc to the axis of revolution radius2 Radius of the generating arc
(x, y, z) = (R1 + R2 * cos(v)) * [cos(u) * e1 +
sin(u) * e2] + R2 * sin(v) * e3 +
origin
e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the surface of revolution curve Generating curve
curve(v) = (c1, c2, c3) is a point on the curve.
(x, y, z) = [c1 * cos(u) - c2 * sin(u)] * e1 +
[c1 * sin(u) + c2 * cos(u)] * e2 +
c3 * e3 + origin
e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the ruled surface curve_1 First generating curve curve_2 Second generating curve
(x', y', z') is the point in local coordinates.
(x', y', z') = (1 - v) * C1(u) + v * C2(u)
(x, y, z) = x' * e1 + y' * e2 + z' * e3 + origin
e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the tabulated cylinder curve Generating curve
(x', y', z') is the point in local coordinates.
(x', y', z') = C(u) + (0, 0, v)
(x, y, z) = x' * e1 + y' * e2 + z' * e3 + origin
le_curve u = 0 boundary ri_curve u = 1 boundary dn_curve v = 0 boundary up_curve v = 1 boundary point_matrix[2][2] Corner points uvder_matrix[2][2] Corner mixed derivatives
pnt_spline P(v) spline running along the u = 0 boundary ctr_spline C(v) spline along the centers of the fillet arcs tan_spline T(v) spline of unit tangents to the axis of the fillet arcs
R(v) = P(v) - C(v) (x,y,z) = C(v) + R(v) * cos(u) + T(v) X R(v) * sin(u)
u_par_arr[] Point parameters, in the u direction, of size Nu v_par_arr[] Point parameters, in the v direction, of size Nv point_arr[][3] Array of interpolant points, of size Nu x Nv u_tan_arr[][3] Array of u tangent vectors at interpolant points, of size Nu x Nv v_tan_arr[][3] Array of v tangent vectors at interpolant points, of size Nu x Nv uvder_arr[][3] Array of mixed derivatives at interpolant points, of size Nu x Nv
• | Allows for a unique 3x3 polynomial around every patch. |
• | There is second order continuity across patch boundaries. |
• | The point and tangent vectors represent the ordering of an array of [i][j], where u varies with i, and v varies with j. In walking through thepoint_arr[][3], you will find that the innermost variable representing v(j) varies first. |
u_par_arr[]
|
Point parameters, in the u direction, of size Nu
|
v_par_arr[]
|
Point parameters, in the v direction, of size Nv
|
point_arr[][3]
|
Array of interpolant points, of size Nu x Nv
|
u_tan_arr[][3]
|
Array of u tangent vectors at interpolant points, of size Nu x Nv
|
v_tan_arr[][3]
|
Array of v tangent vectors at interpolant points, of size Nu x Nv
|
uvder_arr[][3]
|
Array of mixed derivatives at interpolant points, of size Nu x Nv
|
(*u_der2_arrs[2])[3]
|
2 Arrays of 2nd U derivatives along V boundaries interpolation points, size of Nv.
|
(*v_der2_arrs[2])[3]
|
2 Arrays of 3rd V derivatives along U boundaries interpolation points, size of Nu.
|
(*uuv_der[2])[3]
|
2 Arrays of uuv mixed derivatives along V boundaries interpolation points, size of Nv.
|
(*vvu_der[2])[3]
|
Arrays of vvu mixed derivatives along U boundaries interpolation points, size of Nv.
|
der4[4][3] UUVV
|
derivatives at the corners
|
• | Each second degree derivatives array can be NULL. If it is defined then corresponding 3rd degree mixed derivatives should be defined. |
• | Each der4 can be NULL and should be defined if 2nd degree derivatives are defined in both directions at the corresponding corner. |
deg[2] Degree of the basis functions (in u and v) u_par_arr[] Array of knots on the parameter line u v_par_arr[] Array of knots on the parameter line v wghts[] Array of weights for rational NURBS, otherwise NULL c_point_arr[][3] Array of control points
k = degree in u l = degree in v N1 = (number of knots in u) - (degree in u) - 2 N2 = (number of knots in v) - (degree in v) - 2 B = basis function in u B = basis function in v w = weights C = control points (x,y,z) * w
e1[3] x' vector of the local coordinate system e2[3] y' vector of the local coordinate system e3[3] z' vector of the local coordinate system, which corresponds to the axis of revolution of the surface origin[3] Origin of the local coordinate system splsrf Spline surface data structure
u_par_arr[] Point parameters, in the u direction, of size Nu v_par_arr[] Point parameters, in the v direction, of size Nv point_arr[][3] Array of points, in cylindrical coordinates, of size Nu x Nv. The array components are as follows: point_arr[i][0] - Radius point_arr[i][1] - Theta point_arr[i][2] - Z u_tan_arr[][3] Array of u tangent vectors. in cylindrical coordinates, of size Nu x Nv v_tan_arr[][3] Array of v tangent vectors, in cylindrical coordinates, of size Nu x Nv uvder_arr[][3] Array of mixed derivatives, in cylindrical coordinates, of size Nu x Nv
x' = r cos (theta)
y' = r sin (theta)
z' = z
e1[3] Unit vector, in the u direction e2[3] Unit vector, in the v direction e3[3] Normal to the plane origin[3] Origin of the plane foreign_id Foreign ID returned by user_init_surf()
vector1[3] First vector that defines the
plane of the arc
vector2[3] Second vector that defines the
plane of the arc
origin[3] Origin that defines the plane
of the arc
start_angle Angular parameter of the starting
point
end_angle Angular parameter of the ending
point
radius Radius of the arc.
t' (the unnormalized parameter) is
(1 - t) * start_angle + t * end_angle
(x, y, z) = radius * [cos(t') * vector1 +
sin(t') * vector2] + origin
end1[3] Starting point of the line
end2[3] Ending point of the line
(x, y, z) = (1 - t) * end1 + t * end2
degree Degree of the basis function
params[] Array of knots
weights[] Array of weights for rational
NURBS, otherwise NULL.
c_pnts[][3] Array of control points
par_arr[] Array of spline parameters (t) at each point. pnt_arr[][3] Array of spline interpolant points tan_arr[][3] Array of tangent vectors at each point
par_arr[i] < t' < par_arr[i+1]
t0 = (t' - par_arr[i]) / (par_arr[i+1] - par_arr[i])
t1 = (par_arr[i+1] - t') / (par_arr[i+1] - par_arr[i])
The coordinates of the points are then:
(x, y, z) = pnt_arr[i] * t1^2 * (1 + 2 * t0) +
pnt_arr[i+1] * t0^2 * (1 + 2 * t1) +
(par_arr[i+1] - par_arr[i]) * t0 * t1 *
(tan_arr[i] * t1 - tan_arr[i+1] * t0)
center - Center point of the ellipse major_axis_unit_vect - Direction for the X-axis of the ellipse norm_axis_unit_vect - Direction for the Y-axis major_len - The “radius” in the X-direction minor_leng – The “radius” in the Y-direction start_ang – The ellipse start angle end_ang – The end angle for the ellipse
t' (the unnormalized parameter) is
(1 - t) * start_angle + t * end_angle
(x, y, z) = major_len * [cos(t') * vector1] +
minor_len * [sin(t') * vector2] + origin