NURBS
[Primitives]

Collaboration diagram for NURBS:


Files

file  nurb.h
 Define surface and curve structures for Non Rational Uniform B-Spline (NURB) curves and surfaces.
file  nurb_basis.c
file  nurb_bezier.c
file  nurb_bound.c
file  nurb_c2.c
file  nurb_copy.c
file  nurb_diff.c
file  nurb_eval.c
file  nurb_example.c
file  nurb_flat.c
file  nurb_interp.c
file  nurb_knot.c
file  nurb_norm.c
file  nurb_plot.c
file  nurb_poly.c
file  nurb_ray.c
file  nurb_refine.c
file  nurb_reverse.c
file  nurb_solve.c
file  nurb_split.c
file  nurb_tess.c
file  nurb_trim_util.c
file  nurb_util.c
file  nurb_xsplit.c
file  oslo_map.c

Data Structures

struct  rt_nurb_poly
struct  rt_nurb_uv_hit
struct  oslo_mat
struct  bezier_2d_list

Defines

#define NURB_H   seen
#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 coordintes
#define RT_NURB_PT_XYZ   2
 x,y,z coordinates
#define RT_NURB_PT_UV   3
 trim u,v parameter space
#define RT_NURB_PT_DATA   4
 random data
#define RT_NURB_PT_PROJ   5
 Projected Surface.
#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 NMG_CK_KNOT(_p)   BU_CKMAG(_p, RT_KNOT_VECTOR_MAGIC, "knot_vector")
#define NMG_CK_CNURB(_p)   BU_CKMAG(_p, RT_CNURB_MAGIC, "cnurb")
#define NMG_CK_SNURB(_p)   BU_CKMAG(_p, RT_SNURB_MAGIC, "snurb")
#define GET_CNURB(p)
#define GET_SNURB(p)
#define RT_CNURB_MAGIC   0x636e7262
#define RT_SNURB_MAGIC   0x736e7262
#define MAX(i, j)   ( (i) > (j) ? (i) : (j) )
#define MIN(i, j)   ( (i) < (j) ? (i) : (j) )

Functions

