BRL-CAD
Todo List
Global bg_3d_obb (point_t **pnts, const point_t *points_3d, int pnt_cnt)
- the GeometricTools engine has an implementation of the stack needed to do this:
Global bg_dist_pnt3_line3 (fastf_t *dist, point_t pca, const point_t a, const point_t p, const vect_t dir, const struct bn_tol *tol)
For efficiency, a version of this routine that provides the distance squared would be faster.
Module bg_plane
- this API may need to be simplified. A lot of the closest point calculations, for example, should probably just concern themselves with the calculation itself and leave any tolerance based questions to a separate step.
Global bg_ray_vclip (point_t a, point_t b, fastf_t *min_pt, fastf_t *max_pt)
the function name implies this takes a point,dir for a,b but it actually takes a line segment going from points a to b!
Global bn_htov_move (vect_t v, const hvect_t h)
make tolerance configurable
Global bn_mat_angles (mat_t mat, double alpha, double beta, double ggamma)
make tolerance configurable
Global bn_mat_angles_rad (mat_t mat, double alpha, double beta, double ggamma)
make tolerance configurable
Global bn_mat_arb_rot (mat_t m, const point_t pt, const vect_t dir, const fastf_t ang)
make tolerance configurable
Global bn_mat_is_non_unif (const mat_t m)
make tolerance configurable
Global bn_mat_scale_about_pnt (mat_t mat, const point_t pnt, const double scale)
make tolerance configurable
Global bn_sobol_sph_sample (point_t sample, const point_t center, const fastf_t radius, struct bn_soboldata *s)
investigate the http://www.dtic.mil/docs/citations/ADA510216 scrambling method to see if basic Sobol sequence can be improved on for spherical sampling Also relevant: people.sc.fsu.edu/~hcc8471/ssobol.pdf
Global bn_vec_ortho (vect_t out, const vect_t in)
make tolerance configurable
Global bn_vec_perp (vect_t new_vec, const vect_t old_vec)
make tolerance configurable
Class bound_rpp
move to vmath.h
Global bu_color_from_rgb_floats (struct bu_color *cp, const fastf_t *rgb)

consider stdarg ... to consolidate all the from functions, e.g., // 3 colors bu_color_create(struct bu_color **colors, "red", "0/255/0", "#0000ff", NULL);

inconsistent input/output parameters!

Module bu_hash
- need much better discussion here. Key points:
Global bu_process_close (struct bu_process *pinfo, bu_process_io_t d)
misnomer, this does not close a process. Probably doesn't need to exist; just call fclose().
Global bu_process_exec (struct bu_process **info, const char *cmd, int argc, const char **argv, int out_eql_err, int hide_window)
eliminate the last two options so all callers are not exposed to parameters not relevant to them.
Global bu_process_open (struct bu_process *pinfo, bu_process_io_t d)
misnomer, this does not open a process. Probably doesn't need to exist; just call fdopen().
Global bu_process_read (char *buff, int *count, struct bu_process *pinfo, bu_process_io_t d, int n)
arg ordering and input/output grouping is wrong. partially redundant with bu_process_fd() and/or bu_process_open().
Global bu_process_wait (int *aborted, struct bu_process *pinfo, int wtime)
'aborted' argument may be unnecessary (could make function provide return value of the process waited for). wtime undocumented.
Module bu_rb
check implementation given the following note:
Global BU_SEM_MAPPEDFILE
this one shouldn't need to be global.
Global bu_semaphore_free (void)
per hacking, rename to bu_semaphore_clear()
Global bu_vls_encode (struct bu_vls *vp, const char *str)
consider a specifiable quote character and octal encoding instead of double quote wrapping. perhaps specifiable encode type: BU_ENCODE_QUOTE BU_ENCODE_OCTAL BU_ENCODE_XML
Global bv_mat_aet (struct bview *v)
this routine is suspect and needs investigating. if run during view initialization, the shaders regression test fails.
Global db_follow_path_for_state (struct db_tree_state *tsp, struct db_full_path *pathp, const char *orig_str, int noisy)
- need to extend this to support specifiers orig_str to call out particular instances of combs in a tree...
File events.h
- eventually these should probably be augmented by common purpose specific options (i.e. define a BV_X_CONSTRAIN so the calling application can map either x or X to the enabling of that particular motion constraint during editing, for example...) However, I think we'll also need to pass the lower level info as there are too many purpose specific possibilities to encode them all up front.
Global GED_CHECK_ARGC_GT_0 (_gedp, _argc, _flags)
- where should this go?
Global ged_set_transparency (struct ged *gedp, int argc, const char *argv[])
- belongs in view?
Module ged_state
- both the drawn state and the selection state need a rethink, particularly since they need to sync when an interface is visually indicating one or both sets of information.
Global HCROSS (a, b, c)
implement me
page Main Page
- need introduction/overview.
Global MAX_FASTF

