BRL-CAD
Non-Uniform Rational BSplines

NMG NURBS support. More...

Collaboration diagram for Non-Uniform Rational BSplines:

Files

file  nurb.h
 

Data Structures

struct  nmg_nurb_poly
 
struct  nmg_nurb_uv_hit
 
struct  oslo_mat
 
struct  bezier_2d_list
 
struct  nmg_curvature
 

Macros

#define NMG_CK_EDGE_G_CNURB(_p)   NMG_CKMAG(_p, NMG_EDGE_G_CNURB_MAGIC, "edge_g_cnurb")
 
#define NMG_CK_EDGE_G_EITHER(_p)   NMG_CK2MAG(_p, NMG_EDGE_G_LSEG_MAGIC, NMG_EDGE_G_CNURB_MAGIC, "edge_g_lseg|edge_g_cnurb")
 
#define NMG_CK_VERTEXUSE_A_CNURB(_p)   NMG_CKMAG(_p, NMG_VERTEXUSE_A_CNURB_MAGIC, "vertexuse_a_cnurb")
 
#define NMG_CK_VERTEXUSE_A_EITHER(_p)   NMG_CK2MAG(_p, NMG_VERTEXUSE_A_PLANE_MAGIC, NMG_VERTEXUSE_A_CNURB_MAGIC, "vertexuse_a_plane|vertexuse_a_cnurb")
 
#define RT_NURB_SPLIT_ROW   0
 
#define RT_NURB_SPLIT_COL   1
 
#define RT_NURB_SPLIT_FLAT   2
 
#define RT_NURB_PT_XY   1
 x, y coordinates More...
 
#define RT_NURB_PT_XYZ   2
 x, y, z coordinates More...
 
#define RT_NURB_PT_UV   3
 trim u, v parameter space More...
 
#define RT_NURB_PT_DATA   4
 random data More...
 
#define RT_NURB_PT_PROJ   5
 Projected Surface. More...
 
#define RT_NURB_PT_RATIONAL   1
 
#define RT_NURB_PT_NONRAT   0
 
#define RT_NURB_MAKE_PT_TYPE(n, t, h)   ((n<<5) | (t<<1) | h)
 
#define RT_NURB_EXTRACT_COORDS(pt)   (pt>>5)
 
#define RT_NURB_EXTRACT_PT_TYPE(pt)   ((pt>>1) & 0x0f)
 
#define RT_NURB_IS_PT_RATIONAL(pt)   (pt & 0x1)
 
#define RT_NURB_STRIDE(pt)   (RT_NURB_EXTRACT_COORDS(pt) * sizeof( fastf_t))
 
#define DEBUG_NMG_SPLINE   0x00000100
 9 Splines More...
 
#define NMG_CK_KNOT(_p)   BU_CKMAG(_p, RT_KNOT_VECTOR_MAGIC, "knot_vector")
 
#define NMG_CK_CNURB(_p)   BU_CKMAG(_p, NMG_EDGE_G_CNURB_MAGIC, "cnurb")
 
#define NMG_CK_SNURB(_p)   BU_CKMAG(_p, NMG_FACE_G_SNURB_MAGIC, "snurb")
 
#define GET_CNURB(p)
 
#define GET_SNURB(p)
 

Functions

void bezier (point2d_t *V, int degree, double t, point2d_t *Left, point2d_t *Right, point2d_t eval_pt, point2d_t normal)
 
int bezier_roots (point2d_t *w, int degree, point2d_t **intercept, point2d_t **normal, point2d_t ray_start, point2d_t ray_dir, point2d_t ray_perp, int depth, fastf_t epsilon)
 
struct bezier_2d_listbezier_subdivide (struct bezier_2d_list *bezier_hd, int degree, fastf_t epsilon, int depth)
 
fastf_t nmg_nurb_basis_eval (struct knot_vector *knts, int interval, int order, fastf_t mu)
 
int nmg_nurb_bezier (struct bu_list *bezier_hd, const struct face_g_snurb *srf)
 
int nmg_bez_check (const struct face_g_snurb *srf)
 
int nurb_crv_is_bezier (const struct edge_g_cnurb *crv)
 
void nurb_c_to_bezier (struct bu_list *clist, struct edge_g_cnurb *crv)
 
int nmg_nurb_s_bound (struct face_g_snurb *srf, point_t bmin, point_t bmax)
 
int nmg_nurb_c_bound (struct edge_g_cnurb *crv, point_t bmin, point_t bmax)
 
int nmg_nurb_s_check (struct face_g_snurb *srf)
 