RT_EXPORT fastf_t rt_nurb_basis_eval (struct knot_vector *knts, int interval, int order, fastf_t mu)
RT_EXPORT int rt_nurb_bezier (struct bu_list *bezier_hd, const struct face_g_snurb *srf, struct resource *res)
RT_EXPORT int rt_bez_check (const struct face_g_snurb *srf)
RT_EXPORT int rt_nurb_s_bound (struct face_g_snurb *srf, point_t bmin, point_t bmax)
RT_EXPORT int rt_nurb_c_bound (struct edge_g_cnurb *crv, point_t bmin, point_t bmax)
RT_EXPORT int rt_nurb_s_check (struct face_g_snurb *srf)
RT_EXPORT int rt_nurb_c_check (struct edge_g_cnurb *crv)
RT_EXPORT struct face_g_snurbrt_nurb_scopy (const struct face_g_snurb *srf, struct resource *res)
RT_EXPORT struct face_g_snurbrt_nurb_s_diff (const struct face_g_snurb *srf, int dir)
RT_EXPORT struct edge_g_cnurbrt_nurb_c_diff (const struct edge_g_cnurb *crv)
RT_EXPORT void rt_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)
RT_EXPORT void rt_nurb_s_eval (const struct face_g_snurb *srf, fastf_t u, fastf_t v, fastf_t *final_value)
RT_EXPORT void rt_nurb_c_eval (const struct edge_g_cnurb *crv, fastf_t param, fastf_t *final_value)
RT_EXPORT fastf_trt_nurb_eval_crv (fastf_t *crv, int order, fastf_t param, const struct knot_vector *k_vec, int k_index, int coords)
RT_EXPORT void rt_nurb_pr_crv (fastf_t *crv, int c_size, int coords)
RT_EXPORT int rt_nurb_s_flat (struct face_g_snurb *srf, fastf_t epsilon)
RT_EXPORT fastf_t rt_nurb_crv_flat (fastf_t *crv, int size, int pt_type)
RT_EXPORT void rt_nurb_kvknot (struct knot_vector *new_knots, int order, fastf_t lower, fastf_t upper, int num, struct resource *res)
RT_EXPORT void rt_nurb_kvmult (struct knot_vector *new_kv, const struct knot_vector *kv, int num, fastf_t val, struct resource *res)
RT_EXPORT void rt_nurb_kvgen (struct knot_vector *kv, fastf_t lower, fastf_t upper, int num, struct resource *res)
RT_EXPORT void rt_nurb_kvmerge (struct knot_vector *new_knots, const struct knot_vector *kv1, const struct knot_vector *kv2, struct resource *res)
RT_EXPORT int rt_nurb_kvcheck (fastf_t val, const struct knot_vector *kv)
RT_EXPORT void rt_nurb_kvextract (struct knot_vector *new_kv, const struct knot_vector *kv, int lower, int upper, struct resource *res)
RT_EXPORT void rt_nurb_kvcopy (struct knot_vector *new_kv, const struct knot_vector *old_kv, struct resource *res)
RT_EXPORT void rt_nurb_kvnorm (struct knot_vector *kv)
RT_EXPORT int rt_knot_index (const struct knot_vector *kv, fastf_t k_value, int order)
RT_EXPORT void rt_nurb_gen_knot_vector (struct knot_vector *new_knots, int order, fastf_t lower, fastf_t upper, struct resource *res)
RT_EXPORT void rt_nurb_s_norm (struct face_g_snurb *srf, fastf_t u, fastf_t v, fastf_t *norm)
RT_EXPORT void rt_nurb_curvature (struct curvature *cvp, const struct face_g_snurb *srf, fastf_t u, fastf_t v)
RT_EXPORT void rt_nurb_plot_snurb (FILE *fp, const struct face_g_snurb *srf)
RT_EXPORT void rt_nurb_plot_cnurb (FILE *fp, const struct edge_g_cnurb *crv)
RT_EXPORT void rt_nurb_s_plot (const struct face_g_snurb *srf)
RT_EXPORT void rt_nurb_cinterp (struct edge_g_cnurb *crv, int order, const fastf_t *data, int n)
RT_EXPORT void rt_nurb_sinterp (struct face_g_snurb *srf, int order, const fastf_t *data, int ymax, int xmax)
RT_EXPORT struct rt_nurb_polyrt_nurb_to_poly (struct face_g_snurb *srf)
RT_EXPORT struct rt_nurb_polyrt_nurb_mk_poly (fastf_t *v1, fastf_t *v2, fastf_t *v3, fastf_t uv1[2], fastf_t uv2[2], fastf_t uv3[2])
RT_EXPORT struct face_g_snurbrt_nurb_project_srf (const struct face_g_snurb *srf, plane_t plane1, plane_t plane2, struct resource *res)
RT_EXPORT void rt_nurb_clip_srf (const struct face_g_snurb *srf, int dir, fastf_t *min, fastf_t *max)
RT_EXPORT struct face_g_snurbrt_nurb_region_from_srf (const struct face_g_snurb *srf, int dir, fastf_t param1, fastf_t param2, struct resource *res)
RT_EXPORT struct rt_nurb_uv_hitrt_nurb_intersect (const struct face_g_snurb *srf, plane_t plane1, plane_t plane2, double uv_tol, struct resource *res)
RT_EXPORT struct face_g_snurbrt_nurb_s_refine (const struct face_g_snurb *srf, int dir, struct knot_vector *kv, struct resource *res)
RT_EXPORT struct edge_g_cnurbrt_nurb_c_refine (const struct edge_g_cnurb *crv, struct knot_vector *kv)
RT_EXPORT void rt_nurb_solve (fastf_t *mat_1, fastf_t *mat_2, fastf_t *solution, int dim, int coords)
RT_EXPORT void rt_nurb_doolittle (fastf_t *mat_1, fastf_t *mat_2, int row, int coords)
RT_EXPORT void rt_nurb_forw_solve (const fastf_t *lu, const fastf_t *b, fastf_t *y, int n)
RT_EXPORT void rt_nurb_back_solve (const fastf_t *lu, const fastf_t *y, fastf_t *x, int n)
RT_EXPORT void rt_nurb_p_mat (const fastf_t *mat, int dim)
RT_EXPORT void rt_nurb_s_split (struct bu_list *split_hd, const struct face_g_snurb *srf, int dir, struct resource *res)
RT_EXPORT void rt_nurb_c_split (struct bu_list *split_hd, const struct edge_g_cnurb *crv)
RT_EXPORT struct face_g_snurbrt_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 resource *res)
RT_EXPORT struct edge_g_cnurbrt_nurb_new_cnurb (int order, int n_knots, int n_pts, int pt_type)
RT_EXPORT void rt_nurb_free_snurb (struct face_g_snurb *srf, struct resource *res)
RT_EXPORT void rt_nurb_free_cnurb (struct edge_g_cnurb *crv)
RT_EXPORT void rt_nurb_c_print (const struct edge_g_cnurb *crv)
RT_EXPORT void rt_nurb_s_print (char *c, const struct face_g_snurb *srf)
RT_EXPORT void rt_nurb_pr_kv (const struct knot_vector *kv)
RT_EXPORT void rt_nurb_pr_mesh (const struct face_g_snurb *m)
RT_EXPORT void rt_nurb_print_pt_type (int c)
RT_EXPORT struct face_g_snurbrt_nurb_s_xsplit (struct face_g_snurb *srf, fastf_t param, int dir)
RT_EXPORT struct edge_g_cnurbrt_nurb_c_xsplit (struct edge_g_cnurb *crv, fastf_t param)
RT_EXPORT struct oslo_matrt_nurb_calc_oslo (int order, const struct knot_vector *tau_kv, struct knot_vector *t_kv, struct resource *res)
RT_EXPORT void rt_nurb_pr_oslo (struct oslo_mat *om)
RT_EXPORT void rt_nurb_free_oslo (struct oslo_mat *om, struct resource *res)
RT_EXPORT void rt_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_EXPORT int CrossingCount (point2d_t *V, int degree, point2d_t ray_start, point2d_t ray_dir, point2d_t ray_perp)
RT_EXPORT int ControlPolygonFlatEnough (point2d_t *V, int degree, fastf_t epsilon)
RT_EXPORT void Bezier (point2d_t *V, int degree, double t, point2d_t *Left, point2d_t *Right, point2d_t eval_pt, point2d_t normal)
RT_EXPORT int FindRoots (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)
RT_EXPORT struct bezier_2d_listsubdivide_bezier (struct bezier_2d_list *bezier_hd, int degree, fastf_t epsilon, int depth)
fastf_t rt_nurb_basis_eval (register struct knot_vector *knts, int interval, int order, fastf_t mu)

Define Documentation

#define NURB_H   seen
 

Definition at line 42 of file nurb.h.

#define RT_NURB_SPLIT_ROW   0
 

Definition at line 64 of file nurb.h.

Referenced by nmg_snurb_to_vlist(), rt_nurb_clip_srf(), rt_nurb_curvature(), rt_nurb_intersect(), rt_nurb_new_snurb(), rt_nurb_par_edge(), rt_nurb_pbound(), rt_nurb_plot(), rt_nurb_region_from_srf(), rt_nurb_s_bound(), rt_nurb_s_check(), rt_nurb_s_diff(), rt_nurb_s_eval(), rt_nurb_s_flat(), rt_nurb_s_refine(), rt_nurb_s_split(), and rt_nurb_s_xsplit().