macro function syntax instead of constant (DEPRECATED)

macro function syntax instead of constant (DEPRECATED)

macro function syntax instead of constant (DEPRECATED)

macro function syntax instead of constant (DEPRECATED)

Global mk_freemembers (struct bu_list *headp)
- document this...
Global nmg_break_all_es_on_v (uint32_t *magic_p, struct vertex *v, struct bu_list *vlfree, const struct bn_tol *tol)
- document...
Global nmg_edge_fuse (const uint32_t *magic_p, struct bu_list *vlfree, const struct bn_tol *tol)
- this needs MUCH better documentation...
Global nmg_edge_g_fuse (const uint32_t *magic_p, struct bu_list *vlfree, const struct bn_tol *tol)
- this needs MUCH better documentation...
Module nmg_ray
- these structs and ray_in_rpp are versions of librt functionality, and we need to think about how/where to merge them into a common function and struct that are available to both libraries without introducing a coupling dependency.
Global pc_param::ctype
convert to enum after pc becomes a dependency of rt
Global RT_BADNUM (n)
These should probably be vmath macros
Global rt_bound_internal (struct db_i *dbip, struct directory *dp, point_t rpp_min, point_t rpp_max)
This function needs to be modified to eliminate the rt_gettree() call and the related parameters. In that case calling code needs to call another function before calling this function That function must create a union tree with tr_a.tu_op=OP_SOLID. It can look as follows : union tree * rt_comb_tree(const struct db_i *dbip, const struct rt_db_internal *ip). The tree is set in the struct rt_db_internal * ip argument. Once a suitable tree is set in the ip, then this function can be called with the struct rt_db_internal
  • to return the BB properly without getting stuck during tree traversal in rt_bound_tree()
Global RT_DBNHASH
this should not be public API, push container and iteration down into LIBRT. External applications should not use this.
Global rt_dsp_internal::dsp_name
make this a pointer, name of data file
Class rt_object_selections
This structure is tentative and subject to change or removal without notice.
Global rt_pattern (struct rt_pattern_data *data, rt_pattern_t type)

- maybe start here? http://mathworld.wolfram.com/SpherePointPicking.html

Class rt_point_labels
- eventually this should fade into a general annotation framework
Global rt_poly_roots (bn_poly_t *eqn, bn_complex_t roots[], const char *name)
- should this be moved to libbn?
Class rt_selection
This structure is tentative and subject to change or removal without notice.
Class rt_selection_operation
This structure is tentative and subject to change or removal without notice.
Class rt_selection_query
This structure is tentative and subject to change or removal without notice.
Class rt_selection_set
This structure is tentative and subject to change or removal without notice.
Class rt_selection_translation
This structure is tentative and subject to change or removal without notice.
Class rt_texture
replace txt_specific in liboptical
Global rt_texture_load (struct rt_texture *tp, const char *name, struct db_i *dbip)
replace txt_load_datasource in liboptical
Global rt_texture_lookup (fastf_t *data, const struct rt_texture *tp, const struct uvcoord *uvp)
replace txt_render in liboptical
Global rt_vlist_copy (struct bu_list *dest, const struct bu_list *src)
- replace these with the appropriate libbn calls specifically passing &RTG.rtg_vlfree
Global V3PNT_IN_RPP (_pt, _lo, _hi)
should not be using >= <=, '=' case is unreliable
Global V3PNT_IN_RPP_TOL (_pt, _lo, _hi, _t)
should not be using >= <=, '=' case is unreliable
Global V3RPP1_IN_RPP2 (_lo1, _hi1, _lo2, _hi2)
should not be using >= <=, '=' case is unreliable
Global VPROJECT (a, b, c, d)
consistency, the result should come first
Global wmember::wm_mat
Should be a matp_t