int nmg_nurb_c_check (struct edge_g_cnurb *crv)
 
struct face_g_snurbnmg_nurb_scopy (const struct face_g_snurb *srf)
 
struct edge_g_cnurbnmg_nurb_crv_copy (const struct edge_g_cnurb *crv)
 
struct face_g_snurbnmg_nurb_s_diff (const struct face_g_snurb *srf, int dir)
 
struct edge_g_cnurbnmg_nurb_c_diff (const struct edge_g_cnurb *crv)
 
void nmg_nurb_mesh_diff (int order, const fastf_t *o_pts, fastf_t *n_pts, const fastf_t *knots, int o_stride, int n_stride, int o_size, int pt_type)
 
void nmg_nurb_s_eval (const struct face_g_snurb *srf, fastf_t u, fastf_t v, fastf_t *final_value)
 
void nmg_nurb_c_eval (const struct edge_g_cnurb *crv, fastf_t param, fastf_t *final_value)
 
fastf_tnmg_nurb_eval_crv (fastf_t *crv, int order, fastf_t param, const struct knot_vector *k_vec, int k_index, int coords)
 
void nmg_nurb_pr_crv (fastf_t *crv, int c_size, int coords)
 
int nmg_nurb_s_flat (struct face_g_snurb *srf, fastf_t epsilon)
 
fastf_t nmg_nurb_crv_flat (fastf_t *crv, int size, int pt_type)
 
void nmg_nurb_kvknot (struct knot_vector *new_knots, int order, fastf_t lower, fastf_t upper, int num)
 
void nmg_nurb_kvmult (struct knot_vector *new_kv, const struct knot_vector *kv, int num, fastf_t val)
 
void nmg_nurb_kvgen (struct knot_vector *kv, fastf_t lower, fastf_t upper, int num)
 
void nmg_nurb_kvmerge (struct knot_vector *new_knots, const struct knot_vector *kv1, const struct knot_vector *kv2)
 
int nmg_nurb_kvcheck (fastf_t val, const struct knot_vector *kv)
 
void nmg_nurb_kvextract (struct knot_vector *new_kv, const struct knot_vector *kv, int lower, int upper)
 
void nmg_nurb_kvcopy (struct knot_vector *new_kv, const struct knot_vector *old_kv)
 
void nmg_nurb_kvnorm (struct knot_vector *kv)
 
int nmg_nurb_knot_index (const struct knot_vector *kv, fastf_t k_value, int order)
 
void nmg_nurb_gen_knot_vector (struct knot_vector *new_knots, int order, fastf_t lower, fastf_t upper)
 
void nmg_nurb_s_norm (struct face_g_snurb *srf, fastf_t u, fastf_t v, fastf_t *norm)
 
void nmg_nurb_curvature (struct nmg_curvature *cvp, const struct face_g_snurb *srf, fastf_t u, fastf_t v)
 
void nmg_nurb_plot_snurb (FILE *fp, const struct face_g_snurb *srf)
 
void nmg_nurb_plot_cnurb (FILE *fp, const struct edge_g_cnurb *crv)
 
void nmg_nurb_s_plot (const struct face_g_snurb *srf)
 
void nmg_nurb_cinterp (struct edge_g_cnurb *crv, int order, const fastf_t *data, int n)
 
void nmg_nurb_sinterp (struct face_g_snurb *srf, int order, const fastf_t *data, int ymax, int xmax)
 
struct nmg_nurb_polynmg_nurb_to_poly (struct face_g_snurb *srf)
 
struct nmg_nurb_polynmg_nurb_mk_poly (fastf_t *v1, fastf_t *v2, fastf_t *v3, fastf_t uv1[2], fastf_t uv2[2], fastf_t uv3[2])
 
struct face_g_snurbnmg_nurb_project_srf (const struct face_g_snurb *srf, plane_t plane1, plane_t plane2)
 
void nmg_nurb_clip_srf (const struct face_g_snurb *srf, int dir, fastf_t *min, fastf_t *max)
 
struct face_g_snurbnmg_nurb_region_from_srf (const struct face_g_snurb *srf, int dir, fastf_t param1, fastf_t param2)
 
struct nmg_nurb_uv_hitnmg_nurb_intersect (const struct face_g_snurb *srf, plane_t plane1, plane_t plane2, double uv_tol, struct bu_list *plist)
 
struct face_g_snurbnmg_nurb_s_refine (const struct face_g_snurb *srf, int dir, struct knot_vector *kv)
 
struct edge_g_cnurbnmg_nurb_c_refine (const struct edge_g_cnurb *crv, struct knot_vector *kv)
 