#define RT_NURB_SPLIT_COL   1
 

Definition at line 65 of file nurb.h.

Referenced by nmg_snurb_to_vlist(), rt_nurb_curvature(), rt_nurb_par_edge(), rt_nurb_pbound(), rt_nurb_plot(), rt_nurb_project_srf(), rt_nurb_s_bound(), rt_nurb_s_check(), rt_nurb_s_eval(), and rt_nurb_s_flat().

#define RT_NURB_SPLIT_FLAT   2
 

Definition at line 66 of file nurb.h.

#define RT_NURB_PT_XY   1
 

x,y coordintes

Definition at line 83 of file nurb.h.

Referenced by rt_arc2d_to_cnurb(), rt_nurb_print_pt_type(), and rt_nurb_to_poly().

#define RT_NURB_PT_XYZ   2
 

x,y,z coordinates

Definition at line 84 of file nurb.h.

Referenced by rt_arc2d_to_cnurb(), rt_nurb_cinterp(), rt_nurb_import5(), rt_nurb_print_pt_type(), rt_nurb_sinterp(), and rt_nurb_to_poly().

#define RT_NURB_PT_UV   3
 

trim u,v parameter space

Definition at line 85 of file nurb.h.

Referenced by nmg_cnurb_to_vlist(), rt_arc2d_to_cnurb(), rt_nmg_edisk(), rt_nmg_idisk(), rt_nurb_print_pt_type(), and rt_nurb_to_poly().

#define RT_NURB_PT_DATA   4
 

random data

Definition at line 86 of file nurb.h.

Referenced by rt_arc2d_to_cnurb().

#define RT_NURB_PT_PROJ   5
 

Projected Surface.

Definition at line 87 of file nurb.h.

Referenced by rt_arc2d_to_cnurb(), and rt_nurb_project_srf().

#define RT_NURB_PT_RATIONAL   1
 

Definition at line 89 of file nurb.h.

Referenced by rt_arc2d_to_cnurb(), and rt_nurb_import5().

#define RT_NURB_PT_NONRAT   0
 

Definition at line 90 of file nurb.h.

Referenced by nmg_cnurb_to_vlist(), rt_nurb_import5(), and rt_nurb_sinterp().

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

Definition at line 92 of file nurb.h.

Referenced by get_seg_midpoint(), nmg_cnurb_to_vlist(), rt_arc2d_to_cnurb(), rt_nurb_cinterp(), rt_nurb_import5(), rt_nurb_project_srf(), and rt_nurb_sinterp().

#define RT_NURB_EXTRACT_COORDS pt   )     (pt>>5)
 

Definition at line 93 of file nurb.h.

Referenced by isect_ray_snurb_face(), nmg_cnurb_is_linear(), nmg_cnurb_to_vlist(), nmg_dup_face(), nmg_edge_g_cnurb(), nmg_eval_linear_trim_curve(), nmg_eval_trim_curve(), nmg_face_g_snurb(), nmg_pr_eg(), nmg_pr_fg(), nmg_snurb_calc_lu_uv_orient(), nmg_snurb_is_planar(), nmg_snurb_to_vlist(), rt_clip_cnurb(), rt_cnurb_par_edge(), rt_join_cnurbs(), rt_nmg_export_fastf(), rt_nmg_import_fastf(), rt_nurb_bytes(), rt_nurb_c_bound(), rt_nurb_c_diff(), rt_nurb_c_eval(), rt_nurb_c_print(), rt_nurb_c_refine(), rt_nurb_c_split(), rt_nurb_c_xsplit(), rt_nurb_clip_srf(), rt_nurb_crv_copy(), rt_nurb_crv_flat(), rt_nurb_crv_in_range(), rt_nurb_describe(), rt_nurb_grans(), rt_nurb_import5(), rt_nurb_intersect(), rt_nurb_map_oslo(), rt_nurb_mesh_diff(), rt_nurb_new_cnurb(), rt_nurb_new_snurb(), rt_nurb_par_edge(), rt_nurb_pbound(), rt_nurb_plot(), rt_nurb_plot_cnurb(), rt_nurb_plot_snurb(), rt_nurb_pr_mesh(), rt_nurb_reverse_srf(), rt_nurb_s_bound(), rt_nurb_s_diff(), rt_nurb_s_eval(), rt_nurb_s_flat(), rt_nurb_s_refine(), rt_nurb_s_xsplit(), rt_nurb_scopy(), rt_nurb_tcladjust(), rt_nurb_uv_dist(), rt_process_caseb(), and rt_trim_case().

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

Definition at line 94 of file nurb.h.

Referenced by rt_nmg_edisk(), rt_nmg_idisk(), rt_nurb_print_pt_type(), and rt_nurb_to_poly().

#define RT_NURB_IS_PT_RATIONAL pt   )     (pt & 0x1)
 

Definition at line 95 of file nurb.h.

Referenced by get_seg_midpoint(), isect_ray_snurb_face(), nmg_eval_linear_trim_curve(), nmg_eval_trim_curve(), nmg_snurb_calc_lu_uv_orient(), nmg_snurb_fu_eval(), nmg_snurb_to_vlist(), nmg_uv_in_lu(), rt_conv_uv(), rt_copy_curve(), rt_nmg_export_fastf(), rt_nmg_import_fastf(), rt_nurb_c_bound(), rt_nurb_crv_flat(), rt_nurb_crv_in_range(), rt_nurb_curvature(), rt_nurb_intersect(), rt_nurb_plot(), rt_nurb_plot_cnurb(), rt_nurb_plot_snurb(), rt_nurb_print_pt_type(), rt_nurb_project_srf(), rt_nurb_s_bound(), rt_nurb_to_poly(), rt_nurb_uv_dist(), rt_process_caseb(), rt_sketch_export(), rt_sketch_export5(), rt_sketch_import(), rt_sketch_import5(), rt_trim_case(), and rt_trim_line_pt_dist().

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

