BRL-CAD
#include "common.h"
#include "vmath.h"
#include "bu/list.h"
#include "nmg/defines.h"
#include "nmg/topology.h"
Include dependency graph for nurb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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)