void nmg_nurb_solve (fastf_t *mat_1, fastf_t *mat_2, fastf_t *solution, int dim, int coords)
 
void nmg_nurb_doolittle (fastf_t *mat_1, fastf_t *mat_2, int row, int coords)
 
void nmg_nurb_forw_solve (const fastf_t *lu, const fastf_t *b, fastf_t *y, int n)
 
void nmg_nurb_back_solve (const fastf_t *lu, const fastf_t *y, fastf_t *x, int n)
 
void nmg_nurb_p_mat (const fastf_t *mat, int dim)
 
void nmg_nurb_s_split (struct bu_list *split_hd, const struct face_g_snurb *srf, int dir)
 
void nmg_nurb_c_split (struct bu_list *split_hd, const struct edge_g_cnurb *crv)
 
int nmg_uv_in_lu (const fastf_t u, const fastf_t v, const struct loopuse *lu)
 
struct face_g_snurbnmg_nurb_new_snurb (int u_order, int v_order, int n_u_knots, int n_v_knots, int n_rows, int n_cols, int pt_type)
 
struct edge_g_cnurbnmg_nurb_new_cnurb (int order, int n_knots, int n_pts, int pt_type)
 
void nmg_nurb_free_snurb (struct face_g_snurb *srf)
 
void nmg_nurb_free_cnurb (struct edge_g_cnurb *crv)
 
void nmg_nurb_c_print (const struct edge_g_cnurb *crv)
 
void nmg_nurb_s_print (char *c, const struct face_g_snurb *srf)
 
void nmg_nurb_pr_kv (const struct knot_vector *kv)
 
void nmg_nurb_pr_mesh (const struct face_g_snurb *m)
 
void nmg_nurb_print_pnt_type (int c)
 
void nmg_nurb_clean_cnurb (struct edge_g_cnurb *crv)
 
struct face_g_snurbnmg_nurb_s_xsplit (struct face_g_snurb *srf, fastf_t param, int dir)
 
struct edge_g_cnurbnmg_nurb_c_xsplit (struct edge_g_cnurb *crv, fastf_t param)
 
struct oslo_matnmg_nurb_calc_oslo (int order, const struct knot_vector *tau_kv, struct knot_vector *t_kv)
 
void nmg_nurb_pr_oslo (struct oslo_mat *om)
 
void nmg_nurb_free_oslo (struct oslo_mat *om)
 
void nmg_nurb_map_oslo (struct oslo_mat *oslo, fastf_t *old_pts, fastf_t *new_pts, int o_stride, int n_stride, int lower, int upper, int pt_type)
 
fastf_t rt_cnurb_par_edge (const struct edge_g_cnurb *crv, fastf_t epsilon)
 
void nmg_face_g_snurb (struct faceuse *fu, int u_order, int v_order, int n_u_knots, int n_v_knots, fastf_t *ukv, fastf_t *vkv, int n_rows, int n_cols, int pt_type, fastf_t *mesh)
 
int nmg_snurb_calc_lu_uv_orient (const struct loopuse *lu)
 
void nmg_snurb_fu_eval (const struct faceuse *fu, const fastf_t u, const fastf_t v, point_t pt_on_srf)
 
void nmg_snurb_fu_get_norm (const struct faceuse *fu, const fastf_t u, const fastf_t v, vect_t norm)
 
void nmg_snurb_fu_get_norm_at_vu (const struct faceuse *fu, const struct vertexuse *vu, vect_t norm)
 
void nmg_vertexuse_a_cnurb (struct vertexuse *vu, const fastf_t *uvw)
 
void nmg_edge_g_cnurb (struct edgeuse *eu, int order, int n_knots, fastf_t *kv, int n_pts, int pt_type, fastf_t *points)
 
void nmg_edge_g_cnurb_plinear (struct edgeuse *eu)
 
struct edge_g_cnurbnmg_join_cnurbs (struct bu_list *crv_head)
 
struct edge_g_cnurbnmg_arc2d_to_cnurb (point_t i_center, point_t i_start, point_t i_end, int point_type, const struct bn_tol *tol)
 
int nmg_cnurb_is_linear (const struct edge_g_cnurb *cnrb)
 
int nmg_snurb_is_planar (const struct face_g_snurb *srf, const struct bn_tol *tol)
 
void nmg_eval_linear_trim_curve (const struct face_g_snurb *snrb, const fastf_t uvw[3], point_t xyz)
 
void nmg_eval_trim_curve (const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const fastf_t t, point_t xyz)
 