Definition at line 96 of file nurb.h.

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

Definition at line 100 of file nurb.h.

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

Definition at line 101 of file nurb.h.

Referenced by nmg_cnurb_to_vlist(), rt_nurb_c_diff(), rt_nurb_c_eval(), rt_nurb_c_print(), rt_nurb_c_refine(), rt_nurb_c_split(), rt_nurb_c_xsplit(), rt_nurb_clean_cnurb(), rt_nurb_crv_copy(), and rt_nurb_free_cnurb().

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

Definition at line 102 of file nurb.h.

Referenced by nmg_snurb_to_vlist(), rt_bez_check(), rt_nurb_bezier(), rt_nurb_clean_snurb(), rt_nurb_describe(), rt_nurb_free(), rt_nurb_free_snurb(), rt_nurb_intersect(), rt_nurb_plot_snurb(), rt_nurb_pr_mesh(), rt_nurb_prep(), rt_nurb_s_diff(), rt_nurb_s_eval(), rt_nurb_s_refine(), rt_nurb_s_split(), rt_nurb_s_xsplit(), and rt_nurb_scopy().

#define GET_CNURB  ) 
 

Value:

{BU_GETSTRUCT(p, edge_g_cnurb); \
        /* NMG_INCR_INDEX(p,m); */ \
        BU_LIST_INIT( &(p)->l ); (p)->l.magic = NMG_EDGE_G_CNURB_MAGIC; }

Definition at line 104 of file nurb.h.

Referenced by rt_nurb_c_xsplit(), and rt_nurb_new_cnurb().

#define GET_SNURB  ) 
 

Value:

{BU_GETSTRUCT(p, face_g_snurb); \
        /* NMG_INCR_INDEX(p,m); */ \
        BU_LIST_INIT( &(p)->l ); (p)->l.magic = NMG_FACE_G_SNURB_MAGIC; }

Definition at line 107 of file nurb.h.

Referenced by rt_nurb_new_snurb(), rt_nurb_s_refine(), and rt_nurb_s_xsplit().

#define RT_CNURB_MAGIC   0x636e7262
 

Definition at line 111 of file nurb.h.

Referenced by nmg_cnurb_to_vlist(), and rt_nurb_sinterp().

#define RT_SNURB_MAGIC   0x736e7262
 

Definition at line 113 of file nurb.h.

Referenced by rt_nurb_sinterp().

#define MAX i,
 )     ( (i) > (j) ? (i) : (j) )
 

Definition at line 139 of file nurb.h.

Referenced by rt_nurb_s_flat().

#define MIN i,
 )     ( (i) < (j) ? (i) : (j) )
 

Definition at line 142 of file nurb.h.


Function Documentation

RT_EXPORT fastf_t rt_nurb_basis_eval struct knot_vector knts,
int  interval,
int  order,
fastf_t  mu
 

Referenced by rt_nurb_basis_eval(), and rt_nurb_interp_mat().

RT_EXPORT int rt_nurb_bezier struct bu_list bezier_hd,
const struct face_g_snurb srf,
struct resource res
 

Definition at line 66 of file nurb_bezier.c.

Referenced by isect_ray_snurb_face(), and rt_nurb_prep().

RT_EXPORT int rt_bez_check const struct face_g_snurb srf  ) 
 

Definition at line 99 of file nurb_bezier.c.

Referenced by rt_nurb_bezier().

RT_EXPORT int rt_nurb_s_bound struct face_g_snurb srf,
point_t  bmin,
point_t  bmax
 

Referenced by nmg_face_bb(), and rt_nurb_prep().

RT_EXPORT int rt_nurb_c_bound struct edge_g_cnurb crv,
point_t  bmin,
point_t  bmax
 

RT_EXPORT int rt_nurb_s_check struct face_g_snurb srf  ) 
 

RT_EXPORT int rt_nurb_c_check struct edge_g_cnurb crv  ) 
 

RT_EXPORT struct face_g_snurb* rt_nurb_scopy const struct face_g_snurb srf,
struct resource res
 

Definition at line 49 of file nurb_copy.c.

Referenced by rt_nurb_bezier(), and rt_nurb_prep().

RT_EXPORT struct face_g_snurb* rt_nurb_s_diff const struct face_g_snurb srf,
int  dir
 

Definition at line 65 of file nurb_diff.c.

References face_g_snurb::ctl_points, knot_vector::k_size, knot_vector::knots, NMG_CK_SNURB, NULL, face_g_snurb::order, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, rt_nurb_mesh_diff(), rt_nurb_new_snurb(), RT_NURB_SPLIT_ROW, face_g_snurb::s_size, face_g_snurb::u, and face_g_snurb::v.

Referenced by rt_nurb_curvature(), and rt_nurb_par_edge().

Here is the call graph for this function:

RT_EXPORT struct edge_g_cnurb* rt_nurb_c_diff const struct edge_g_cnurb crv  ) 
 

Definition at line 139 of file nurb_diff.c.

References edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, NMG_CK_CNURB, edge_g_cnurb::order, edge_g_cnurb::pt_type, RT_NURB_EXTRACT_COORDS, rt_nurb_mesh_diff(), and rt_nurb_new_cnurb().