void nmg_eval_trim_to_tol (const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const fastf_t t0, const fastf_t t1, struct bu_list *head, const struct bn_tol *tol)
 
void nmg_eval_linear_trim_to_tol (const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const fastf_t uvw1[3], const fastf_t uvw2[3], struct bu_list *head, const struct bn_tol *tol)
 
int nmg_cnurb_lseg_coincident (const struct edgeuse *eu1, const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const point_t pt1, const point_t pt2, const struct bn_tol *tol)
 
int nmg_cnurb_is_on_crv (const struct edgeuse *eu, const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const struct bu_list *head, const struct bn_tol *tol)
 

Detailed Description

NMG NURBS support.

Note that some of the NURBS specific data structures currently live in topology.h - this is less than ideal, but the original implementation does not hide them from the topology containers...

Macro Definition Documentation

◆ NMG_CK_EDGE_G_CNURB

#define NMG_CK_EDGE_G_CNURB (   _p)    NMG_CKMAG(_p, NMG_EDGE_G_CNURB_MAGIC, "edge_g_cnurb")

Definition at line 43 of file nurb.h.

◆ NMG_CK_EDGE_G_EITHER

#define NMG_CK_EDGE_G_EITHER (   _p)    NMG_CK2MAG(_p, NMG_EDGE_G_LSEG_MAGIC, NMG_EDGE_G_CNURB_MAGIC, "edge_g_lseg|edge_g_cnurb")

Definition at line 44 of file nurb.h.

◆ NMG_CK_VERTEXUSE_A_CNURB

#define NMG_CK_VERTEXUSE_A_CNURB (   _p)    NMG_CKMAG(_p, NMG_VERTEXUSE_A_CNURB_MAGIC, "vertexuse_a_cnurb")

Definition at line 45 of file nurb.h.

◆ NMG_CK_VERTEXUSE_A_EITHER

#define NMG_CK_VERTEXUSE_A_EITHER (   _p)    NMG_CK2MAG(_p, NMG_VERTEXUSE_A_PLANE_MAGIC, NMG_VERTEXUSE_A_CNURB_MAGIC, "vertexuse_a_plane|vertexuse_a_cnurb")

Definition at line 46 of file nurb.h.

◆ RT_NURB_SPLIT_ROW

#define RT_NURB_SPLIT_ROW   0

Definition at line 48 of file nurb.h.

◆ RT_NURB_SPLIT_COL

#define RT_NURB_SPLIT_COL   1

Definition at line 49 of file nurb.h.

◆ RT_NURB_SPLIT_FLAT

#define RT_NURB_SPLIT_FLAT   2

Definition at line 50 of file nurb.h.

◆ RT_NURB_PT_XY

#define RT_NURB_PT_XY   1

x, y coordinates

Definition at line 67 of file nurb.h.

◆ RT_NURB_PT_XYZ

#define RT_NURB_PT_XYZ   2

x, y, z coordinates

Definition at line 68 of file nurb.h.

◆ RT_NURB_PT_UV

#define RT_NURB_PT_UV   3

trim u, v parameter space

Definition at line 69 of file nurb.h.

◆ RT_NURB_PT_DATA

#define RT_NURB_PT_DATA   4

random data

Definition at line 70 of file nurb.h.

◆ RT_NURB_PT_PROJ

#define RT_NURB_PT_PROJ   5

Projected Surface.

Definition at line 71 of file nurb.h.

◆ RT_NURB_PT_RATIONAL

#define RT_NURB_PT_RATIONAL   1

Definition at line 73 of file nurb.h.

◆ RT_NURB_PT_NONRAT

#define RT_NURB_PT_NONRAT   0

Definition at line 74 of file nurb.h.

◆ RT_NURB_MAKE_PT_TYPE

#define RT_NURB_MAKE_PT_TYPE (   n,
  t,
 
)    ((n<<5) | (t<<1) | h)

Definition at line 76 of file nurb.h.

◆ RT_NURB_EXTRACT_COORDS

#define RT_NURB_EXTRACT_COORDS (   pt)    (pt>>5)

Definition at line 77 of file nurb.h.

◆ RT_NURB_EXTRACT_PT_TYPE

#define RT_NURB_EXTRACT_PT_TYPE (   pt)    ((pt>>1) & 0x0f)

Definition at line 78 of file nurb.h.

◆ RT_NURB_IS_PT_RATIONAL

#define RT_NURB_IS_PT_RATIONAL (   pt)    (pt & 0x1)

Definition at line 79 of file nurb.h.

◆ RT_NURB_STRIDE

#define RT_NURB_STRIDE (   pt)    (RT_NURB_EXTRACT_COORDS(pt) * sizeof( fastf_t))

Definition at line 80 of file nurb.h.

◆ DEBUG_NMG_SPLINE

#define DEBUG_NMG_SPLINE   0x00000100

9 Splines

Definition at line 82 of file nurb.h.

◆ NMG_CK_KNOT

#define NMG_CK_KNOT (   _p)    BU_CKMAG(_p, RT_KNOT_VECTOR_MAGIC, "knot_vector")

Definition at line 86 of file nurb.h.

◆ NMG_CK_CNURB

#define NMG_CK_CNURB (   _p)    BU_CKMAG(_p, NMG_EDGE_G_CNURB_MAGIC, "cnurb")

Definition at line 87 of file nurb.h.

◆ NMG_CK_SNURB

#define NMG_CK_SNURB (   _p)    BU_CKMAG(_p, NMG_FACE_G_SNURB_MAGIC, "snurb")

Definition at line 88 of file nurb.h.

◆ GET_CNURB

#define GET_CNURB (   p)
Value:
{ \
BU_ALLOC((p), struct edge_g_cnurb); \
/* NMG_INCR_INDEX(p, m); */ \
BU_LIST_INIT( &(p)->l ); (p)->l.magic = NMG_EDGE_G_CNURB_MAGIC; \
}
#define NMG_EDGE_G_CNURB_MAGIC
Definition: magic.h:137
Edge NURBS curve geometry.
Definition: topology.h:376

Definition at line 91 of file nurb.h.

◆ GET_SNURB

#define GET_SNURB (   p)
Value:
{ \
BU_ALLOC((p), struct face_g_snurb); \
/* NMG_INCR_INDEX(p, m); */ \
BU_LIST_INIT( &(p)->l ); (p)->l.magic = NMG_FACE_G_SNURB_MAGIC; \
}
#define NMG_FACE_G_SNURB_MAGIC
Definition: magic.h:142
Face NURBS surface geometry.
Definition: topology.h:392

Definition at line 98 of file nurb.h.

Function Documentation

◆ bezier()

void bezier ( point2d_t V,
int  degree,
double  t,
point2d_t Left,
point2d_t Right,
point2d_t  eval_pt,
point2d_t  normal 
)

Evaluate a Bezier curve at a particular parameter value. Fill in control points for resulting sub-curves if "Left" and "Right" are non-null.

◆ bezier_roots()

int bezier_roots ( point2d_t w,
int  degree,
point2d_t **  intercept,
point2d_t **  normal,
point2d_t  ray_start,
point2d_t  ray_dir,
point2d_t  ray_perp,
int  depth,
fastf_t  epsilon 
)

Given an equation in Bernstein-Bezier form, find all of the roots in the interval [0, 1]. Return the number of roots found.

◆ bezier_subdivide()

struct bezier_2d_list * bezier_subdivide ( struct bezier_2d_list bezier_hd,
int  degree,
fastf_t  epsilon,
int  depth 
)

subdivide a 2D bezier curve at t=0.5

◆ nmg_nurb_basis_eval()

fastf_t nmg_nurb_basis_eval ( struct knot_vector knts,
int  interval,
int  order,
fastf_t  mu 
)

◆ nmg_nurb_bezier()

int nmg_nurb_bezier ( struct bu_list bezier_hd,
const struct face_g_snurb srf 
)

◆ nmg_bez_check()

int nmg_bez_check ( const struct face_g_snurb srf)

◆ nurb_crv_is_bezier()

int nurb_crv_is_bezier ( const struct edge_g_cnurb crv)

◆ nurb_c_to_bezier()

void nurb_c_to_bezier ( struct bu_list clist,
struct edge_g_cnurb crv 
)

◆ nmg_nurb_s_bound()

int nmg_nurb_s_bound ( struct face_g_snurb srf,
point_t  bmin,
point_t  bmax 
)

◆ nmg_nurb_c_bound()

int nmg_nurb_c_bound ( struct edge_g_cnurb crv,
point_t  bmin,
point_t  bmax 
)

◆ nmg_nurb_s_check()

int nmg_nurb_s_check ( struct face_g_snurb srf)

◆ nmg_nurb_c_check()

int nmg_nurb_c_check ( struct edge_g_cnurb crv)

◆ nmg_nurb_scopy()

struct face_g_snurb * nmg_nurb_scopy ( const struct face_g_snurb srf)

◆ nmg_nurb_crv_copy()