Here is the call graph for this function:

RT_EXPORT void rt_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
 

Definition at line 168 of file nurb_diff.c.

References edge_g_cnurb::k, and RT_NURB_EXTRACT_COORDS.

Referenced by rt_nurb_c_diff(), and rt_nurb_s_diff().

RT_EXPORT void rt_nurb_s_eval const struct face_g_snurb srf,
fastf_t  u,
fastf_t  v,
fastf_t final_value
 

Definition at line 58 of file nurb_eval.c.

References bu_log(), bu_malloc(), face_g_snurb::ctl_points, edge_g_cnurb::k, NMG_CK_SNURB, face_g_snurb::order, face_g_snurb::pt_type, rt_bomb(), RT_NURB_EXTRACT_COORDS, rt_nurb_knot_index(), rt_nurb_s_print(), RT_NURB_SPLIT_COL, RT_NURB_SPLIT_ROW, face_g_snurb::s_size, and face_g_snurb::u.

Referenced by nmg_eval_linear_trim_curve(), nmg_eval_trim_curve(), nmg_snurb_fu_eval(), rt_conv_uv(), rt_nurb_curvature(), rt_nurb_intersect(), and rt_nurb_s_norm().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_c_eval const struct edge_g_cnurb crv,
fastf_t  param,
fastf_t final_value
 

Definition at line 129 of file nurb_eval.c.

References bu_free(), bu_malloc(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::k, NMG_CK_CNURB, edge_g_cnurb::order, edge_g_cnurb::pt_type, rt_nurb_eval_crv(), RT_NURB_EXTRACT_COORDS, and rt_nurb_knot_index().

Referenced by nmg_eval_trim_curve(), and nmg_snurb_calc_lu_uv_orient().

Here is the call graph for this function:

RT_EXPORT fastf_t* rt_nurb_eval_crv fastf_t crv,
int  order,
fastf_t  param,
const struct knot_vector k_vec,
int  k_index,
int  coords
 

Referenced by rt_nurb_c_eval().

RT_EXPORT void rt_nurb_pr_crv fastf_t crv,
int  c_size,
int  coords
 

Definition at line 194 of file nurb_eval.c.

RT_EXPORT int rt_nurb_s_flat struct face_g_snurb srf,
fastf_t  epsilon
 

Definition at line 51 of file nurb_flat.c.

References bu_malloc(), face_g_snurb::ctl_points, face_g_snurb::dir, INFINITY, MAX, face_g_snurb::pt_type, rt_nurb_crv_flat(), RT_NURB_EXTRACT_COORDS, RT_NURB_SPLIT_COL, RT_NURB_SPLIT_ROW, and face_g_snurb::s_size.

Here is the call graph for this function:

RT_EXPORT fastf_t rt_nurb_crv_flat fastf_t crv,
int  size,
int  pt_type
 

Definition at line 206 of file nurb_flat.c.

References HDIVIDE, HMOVE, INFINITY, length, RT_NURB_EXTRACT_COORDS, RT_NURB_IS_PT_RATIONAL, SQRT_SMALL_FASTF, and VMOVE.

Referenced by rt_nurb_s_flat().

RT_EXPORT void rt_nurb_kvknot struct knot_vector new_knots,
int  order,
fastf_t  lower,
fastf_t  upper,
int  num,
struct resource res
 

Referenced by interpolate_data(), nmg_edge_g_cnurb(), rt_nurb_cinterp(), rt_nurb_plot(), and rt_nurb_sinterp().

RT_EXPORT void rt_nurb_kvmult struct knot_vector new_kv,
const struct knot_vector kv,
int  num,
fastf_t  val,
struct resource res
 

Referenced by rt_nurb_c_xsplit(), and rt_nurb_s_xsplit().

RT_EXPORT void rt_nurb_kvgen struct knot_vector kv,
fastf_t  lower,
fastf_t  upper,
int  num,
struct resource res
 

Referenced by nmg_snurb_to_vlist().

RT_EXPORT void rt_nurb_kvmerge struct knot_vector new_knots,
const struct knot_vector kv1,
const struct knot_vector kv2,
struct resource res
 

Definition at line 146 of file nurb_knot.c.

References bu_malloc(), knot_vector::k_size, and knot_vector::knots.

Referenced by nmg_snurb_to_vlist(), and rt_nurb_kvmult().

Here is the call graph for this function:

RT_EXPORT int rt_nurb_kvcheck fastf_t  val,
const struct knot_vector kv
 

Referenced by rt_nurb_kvmult().

RT_EXPORT void rt_nurb_kvextract struct knot_vector new_kv,
const struct knot_vector kv,
int  lower,
int  upper,
struct resource res
 

Referenced by rt_nurb_c_xsplit(), and rt_nurb_s_xsplit().

RT_EXPORT void rt_nurb_kvcopy struct knot_vector new_kv,
const struct knot_vector old_kv,
struct resource res
 

Referenced by rt_nurb_s_refine(), and rt_nurb_s_xsplit().

RT_EXPORT void rt_nurb_kvnorm struct knot_vector kv  ) 
 

Referenced by interpolate_data(), and rt_nurb_import5().

RT_EXPORT int rt_knot_index const struct knot_vector kv,
fastf_t  k_value,
int  order
 

RT_EXPORT void rt_nurb_gen_knot_vector struct knot_vector new_knots,
int  order,
fastf_t  lower,
fastf_t  upper,
struct resource res
 

Referenced by nmg_cnurb_to_vlist().

RT_EXPORT void rt_nurb_s_norm struct face_g_snurb srf,
fastf_t  u,
fastf_t  v,
fastf_t norm
 