struct edge_g_cnurb * nmg_nurb_crv_copy ( const struct edge_g_cnurb crv)

◆ nmg_nurb_s_diff()

struct face_g_snurb * nmg_nurb_s_diff ( const struct face_g_snurb srf,
int  dir 
)

◆ nmg_nurb_c_diff()

struct edge_g_cnurb * nmg_nurb_c_diff ( const struct edge_g_cnurb crv)

◆ nmg_nurb_mesh_diff()

void nmg_nurb_mesh_diff ( int  order,
const fastf_t o_pts,
fastf_t n_pts,
const fastf_t knots,
int  o_stride,
int  n_stride,
int  o_size,
int  pt_type 
)

◆ nmg_nurb_s_eval()

void nmg_nurb_s_eval ( const struct face_g_snurb srf,
fastf_t  u,
fastf_t  v,
fastf_t final_value 
)

◆ nmg_nurb_c_eval()

void nmg_nurb_c_eval ( const struct edge_g_cnurb crv,
fastf_t  param,
fastf_t final_value 
)

◆ nmg_nurb_eval_crv()

fastf_t * nmg_nurb_eval_crv ( fastf_t crv,
int  order,
fastf_t  param,
const struct knot_vector k_vec,
int  k_index,
int  coords 
)

◆ nmg_nurb_pr_crv()

void nmg_nurb_pr_crv ( fastf_t crv,
int  c_size,
int  coords 
)

◆ nmg_nurb_s_flat()

int nmg_nurb_s_flat ( struct face_g_snurb srf,
fastf_t  epsilon 
)

◆ nmg_nurb_crv_flat()

fastf_t nmg_nurb_crv_flat ( fastf_t crv,
int  size,
int  pt_type 
)

◆ nmg_nurb_kvknot()

void nmg_nurb_kvknot ( struct knot_vector new_knots,
int  order,
fastf_t  lower,
fastf_t  upper,
int  num 
)

◆ nmg_nurb_kvmult()

void nmg_nurb_kvmult ( struct knot_vector new_kv,
const struct knot_vector kv,
int  num,
fastf_t  val 
)

◆ nmg_nurb_kvgen()

void nmg_nurb_kvgen ( struct knot_vector kv,
fastf_t  lower,
fastf_t  upper,
int  num 
)

◆ nmg_nurb_kvmerge()

void nmg_nurb_kvmerge ( struct knot_vector new_knots,
const struct knot_vector kv1,
const struct knot_vector kv2 
)

◆ nmg_nurb_kvcheck()

int nmg_nurb_kvcheck ( fastf_t  val,
const struct knot_vector kv 
)

◆ nmg_nurb_kvextract()

void nmg_nurb_kvextract ( struct knot_vector new_kv,
const struct knot_vector kv,
int  lower,
int  upper 
)

◆ nmg_nurb_kvcopy()

void nmg_nurb_kvcopy ( struct knot_vector new_kv,
const struct knot_vector old_kv 
)

◆ nmg_nurb_kvnorm()

void nmg_nurb_kvnorm ( struct knot_vector kv)

◆ nmg_nurb_knot_index()

int nmg_nurb_knot_index ( const struct knot_vector kv,
fastf_t  k_value,
int  order 
)

◆ nmg_nurb_gen_knot_vector()

void nmg_nurb_gen_knot_vector ( struct knot_vector new_knots,
int  order,
fastf_t  lower,
fastf_t  upper 
)

◆ nmg_nurb_s_norm()

void nmg_nurb_s_norm ( struct face_g_snurb srf,
fastf_t  u,
fastf_t  v,
fastf_t norm 
)

◆ nmg_nurb_curvature()

void nmg_nurb_curvature ( struct nmg_curvature cvp,
const struct face_g_snurb srf,
fastf_t  u,
fastf_t  v 
)

◆ nmg_nurb_plot_snurb()

void nmg_nurb_plot_snurb ( FILE *  fp,
const struct face_g_snurb srf 
)

◆ nmg_nurb_plot_cnurb()

void nmg_nurb_plot_cnurb ( FILE *  fp,
const struct edge_g_cnurb crv 
)

◆ nmg_nurb_s_plot()

void nmg_nurb_s_plot ( const struct face_g_snurb srf)

◆ nmg_nurb_cinterp()

void nmg_nurb_cinterp ( struct edge_g_cnurb crv,
int  order,
const fastf_t data,
int  n 
)

◆ nmg_nurb_sinterp()

void nmg_nurb_sinterp ( struct face_g_snurb srf,
int  order,
const fastf_t data,
int  ymax,
int  xmax 
)

◆ nmg_nurb_to_poly()

struct nmg_nurb_poly * nmg_nurb_to_poly ( struct face_g_snurb srf)

◆ nmg_nurb_mk_poly()

struct nmg_nurb_poly * nmg_nurb_mk_poly ( fastf_t v1,
fastf_t v2,
fastf_t v3,
fastf_t  uv1[2],
fastf_t  uv2[2],
fastf_t  uv3[2] 
)

◆ nmg_nurb_project_srf()

struct face_g_snurb * nmg_nurb_project_srf ( const struct face_g_snurb srf,
plane_t  plane1,
plane_t  plane2 
)

◆ nmg_nurb_clip_srf()

void nmg_nurb_clip_srf ( const struct face_g_snurb srf,
int  dir,
fastf_t min,
fastf_t max 
)

◆ nmg_nurb_region_from_srf()

struct face_g_snurb * nmg_nurb_region_from_srf ( const struct face_g_snurb srf,
int  dir,
fastf_t  param1,
fastf_t  param2 
)

◆ nmg_nurb_intersect()

struct nmg_nurb_uv_hit * nmg_nurb_intersect ( const struct face_g_snurb srf,
plane_t  plane1,
plane_t  plane2,
double  uv_tol,
struct bu_list plist 
)

◆ nmg_nurb_s_refine()

struct face_g_snurb * nmg_nurb_s_refine ( const struct face_g_snurb srf,
int  dir,
struct knot_vector kv 
)

◆ nmg_nurb_c_refine()

struct edge_g_cnurb * nmg_nurb_c_refine ( const struct edge_g_cnurb crv,
struct knot_vector kv 
)

◆ nmg_nurb_solve()

void nmg_nurb_solve ( fastf_t mat_1,
fastf_t mat_2,
fastf_t solution,
int  dim,
int  coords 
)

◆ nmg_nurb_doolittle()

void nmg_nurb_doolittle ( fastf_t mat_1,
fastf_t mat_2,
int  row,
int  coords 
)

◆ nmg_nurb_forw_solve()

void nmg_nurb_forw_solve ( const fastf_t lu,
const fastf_t b,
fastf_t y,
int  n 
)

◆ nmg_nurb_back_solve()

void nmg_nurb_back_solve ( const fastf_t lu,
const fastf_t y,
fastf_t x,
int  n 
)

◆ nmg_nurb_p_mat()

void nmg_nurb_p_mat ( const fastf_t mat,
int  dim 
)

◆ nmg_nurb_s_split()

void nmg_nurb_s_split ( struct bu_list split_hd,
const struct face_g_snurb srf,
int  dir 
)

◆ nmg_nurb_c_split()

void nmg_nurb_c_split ( struct bu_list split_hd,
const struct edge_g_cnurb crv 
)

◆ nmg_uv_in_lu()

int nmg_uv_in_lu ( const fastf_t  u,
const fastf_t  v,
const struct loopuse lu 
)

◆ nmg_nurb_new_snurb()

struct face_g_snurb * nmg_nurb_new_snurb ( int  u_order,
int  v_order,
int  n_u_knots,
int  n_v_knots,
int  n_rows,
int  n_cols,
int  pt_type 
)

◆ nmg_nurb_new_cnurb()

struct edge_g_cnurb * nmg_nurb_new_cnurb ( int  order,
int  n_knots,
int  n_pts,
int  pt_type 
)

◆ nmg_nurb_free_snurb()

void nmg_nurb_free_snurb ( struct face_g_snurb srf)

◆ nmg_nurb_free_cnurb()

void nmg_nurb_free_cnurb ( struct edge_g_cnurb crv)

◆ nmg_nurb_c_print()

void nmg_nurb_c_print ( const struct edge_g_cnurb crv)

◆ nmg_nurb_s_print()

void nmg_nurb_s_print ( char *  c,
const struct face_g_snurb srf 
)

◆ nmg_nurb_pr_kv()

void nmg_nurb_pr_kv ( const struct knot_vector kv)

◆ nmg_nurb_pr_mesh()

void nmg_nurb_pr_mesh ( const struct face_g_snurb m)

◆ nmg_nurb_print_pnt_type()

void nmg_nurb_print_pnt_type ( int  c)

◆ nmg_nurb_clean_cnurb()

void nmg_nurb_clean_cnurb ( struct edge_g_cnurb crv)

◆ nmg_nurb_s_xsplit()

struct face_g_snurb * nmg_nurb_s_xsplit ( struct face_g_snurb srf,
fastf_t  param,
int  dir 
)