Definition at line 54 of file nurb_norm.c.

References knot_vector::k_size, knot_vector::knots, face_g_snurb::order, rt_nurb_s_eval(), and face_g_snurb::u.

Referenced by nmg_snurb_fu_get_norm(), and rt_nurb_norm().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_curvature struct curvature cvp,
const struct face_g_snurb srf,
fastf_t  u,
fastf_t  v
 

Definition at line 52 of file nurb_c2.c.

References F, M, NULL, face_g_snurb::pt_type, rt_nurb_free_snurb(), RT_NURB_IS_PT_RATIONAL, rt_nurb_s_diff(), rt_nurb_s_eval(), RT_NURB_SPLIT_COL, RT_NURB_SPLIT_ROW, VCROSS, VDOT, and VUNITIZE.

Referenced by rt_nurb_curve().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_plot_snurb FILE *  fp,
const struct face_g_snurb srf
 

Definition at line 58 of file nurb_plot.c.

References face_g_snurb::ctl_points, NMG_CK_SNURB, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, RT_NURB_IS_PT_RATIONAL, and face_g_snurb::s_size.

Referenced by interpolate_data(), and rt_nurb_s_plot().

RT_EXPORT void rt_nurb_plot_cnurb FILE *  fp,
const struct edge_g_cnurb crv
 

Definition at line 130 of file nurb_plot.c.

References edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::pt_type, ptr, RT_NURB_EXTRACT_COORDS, and RT_NURB_IS_PT_RATIONAL.

RT_EXPORT void rt_nurb_s_plot const struct face_g_snurb srf  ) 
 

Definition at line 169 of file nurb_plot.c.

References rt_nurb_plot_snurb().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_cinterp struct edge_g_cnurb crv,
int  order,
const fastf_t data,
int  n
 

Definition at line 98 of file nurb_interp.c.

References bcopy, bu_free(), bu_malloc(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::k, NULL, edge_g_cnurb::order, edge_g_cnurb::pt_type, rt_nurb_interp_mat(), rt_nurb_kvknot(), RT_NURB_MAKE_PT_TYPE, rt_nurb_nodes(), RT_NURB_PT_XYZ, and rt_nurb_solve().

Referenced by rt_nurb_sinterp().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_sinterp struct face_g_snurb srf,
int  order,
const fastf_t data,
int  ymax,
int  xmax
 

Definition at line 168 of file nurb_interp.c.

References bu_calloc(), bu_malloc(), face_g_snurb::ctl_points, face_g_snurb::dir, face_g_snurb::l, edge_g_cnurb::l, bu_list::magic, NULL, NVAL, face_g_snurb::order, face_g_snurb::pt_type, RT_CNURB_MAGIC, rt_nurb_cinterp(), rt_nurb_kvknot(), RT_NURB_MAKE_PT_TYPE, RT_NURB_PT_NONRAT, RT_NURB_PT_XYZ, RT_SNURB_MAGIC, face_g_snurb::s_size, face_g_snurb::u, and face_g_snurb::v.

Referenced by interpolate_data().

Here is the call graph for this function:

RT_EXPORT struct rt_nurb_poly* rt_nurb_to_poly struct face_g_snurb srf  ) 
 

Definition at line 57 of file nurb_poly.c.

References face_g_snurb::ctl_points, face_g_snurb::pt_type, RT_NURB_EXTRACT_PT_TYPE, RT_NURB_IS_PT_RATIONAL, RT_NURB_PT_UV, RT_NURB_PT_XY, RT_NURB_PT_XYZ, and face_g_snurb::s_size.

RT_EXPORT struct rt_nurb_poly* rt_nurb_mk_poly fastf_t v1,
fastf_t v2,
fastf_t v3,
fastf_t  uv1[2],
fastf_t  uv2[2],
fastf_t  uv3[2]
 

RT_EXPORT struct face_g_snurb* rt_nurb_project_srf const struct face_g_snurb srf,
plane_t  plane1,
plane_t  plane2,
struct resource res
 

Referenced by rt_nurb_intersect().

RT_EXPORT void rt_nurb_clip_srf const struct face_g_snurb srf,
int  dir,
fastf_t min,
fastf_t max
 

Definition at line 143 of file nurb_ray.c.

References internal_line::a, internal_line::b, face_g_snurb::ctl_points, internal_convex_hull::max, internal_convex_hull::min, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, RT_NURB_SPLIT_ROW, face_g_snurb::s_size, and value.

Referenced by rt_nurb_intersect().

RT_EXPORT struct face_g_snurb* rt_nurb_region_from_srf const struct face_g_snurb srf,
int  dir,
fastf_t  param1,
fastf_t  param2,
struct resource res
 

Definition at line 309 of file nurb_ray.c.

References knot_vector::k_size, knot_vector::knots, face_g_snurb::order, and RT_NURB_SPLIT_ROW.

Referenced by rt_nurb_intersect().

RT_EXPORT struct rt_nurb_uv_hit* rt_nurb_intersect const struct face_g_snurb srf,
plane_t  plane1,
plane_t  plane2,
double  uv_tol,
struct resource res
 

Referenced by rt_nurb_shot().

RT_EXPORT struct face_g_snurb* rt_nurb_s_refine const struct face_g_snurb srf,
int  dir,
struct knot_vector kv,
struct resource res
 

Definition at line 58 of file nurb_refine.c.

References bu_malloc(), face_g_snurb::ctl_points, GET_SNURB, knot_vector::k_size, NMG_CK_SNURB, face_g_snurb::order, face_g_snurb::pt_type, rt_nurb_calc_oslo(), RT_NURB_EXTRACT_COORDS, rt_nurb_free_oslo(), rt_nurb_kvcopy(), rt_nurb_map_oslo(), RT_NURB_SPLIT_ROW, face_g_snurb::s_size, face_g_snurb::u, and face_g_snurb::v.