◆ nmg_nurb_c_xsplit()

struct edge_g_cnurb * nmg_nurb_c_xsplit ( struct edge_g_cnurb crv,
fastf_t  param 
)

◆ nmg_nurb_calc_oslo()

struct oslo_mat * nmg_nurb_calc_oslo ( int  order,
const struct knot_vector tau_kv,
struct knot_vector t_kv 
)

◆ nmg_nurb_pr_oslo()

void nmg_nurb_pr_oslo ( struct oslo_mat om)

◆ nmg_nurb_free_oslo()

void nmg_nurb_free_oslo ( struct oslo_mat om)

◆ nmg_nurb_map_oslo()

void nmg_nurb_map_oslo ( struct oslo_mat oslo,
fastf_t old_pts,
fastf_t new_pts,
int  o_stride,
int  n_stride,
int  lower,
int  upper,
int  pt_type 
)

◆ rt_cnurb_par_edge()

fastf_t rt_cnurb_par_edge ( const struct edge_g_cnurb crv,
fastf_t  epsilon 
)

◆ nmg_face_g_snurb()

void nmg_face_g_snurb ( struct faceuse fu,
int  u_order,
int  v_order,
int  n_u_knots,
int  n_v_knots,
fastf_t ukv,
fastf_t vkv,
int  n_rows,
int  n_cols,
int  pt_type,
fastf_t mesh 
)

◆ nmg_snurb_calc_lu_uv_orient()

int nmg_snurb_calc_lu_uv_orient ( const struct loopuse lu)

◆ nmg_snurb_fu_eval()

void nmg_snurb_fu_eval ( const struct faceuse fu,
const fastf_t  u,
const fastf_t  v,
point_t  pt_on_srf 
)

◆ nmg_snurb_fu_get_norm()

void nmg_snurb_fu_get_norm ( const struct faceuse fu,
const fastf_t  u,
const fastf_t  v,
vect_t  norm 
)

◆ nmg_snurb_fu_get_norm_at_vu()

void nmg_snurb_fu_get_norm_at_vu ( const struct faceuse fu,
const struct vertexuse vu,
vect_t  norm 
)

◆ nmg_vertexuse_a_cnurb()

void nmg_vertexuse_a_cnurb ( struct vertexuse vu,
const fastf_t uvw 
)

◆ nmg_edge_g_cnurb()

void nmg_edge_g_cnurb ( struct edgeuse eu,
int  order,
int  n_knots,
fastf_t kv,
int  n_pts,
int  pt_type,
fastf_t points 
)

◆ nmg_edge_g_cnurb_plinear()

void nmg_edge_g_cnurb_plinear ( struct edgeuse eu)

◆ nmg_join_cnurbs()

struct edge_g_cnurb * nmg_join_cnurbs ( struct bu_list crv_head)

◆ nmg_arc2d_to_cnurb()

struct edge_g_cnurb * nmg_arc2d_to_cnurb ( point_t  i_center,
point_t  i_start,
point_t  i_end,
int  point_type,
const struct bn_tol tol 
)

◆ nmg_cnurb_is_linear()

int nmg_cnurb_is_linear ( const struct edge_g_cnurb cnrb)

◆ nmg_snurb_is_planar()

int nmg_snurb_is_planar ( const struct face_g_snurb srf,
const struct bn_tol tol 
)

◆ nmg_eval_linear_trim_curve()

void nmg_eval_linear_trim_curve ( const struct face_g_snurb snrb,
const fastf_t  uvw[3],
point_t  xyz 
)

◆ nmg_eval_trim_curve()

void nmg_eval_trim_curve ( const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const fastf_t  t,
point_t  xyz 
)

◆ nmg_eval_trim_to_tol()

void nmg_eval_trim_to_tol ( const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const fastf_t  t0,
const fastf_t  t1,
struct bu_list head,
const struct bn_tol tol 
)

◆ nmg_eval_linear_trim_to_tol()

void nmg_eval_linear_trim_to_tol ( const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const fastf_t  uvw1[3],
const fastf_t  uvw2[3],
struct bu_list head,
const struct bn_tol tol 
)

◆ nmg_cnurb_lseg_coincident()

int nmg_cnurb_lseg_coincident ( const struct edgeuse eu1,
const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const point_t  pt1,
const point_t  pt2,
const struct bn_tol tol 
)

◆ nmg_cnurb_is_on_crv()

int nmg_cnurb_is_on_crv ( const struct edgeuse eu,
const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const struct bu_list head,
const struct bn_tol tol 
)