Referenced by interpolate_data(), nmg_snurb_to_vlist(), and rt_nurb_plot().

Here is the call graph for this function:

RT_EXPORT struct edge_g_cnurb* rt_nurb_c_refine const struct edge_g_cnurb crv,
struct knot_vector kv
 

Definition at line 157 of file nurb_refine.c.

References edge_g_cnurb::ctl_points, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, NMG_CK_CNURB, NULL, edge_g_cnurb::order, edge_g_cnurb::pt_type, rt_nurb_calc_oslo(), RT_NURB_EXTRACT_COORDS, rt_nurb_free_oslo(), rt_nurb_map_oslo(), and rt_nurb_new_cnurb().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_solve fastf_t mat_1,
fastf_t mat_2,
fastf_t solution,
int  dim,
int  coords
 

Definition at line 45 of file nurb_solve.c.

References bu_malloc(), ptr, and rt_nurb_doolittle().

Referenced by rt_nurb_cinterp().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_doolittle fastf_t mat_1,
fastf_t mat_2,
int  row,
int  coords
 

Definition at line 105 of file nurb_solve.c.

References bu_malloc().

Referenced by rt_nurb_solve().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_forw_solve const fastf_t lu,
const fastf_t b,
fastf_t y,
int  n
 

Definition at line 198 of file nurb_solve.c.

RT_EXPORT void rt_nurb_back_solve const fastf_t lu,
const fastf_t y,
fastf_t x,
int  n
 

Definition at line 217 of file nurb_solve.c.

RT_EXPORT void rt_nurb_p_mat const fastf_t mat,
int  dim
 

Definition at line 237 of file nurb_solve.c.

RT_EXPORT void rt_nurb_s_split struct bu_list split_hd,
const struct face_g_snurb srf,
int  dir,
struct resource res
 

Definition at line 63 of file nurb_split.c.

References knot_vector::k_size, knot_vector::knots, NMG_CK_SNURB, face_g_snurb::order, RT_NURB_SPLIT_ROW, face_g_snurb::u, and value.

Referenced by rt_nurb_bezier(), and rt_nurb_intersect().

RT_EXPORT void rt_nurb_c_split struct bu_list split_hd,
const struct edge_g_cnurb crv
 

Definition at line 275 of file nurb_split.c.

References edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, NMG_CK_CNURB, edge_g_cnurb::pt_type, RT_NURB_EXTRACT_COORDS, and value.

RT_EXPORT struct face_g_snurb* rt_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 resource res
 

Definition at line 54 of file nurb_util.c.

References bu_malloc(), face_g_snurb::ctl_points, face_g_snurb::dir, GET_SNURB, knot_vector::k_size, knot_vector::knots, face_g_snurb::order, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, RT_NURB_SPLIT_ROW, face_g_snurb::s_size, face_g_snurb::u, and face_g_snurb::v.

Referenced by rt_nurb_import5(), rt_nurb_project_srf(), rt_nurb_s_diff(), rt_nurb_scopy(), and rt_nurb_tcladjust().

Here is the call graph for this function:

RT_EXPORT struct edge_g_cnurb* rt_nurb_new_cnurb int  order,
int  n_knots,
int  n_pts,
int  pt_type
 

Definition at line 84 of file nurb_util.c.

References bu_malloc(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, GET_CNURB, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, edge_g_cnurb::order, edge_g_cnurb::pt_type, and RT_NURB_EXTRACT_COORDS.

Referenced by rt_arc2d_to_cnurb(), rt_nurb_c_diff(), rt_nurb_c_refine(), and rt_nurb_crv_copy().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_free_snurb struct face_g_snurb srf,
struct resource res
 

Definition at line 135 of file nurb_util.c.

References bu_free(), face_g_snurb::ctl_points, knot_vector::knots, face_g_snurb::l, bu_list::magic, NMG_CK_SNURB, face_g_snurb::u, and face_g_snurb::v.

Referenced by rt_nurb_bezier(), rt_nurb_curvature(), rt_nurb_free(), rt_nurb_ifree(), rt_nurb_intersect(), rt_nurb_par_edge(), and rt_nurb_tcladjust().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_free_cnurb struct edge_g_cnurb crv  ) 
 

Definition at line 177 of file nurb_util.c.

References bu_free(), edge_g_cnurb::ctl_points, edge_g_cnurb::k, knot_vector::knots, edge_g_cnurb::l, bu_list::magic, and NMG_CK_CNURB.

Referenced by rt_process_casec().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_c_print const struct edge_g_cnurb crv  ) 
 

Definition at line 187 of file nurb_util.c.

References bu_log(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, NMG_CK_CNURB, edge_g_cnurb::order, edge_g_cnurb::pt_type, ptr, RT_NURB_EXTRACT_COORDS, and rt_nurb_print_pt_type().

Referenced by nmg_cnurb_is_linear(), and rt_join_cnurbs().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_s_print char *  c,
const struct face_g_snurb srf
 

Definition at line 219 of file nurb_util.c.

References bu_log(), face_g_snurb::order, rt_nurb_pr_kv(), rt_nurb_pr_mesh(), face_g_snurb::u, and face_g_snurb::v.

Referenced by nmg_snurb_is_planar(), rt_nurb_intersect(), rt_nurb_print(), and rt_nurb_s_eval().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_pr_kv const struct knot_vector kv  ) 
 

Definition at line 239 of file nurb_util.c.

References bu_log(), knot_vector::k_size, knot_vector::knots, and ptr.

Referenced by rt_nurb_kvmult(), and rt_nurb_s_print().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_pr_mesh const struct face_g_snurb m  ) 
 

Definition at line 255 of file nurb_util.c.

References bu_log(), face_g_snurb::ctl_points, edge_g_cnurb::k, NMG_CK_SNURB, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, and face_g_snurb::s_size.

Referenced by rt_nurb_s_print().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_print_pt_type int  c  ) 
 

Definition at line 282 of file nurb_util.c.

References bu_log(), RT_NURB_EXTRACT_PT_TYPE, RT_NURB_IS_PT_RATIONAL, RT_NURB_PT_UV, RT_NURB_PT_XY, and RT_NURB_PT_XYZ.

Referenced by rt_nurb_c_print().

Here is the call graph for this function:

RT_EXPORT struct face_g_snurb* rt_nurb_s_xsplit struct face_g_snurb srf,
fastf_t  param,
int  dir
 

Definition at line 61 of file nurb_xsplit.c.

References bu_malloc(), face_g_snurb::ctl_points, face_g_snurb::dir, GET_SNURB, knot_vector::k_size, NMG_CK_SNURB, NULL, face_g_snurb::order, face_g_snurb::pt_type, rt_nurb_calc_oslo(), RT_NURB_EXTRACT_COORDS, rt_nurb_kvcopy(), rt_nurb_kvextract(), rt_nurb_kvmult(), rt_nurb_map_oslo(), RT_NURB_SPLIT_ROW, face_g_snurb::s_size, face_g_snurb::u, and face_g_snurb::v.

Here is the call graph for this function:

RT_EXPORT struct edge_g_cnurb* rt_nurb_c_xsplit struct edge_g_cnurb crv,
fastf_t  param
 

Definition at line 237 of file nurb_xsplit.c.

References bu_free(), BU_LIST_APPEND, bu_malloc(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, GET_CNURB, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, edge_g_cnurb::l, NMG_CK_CNURB, NULL, edge_g_cnurb::order, edge_g_cnurb::pt_type, rt_nurb_calc_oslo(), RT_NURB_EXTRACT_COORDS, rt_nurb_free_oslo(), rt_nurb_kvextract(), rt_nurb_kvmult(), and rt_nurb_map_oslo().

Here is the call graph for this function:

RT_EXPORT struct oslo_mat* rt_nurb_calc_oslo int  order,
const struct knot_vector tau_kv,
struct knot_vector t_kv,
struct resource res
 

Referenced by rt_nurb_c_refine(), rt_nurb_c_xsplit(), rt_nurb_s_refine(), and rt_nurb_s_xsplit().

RT_EXPORT void rt_nurb_pr_oslo struct oslo_mat om  ) 
 

Definition at line 200 of file oslo_calc.c.

RT_EXPORT void rt_nurb_free_oslo struct oslo_mat om,
struct resource res
 

Definition at line 224 of file oslo_calc.c.

Referenced by rt_nurb_c_refine(), rt_nurb_c_xsplit(), and rt_nurb_s_refine().

void rt_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
 

Definition at line 56 of file oslo_map.c.

References oslo_mat::next, and RT_NURB_EXTRACT_COORDS.

Referenced by rt_nurb_c_refine(), rt_nurb_c_xsplit(), rt_nurb_s_refine(), and rt_nurb_s_xsplit().

RT_EXPORT int CrossingCount point2d_t V,
int  degree,
point2d_t  ray_start,
point2d_t  ray_dir,
point2d_t  ray_perp
 

Definition at line 58 of file bezier_2d_isect.c.

References SGN, V2DOT, and V2SUB2.

Referenced by FindRoots().

RT_EXPORT int ControlPolygonFlatEnough point2d_t V,
int  degree,
fastf_t  epsilon
 

Definition at line 90 of file bezier_2d_isect.c.

References bu_malloc(), X, and Y.

Referenced by FindRoots(), and subdivide_bezier().

Here is the call graph for this function:

RT_EXPORT void Bezier point2d_t V,
int  degree,
double  t,
point2d_t Left,
point2d_t Right,
point2d_t  eval_pt,
point2d_t  normal
 

Definition at line 201 of file bezier_2d_isect.c.

References bu_calloc(), and V2MOVE.

Referenced by FindRoots(), and subdivide_bezier().

Here is the call graph for this function:

RT_EXPORT int FindRoots 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
 

Definition at line 367 of file bezier_2d_isect.c.

References Bezier(), bu_calloc(), bu_free(), bu_malloc(), ControlPolygonFlatEnough(), CrossingCount(), FindRoots(), MAXDEPTH, NULL, and V2MOVE.

Referenced by FindRoots().

Here is the call graph for this function:

RT_EXPORT struct bezier_2d_list* subdivide_bezier struct bezier_2d_list bezier_hd,
int  degree,
fastf_t  epsilon,
int  depth
 

Definition at line 461 of file bezier_2d_isect.c.

References Bezier(), bu_calloc(), bu_free(), BU_LIST_APPEND, BU_LIST_APPEND_LIST, BU_LIST_DEQUEUE, BU_LIST_INIT, bu_malloc(), ControlPolygonFlatEnough(), bezier_2d_list::ctl, bezier_2d_list::l, MAXDEPTH, NULL, and subdivide_bezier().

Referenced by subdivide_bezier().

Here is the call graph for this function:

fastf_t rt_nurb_basis_eval register struct knot_vector knts,
int  interval,
int  order,
fastf_t  mu
 

Definition at line 85 of file nurb_basis.c.

References rt_nurb_basis_eval().

Here is the call graph for this function:


Generated on Mon Sep 18 01:25:45 2006 for BRL-CAD by  doxygen 1.4.6