Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06c791b764 | ||
|
|
76ed837546 | ||
|
|
1cad8fcbe3 | ||
|
|
f21f329b16 | ||
|
|
69297ea941 | ||
|
|
46f742eb84 | ||
|
|
7572914650 |
@@ -0,0 +1,3 @@
|
||||
/bin
|
||||
/lib
|
||||
/build
|
||||
@@ -481,7 +481,6 @@ nicknames mjgillich mgillich
|
||||
U.S. Army Research Laboratory
|
||||
|
||||
Howard, Doug
|
||||
nicknames dhoward
|
||||
SURVICE Engineering, Inc.
|
||||
2006 April
|
||||
|
||||
@@ -537,7 +536,7 @@ nicknames homovulgaris, madant
|
||||
Open Source (GSoC)
|
||||
|
||||
Saunders, Benjamin
|
||||
nicknames Ralith, ralith
|
||||
nicknames Ralith
|
||||
2008 July
|
||||
Open Source
|
||||
|
||||
@@ -577,10 +576,6 @@ Jain, Sachin
|
||||
2011 April
|
||||
Open Source
|
||||
|
||||
Gerstner, Nick
|
||||
2011 May
|
||||
SURVICE Engineering, Inc.
|
||||
|
||||
Easterbrook, Zach
|
||||
nicknames lainiwakurax
|
||||
2011 July
|
||||
@@ -711,12 +706,12 @@ nicknames avneetkhalsa
|
||||
Open Source (GSoC)
|
||||
|
||||
Daga, Mohit
|
||||
nicknames zero_level, mohitdaga
|
||||
nicknames zero_level
|
||||
2013 June
|
||||
Open Source (GSoC)
|
||||
|
||||
Kamga, Isaac
|
||||
nicknames Izak, iiizzzaaakkk
|
||||
nicknames Izak
|
||||
2013 July
|
||||
Open Source (GSoC)
|
||||
|
||||
@@ -745,7 +740,6 @@ Schulte, Johannes
|
||||
Open Source (GCI)
|
||||
|
||||
Amidon, Peter
|
||||
nicknames peter-sa, Andromeda Galaxy
|
||||
2013 November
|
||||
Open Source (GCI)
|
||||
|
||||
@@ -951,7 +945,7 @@ Thomas, Balbir
|
||||
Open Source
|
||||
|
||||
Remenak, Daniel T.
|
||||
nicknames DTRemenak, Erroneous, dtremenak
|
||||
nicknames DTRemenak, Erroneous
|
||||
2005 July
|
||||
California Institute of Technology
|
||||
Open Source
|
||||
|
||||
@@ -77,7 +77,7 @@ and with @DEPRECATED in source code comments. Where users are not
|
||||
adversely affected, a run-time DEPRECATION statement may be printed.
|
||||
|
||||
Whenever published functionality is finally removed, move its entry
|
||||
from the DEPRECATED section below to the REMOVED section for the
|
||||
from the DEPRECATED section below to the OBSOLETE section for the
|
||||
version in which it was removed. Make sure the entry retains a
|
||||
reference to the version in which the item was marked as deprecated.
|
||||
|
||||
@@ -112,80 +112,32 @@ calls that can be updated must be updated at that time.
|
||||
The items listed below are interfaces that are deprecated. They are
|
||||
categorized by the release in which the change was made. If the
|
||||
change involved a removal of a command or function, both the original
|
||||
and new names should be listed for reference. If an item is marked
|
||||
with a "'" (single quote), that means it was not documented and may be
|
||||
removed at any time.
|
||||
and new names should be listed for reference.
|
||||
|
||||
|
||||
7.26
|
||||
----
|
||||
ray tracing tools
|
||||
lgt : functionally replaced by nirt
|
||||
rtcell', rtfrac', rtpp, rtrad', rtrange, rtray, rtregis, rtsil'
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
converter tools
|
||||
cy-g, euclid-g, euclid_format', euclid_unformat', g-euclid,
|
||||
g-euclid1', g-tankill, intaval-g.py, viewpoint-g : obsolete formats
|
||||
plot3-X, plot3-hpgl, plot3-tek : obsolete interface, see overlay command
|
||||
plot3debug, xyz-plot3 : see plot3-asc,asc-plot3
|
||||
bot-bldxf', bot_shell-vtk, g-nmg, nmg-bot, nmg-rib, nmg-sgp',
|
||||
poly-bot, rt_bot_faces, : primitive-specific converters
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
image tools
|
||||
cmap-fb, fb-cmap, fbcmrot : colormap support obsolete
|
||||
fbed, cell-fb : outside scope
|
||||
fbscanplot, polar-fb, pp-fb, bw-imp, pixinfo.sh : obsolete
|
||||
png_info : incorporating into icv
|
||||
pixpaste : outside scope, license
|
||||
alias-pix' : incorporating into icv
|
||||
asc2pix' : incorporating into icv
|
||||
pix-yuv', yuv-pix' : obsolete non-standard format
|
||||
texturescale : obsolete implementation
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
video & animation tools
|
||||
anim_*', fbanim, chan_add', chan_mult, chan_permute,
|
||||
pixflip-fb' : outside scope
|
||||
pixfields', pixfieldsep' : outside scope
|
||||
orbit.sh, rtwalk, scriptsort, script-tab', tabinterp, tabsup,
|
||||
azel, bary
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
signal analysis tools
|
||||
a-d', d-a', bw-a', i-a', u-a' : incorporating into cv
|
||||
d-a', d-bw', d-f', d-i', d-u' : incorporating into cv
|
||||
a-d', bw-d', c-d', f-d', i-d', u-d' : incorporating into cv
|
||||
f-d', f-i', d-f', i-f', u-f', u-bw' : incorporating into cv
|
||||
d2-c', double-asc' : incorporating into cv
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
infrared & shapefactor tools
|
||||
all_sf', if-X, ifdisp, pictx, showterm, firpass, secpass, shapefact
|
||||
ssamp-bw, ssampview', ssampview.tcl'
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
misc tools
|
||||
fix_polysolids' : obsolete primitive
|
||||
remapid : superseded by reid+remat
|
||||
buffer : unnecesary network/stream buffering tool
|
||||
hex : superseded by hexdump
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
include/bu/ptbl.h
|
||||
BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, BU_PTBL_END
|
||||
Removed as private implementation detail [deprecated 7.26
|
||||
include/bu/hash.h
|
||||
bu_hash_tbl_find, bu_set_hash_value, bu_get_hash_value, bu_get_hash_key,
|
||||
bu_hash_tbl_add, bu_hash_tbl_print, bu_hash_tbl_free, bu_hash_tbl_first,
|
||||
bu_hash_tbl_next, bu_hash_tbl_traverse, public structs bu_hash_entry and
|
||||
bu_hash_tbl will be made private.
|
||||
Replaced with new API [deprecated 7.26]
|
||||
bu_hash_tbl_add, bu_hash_tbl_print, bu_hash_tbl_free, bu_hash_tbl_first,
|
||||
bu_hash_tbl_next, bu_hash_tbl_traverse, public structs bu_hash_entry and
|
||||
bu_hash_tbl will be made private.
|
||||
Replaced with new API [deprecated 7.26]
|
||||
rtrad, bot_shell-vtk, rt_bot_faces, g-nmg, nmg-bot, nmg-rib, nmg-sgp, plot3-hpgl,
|
||||
plot3-tk, plot3-X, fix_polysolids, terrain, pixinfo.sh, png_info, dbcp, buffer,
|
||||
hex, bw-d, c-d, d-bw, d-f, d-i, d-u, f-d, f-i, i-d, -if, u-bw, u-d, u-f
|
||||
remove obsolete commands [deprecated 7.26]
|
||||
include/bu/cmd.h
|
||||
remove struct bu_cmdhist and struct bu_cmdhist_obj [deprecated 7.26]
|
||||
BU_CMDHIST_NULL, BU_CMDHIST_OBJ_NULL, bu_cmdhist_histor, bu_cmdhist_add,
|
||||
bu_cmdhist_curr, bu_cmdhist_nest, bu_cmdhist_prev [deprecated 7.26]
|
||||
fb-rle, rle-fb, bw-rle, pix-rle, rle-pix
|
||||
All tools focused specifically on the RLE image format. [deprecated 7.26]
|
||||
All tools focused specifically on the RLE image format. [deprecated 7.26]
|
||||
nirt
|
||||
-T - use LIBRT_BOT_MINTIE environment variable instead [deprecated 7.26]
|
||||
all global variables
|
||||
global variables are no longer considered published public API [deprecated 7.26]
|
||||
bn_mat_identity -> MAT_INIT_IDN or MAT_IDN() or NULL
|
||||
bn_mat_identity -> MAT_INIT_IDN or MAT_IDN() or NULL
|
||||
include/bn.h
|
||||
tp_setup, no longer needs to be public API [deprecated 7.26]
|
||||
include/raytrace.h
|
||||
@@ -195,48 +147,31 @@ include/raytrace.h
|
||||
tcl_list_to_fastf_array *_tcl_*, removal of all tcl-specific
|
||||
API functions [deprecated 7.26]
|
||||
db_regexp_match_all() -> db_ls() [deprecated 7.26]
|
||||
include/rt/solid.h
|
||||
shouldn't be public API - this level of detail belongs inside the display
|
||||
manager [deprecated 7.26]
|
||||
include/ged/defines.h
|
||||
remove struct ged_drawable - shouldn't be public API [deprecated 7.26]
|
||||
remove freesolid from struct ged - exposes struct solid [deprecated 7.26]
|
||||
include/ged/view.h
|
||||
remove current forms of dl_erasePathFromDisplay and invent_solid - they
|
||||
expose the struct solid type [deprecated 7.26]
|
||||
include/tclcad.h
|
||||
tclcad_bn_mat_print tclcad_rt_parse_ray tclcad_rt_pr_cutter
|
||||
tclcad_rt_pr_hit tclcad_rt_rt tclcad_rt_import_from_path, removal of all
|
||||
tcl-specific API functions [deprecated 7.26]
|
||||
tcl-specific API functions [deprecated 7.26]
|
||||
pixcut, pixpaste
|
||||
copyright cleanup [deprecated 7.26]
|
||||
copyright cleanup [deprecated 7.26]
|
||||
librt, fast4-g
|
||||
removal of CLINE entity support [deprecated 7.26]
|
||||
mged
|
||||
kill, killtree, killall, killrefs - replaced with rm command [deprecated 7.26]
|
||||
|
||||
rm comb obj1 obj2 comb1 ... -> new behavior: remove objects and empty combs from .g
|
||||
original functionality replaced with rm comb/obj* comb/comb1 ... syntax [deprecated 7.26]
|
||||
|
||||
expand -> replaced by search -name <pattern> (previous docs indicating matching of
|
||||
expand was regex were wrong - uses bu_fnmatch.) [deprecated 7.26]
|
||||
|
||||
pathlist, paths -> replaced by search [deprecated 7.26]
|
||||
burst
|
||||
remove termlib-based interactive menu interface [deprecated 7.26]
|
||||
kill, killtree, killall, killrefs
|
||||
replaced with rm command [deprecated 7.26]
|
||||
rm comb obj1 obj2 comb1 ... -> new behavior: remove objects and empty combs from .g
|
||||
original functionality replaced with rm comb/obj* comb/comb1 ... syntax [deprecated 7.26]
|
||||
|
||||
7.24
|
||||
----
|
||||
fbed, pp-fb
|
||||
removes termcap use, no known users [deprecated 7.24]
|
||||
removes termcap use, no known users [deprecated 7.24]
|
||||
include/raytrace librt
|
||||
db_full_path_list_add(), db_free_full_path_list() [deprecated 7.24]
|
||||
db_search_formplan(), db_search_freeplan(), db_search_full_paths() [deprecated 7.24]
|
||||
db_search_unique_objects(), struct db_full_path_list [deprecated 7.24]
|
||||
db_full_path_list_add(), db_free_full_path_list() [deprecated 7.24]
|
||||
db_search_formplan(), db_search_freeplan(), db_search_full_paths() [deprecated 7.24]
|
||||
db_search_unique_objects(), struct db_full_path_list [deprecated 7.24]
|
||||
src/irprep
|
||||
all_sf, firpass, ir-X, irdisp, pictx, secpass, shapefact, showterm [deprecated 7.24]
|
||||
all_sf, firpass, ir-X, irdisp, pictx, secpass, shapefact, showterm [deprecated 7.24]
|
||||
include/raytrace.h librt
|
||||
RT_DBHASH and RT_DBNHASH [deprecated 7.24]
|
||||
RT_DBHASH and RT_DBNHASH [deprecated 7.24]
|
||||
|
||||
7.22
|
||||
----
|
||||
@@ -245,9 +180,9 @@ include/raytrace.h librt
|
||||
RT_GET_TREE -> BU_GET [deprecation 7.22]
|
||||
RT_FREE_TREE -> BU_PUT [deprecation 7.22]
|
||||
include/bu.h
|
||||
bu_parse_mm() [deprecated 7.22]
|
||||
bu_parse_mm() [deprecated 7.22]
|
||||
librtserver
|
||||
becoming stand-alone project, removes optional java dependency [deprecated 7.22]
|
||||
becoming stand-alone project, removes optional java dependency [deprecated 7.22]
|
||||
mged
|
||||
em, e_muves, l_muves, lm, read_muves, and t_muves MUVES-specific commands [deprecated 7.22]
|
||||
|
||||
@@ -287,6 +222,8 @@ db.h
|
||||
rt_fastf_float() -> ntohf() [deprecated 7.18]
|
||||
rt_mat_dbmat() -> htonf() [deprecated 7.18]
|
||||
rt_dbmat_mat() -> ntohf() [deprecated 7.18]
|
||||
dbcp
|
||||
dbcp -> dd [deprecated 7.18]
|
||||
mged
|
||||
?(*) -> ? -(*) [deprecated 7.18]
|
||||
apropos(*) -> apropos -(*) [deprecated 7.18]
|
||||
@@ -355,42 +292,27 @@ include/raytrace.h
|
||||
struct hit.hit_normal -> RT_HIT_NORMAL [deprecated pre-7.0]
|
||||
|
||||
|
||||
***********
|
||||
* REMOVED *
|
||||
***********
|
||||
************
|
||||
* OBSOLETE *
|
||||
************
|
||||
|
||||
Below are the interfaces that have followed deprecation policy or were
|
||||
deemed minimally impacting and, regardless, are now no longer a part
|
||||
of BRL-CAD.
|
||||
Below are the interfaces that have followed deprecation policy and are
|
||||
now no longer a part of BRL-CAD.
|
||||
|
||||
7.26.0
|
||||
------
|
||||
dbcp
|
||||
dbcp -> dd [deprecated 7.18]
|
||||
pov (mged)
|
||||
removed, undocumented command with many alternatives [minimally impacting]
|
||||
polybinout (mged)
|
||||
removed, undocumented command, use plot [minimally impacting]
|
||||
pl (mged)
|
||||
removed, use plot [minimally impacting]
|
||||
conf.h
|
||||
removed - replaced with common.h [deprecated 7.0]
|
||||
UtahRLE image tools
|
||||
no longer installed by default with BRL-CAD - not used directly by
|
||||
BRL-CAD tools [minimally impacting]
|
||||
Tcl in libbu and libbn
|
||||
no longer utilize or require Tcl [dependency eliminated]
|
||||
Tcl/Tk man pages
|
||||
no longer installed by default with BRL-CAD when the bundled Tcl/Tk is used
|
||||
to build [minimally impacting]
|
||||
libbu, libbn
|
||||
no longer utilize or require Tcl [7.26 architecture change]
|
||||
include/dg.h
|
||||
implementation detail no longer being exposed, use libged [deprecated 7.22]
|
||||
implementation detail no longer being exposed, use libged [deprecated 7.22]
|
||||
autogen.sh && configure
|
||||
GNU Autotools build system -> CMake build system [deprecated 7.20]
|
||||
Dunn camera and Canon printer tools
|
||||
dunncolor [deprecated 7.16]
|
||||
dunnsnap [deprecated 7.16]
|
||||
canonize [deprecated 7.16]
|
||||
dunncolor [ deprecated 7.16 ]
|
||||
dunnsnap [ deprecated 7.16 ]
|
||||
canonize [ deprecated 7.16 ]
|
||||
genptr_t/GENPTR_NULL
|
||||
genptr_t -> void* [deprecated 7.16]
|
||||
include/bu.h
|
||||
@@ -422,7 +344,7 @@ mged
|
||||
-n option -> -c option [deprecated 7.14]
|
||||
per_line [deprecated 7.14]
|
||||
SGI-specific tools
|
||||
pl-sgi -> pl-fb [deprecated 7.16]
|
||||
pl-sgi -> pl-fb [ deprecated 7.16 ]
|
||||
src/gtools
|
||||
g_[toolname] -> g[toolname] [deprecated 7.14]
|
||||
src/librt/cmd.c
|
||||
@@ -439,9 +361,6 @@ pixread.sh
|
||||
obsolete hardware [deprecated 7.16]
|
||||
sgisnap.sh
|
||||
obsolete hardware [deprecated 7.16]
|
||||
librtserver and Java Native Interface (JNI) bindings
|
||||
removed, unused and undocumented, modern approach would be to
|
||||
use a tool such as swig to generate bindings [minimally impacting]
|
||||
|
||||
7.24.2
|
||||
------
|
||||
@@ -1075,23 +994,23 @@ s/bu_count_path(.*)\);/bu_dir_list\1, NULL);/g
|
||||
made bu_dir_list() return the number of entries [7.21]
|
||||
s/bu_strcmpm\((.*),([^,]*)\)/bu_strcmp(\1)/g
|
||||
no use for label parameter, convert to bu_strcmp() [7.21]
|
||||
bu_set_realtime() [deprecated 7.22]
|
||||
bu_set_realtime() [deprecated 7.22]
|
||||
|
||||
7.24
|
||||
----
|
||||
s/bu_set_realtime\([[:space:]]\);//g
|
||||
didn't do anything [7.23]
|
||||
didn't do anything [7.23]
|
||||
s/.*bu_cpulimit_[sg]et\([[:space:]]\);//g
|
||||
didn't do anything [7.23]
|
||||
didn't do anything [7.23]
|
||||
s/rt_g\./RTG\./g
|
||||
renamed rt_g global to RTG so it doesn't match the struct name [7.24]
|
||||
renamed rt_g global to RTG so it doesn't match the struct name [7.24]
|
||||
s/rt_functab\[/OBJ\[/g
|
||||
renamed rt_functab global to OBJ so it doesn't match the struct name [7.24]
|
||||
renamed rt_functab global to OBJ so it doesn't match the struct name [7.24]
|
||||
s/redraw_vlist/draw/g
|
||||
removed redraw_vlist mged command, just call draw or refresh [7.24]
|
||||
removed redraw_vlist mged command, just call draw or refresh [7.24]
|
||||
s/RT_BADNUM/INVALID/g
|
||||
s/RT_BADVAL/VINVALID/g
|
||||
moved RT_BADNUM and RT_BADVEC to vmath.h as INVALID and VINVALID [7.24]
|
||||
moved RT_BADNUM and RT_BADVEC to vmath.h as INVALID and VINVALID [7.24]
|
||||
s/bu_create_hash_tbl/bu_hash_tbl_create/g
|
||||
s/bu_find_hash_entry/bu_hash_tbl_find/g
|
||||
s/bu_hash_add_entry/bu_hash_tbl_add/g
|
||||
@@ -1100,7 +1019,7 @@ s/bu_hash_tbl_pr/bu_hash_tbl_print/g
|
||||
s/dm_applicationfocus\([[:space:]]*\);//g
|
||||
only useful in older os x versions, users can now do the same thing via XQuartz preferences [7.24]
|
||||
s/bu_vls_trunc2/bu_vls_trunc/g
|
||||
removed duplicitous function in favor of more general version [7.24]
|
||||
removed duplicitous function in favor of more general version [7.24]
|
||||
s/bn_pi/M_PI/g
|
||||
s/bn_twopi/M_2PI/g
|
||||
s/bn_halfpi/M_PI_2/g
|
||||
@@ -1112,34 +1031,34 @@ s/bn_inv255/(1.0 \/ 255.0)/g
|
||||
s/bn_degtorad/DEG2RAD/g
|
||||
s/bn_radtodeg/RAD2DEG/g
|
||||
s/bn_sin_scale/(BN_SINTABSIZE \/ M_2PI)/g
|
||||
eliminated a number of libbn globals in favor of existing constants [7.24]
|
||||
eliminated a number of libbn globals in favor of existing constants [7.24]
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])vfont-if\.h/\1bu\/vfont.h/g
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])cmd\.h/\1bu\/cmd.h/g
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])hist\.h/\1bu\/hist.h/g
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])magic\.h/\1bu\/magic.h/g
|
||||
library-specific public headers moved into a subdir [7.24]
|
||||
library-specific public headers moved into a subdir [7.24]
|
||||
s/([^_])([nh]to[hn][fd])/\1bu_cv_\2/g
|
||||
ntohf, ntohd, htonf, htond renamed with bu_cv_ prefix [7.24]
|
||||
ntohf, ntohd, htonf, htond renamed with bu_cv_ prefix [7.24]
|
||||
|
||||
7.26
|
||||
----
|
||||
s/bu_kill_parallel\([[:space:]]*\);//g
|
||||
didn't do anything unless called from forked process, use bu_terminate() [7.25]
|
||||
didn't do anything unless called from forked process, use bu_terminate() [7.25]
|
||||
s/bu_jmpbuf/bu_jmpbuf[0]/g
|
||||
s/bu_setjmp_valid/bu_setjmp_valid[0]/g
|
||||
can replace 0 with bu_parallel_id() to get thread-safe jumping [7.25]
|
||||
can replace 0 with bu_parallel_id() to get thread-safe jumping [7.25]
|
||||
s/bu_semaphore_reinit/bu_semaphore_init/g
|
||||
no longer need to manually reinitialize (or initialize) semaphores [7.25]
|
||||
no longer need to manually reinitialize (or initialize) semaphores [7.25]
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])fbio\.h/\1bu\/fb.h/g
|
||||
fbio.h is now part of fb.h [7.25]
|
||||
fbio.h is now part of fb.h [7.25]
|
||||
s/UNION/'u'/g
|
||||
s/SUBTRACT/'-'/g
|
||||
s/INTERSECT/'+'/g
|
||||
old db.h db4 preprocessor symbols removed, use char or DB_OP_* [7.25]
|
||||
old db.h db4 preprocessor symbols removed, use char or DB_OP_* [7.25]
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])bselect\.h/\1bsocket.h/g
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])bin\.h/\1bnetwork.h/g
|
||||
rename bselect.h and bin.h public headers to be more declaratively named [7.25]
|
||||
s/db5_enc_len\[(.*)\]/DB5_ENC_LEN(\1)/g
|
||||
rename bselect.h and bin.h public headers to be more declaratively named [7.25]
|
||||
s/db5_enc_len[(.*)]/DB5_ENC_LEN(\1)/g
|
||||
replaced db5_enc_len[] global array with DB5_ENC_LEN() macro [7.25]
|
||||
s/db_normalize/bu_normalize/g
|
||||
move the path normalization routine to libbu [7.25]
|
||||
@@ -1188,25 +1107,13 @@ s/rt_ck_vlist/bn_ck_vlist/g
|
||||
s/rt_vlist_export/bn_vlist_export/g
|
||||
s/rt_vlblock_free/bn_vlblock_free/g
|
||||
s/rt_vlblock_find/bn_vlblock_find/g
|
||||
move vlist functions from librt to libbn [7.25]
|
||||
move vlist functions from librt to libbn [7.25]
|
||||
s/([[:space:],\(,"])bn_tcl/\1tclcad_bn/g
|
||||
s/([[:space:],\(,"])rt_tcl_rt/\1tclcad_rt/g
|
||||
s/([[:space:],\(,"])rt_tcl/\1tclcad_rt/g
|
||||
tcl library registrations moved to libtclcad [7.25]
|
||||
s/rt_grow_boolstack/rt_bool_growstack/g
|
||||
rename with consistent prefixes [7.25]
|
||||
rename with consistent prefixes [7.25]
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])obj\.h/\1dm\/bview.h/g
|
||||
s/GED_VIEW_OBJ_NULL/VIEW_OBJ_NULL/g
|
||||
move view_obj to dm/bview.h [7.25]
|
||||
s/BU_PTBL_CLEAR_I\((.*)\)/BU_PTBL_SET(\1, (long*)0)/g
|
||||
replace BU_PTBL_CLEAR_I into the BU_PTBL_SET command [7.25]
|
||||
s/BU_PTBL_END\(([^\)]*)\)/(\1)->end/g
|
||||
replace BU_PTBL_END with direct ptbl peek or BU_PTBL_LEN [7.25]
|
||||
s/bu_free_argv/bu_argv_free/g
|
||||
s/bu_dup_argv/bu_argv_dup/g
|
||||
s/bu_dupinsert_argv/bu_argv_dupinsert/g
|
||||
bu_*_argv -> bu_argv_* [7.25]
|
||||
s/bu_dir_list/bu_file_list/g
|
||||
bu_dir_list -> bu_file_list [7.25]
|
||||
s/BU_FNMATCH_NOMATCH/1/g
|
||||
don't use an explicit define for the non-matching case [7.25]
|
||||
|
||||
+156
-1228
File diff suppressed because it is too large
Load Diff
@@ -247,22 +247,12 @@ for memory allocation, threading, string handling, argument support,
|
||||
linked lists, and more.
|
||||
Depends on: (threading) (malloc)
|
||||
|
||||
libbg: The BRL-CAD Geometry library implements generic algorithms
|
||||
widely used in computational geometry, such as convex hull and
|
||||
triangle/triangle intersection calculations.
|
||||
Depends on: libbn libbu
|
||||
|
||||
libbn: The BRL-CAD Numerics library provides many floating-point math
|
||||
manipulation routines for vector and matrix math, a polynomial
|
||||
equation solver, noise functions, random number generators, complex
|
||||
number support, and more as well.
|
||||
Depends on: libbu libm
|
||||
|
||||
libbrep: The BRL-CAD Boundary Representation library implements
|
||||
routines needed for the manipulation and analysis of Non-Uniform
|
||||
Rational BSpline based boundary representations.
|
||||
Depends on: libbg libbn libbu OpenNURBS
|
||||
|
||||
libcursor: The cursor library is a lightweight cursor manipulation
|
||||
library similar to curses but with less overhead.
|
||||
Depends on: termlib
|
||||
@@ -304,6 +294,14 @@ messages across stream connections. The library supports a
|
||||
client-server communication model.
|
||||
Depends on: libbu
|
||||
|
||||
librtserver: The ray-trace server library is a thin interface over
|
||||
librt that simplifies the process of applying individual ray
|
||||
intersection tests against a given set of geometry. The library
|
||||
supports communication with a BRL-CAD geometry repository and
|
||||
multithreaded ray dispatch.
|
||||
Depends on: librt libbn libbu libtcl
|
||||
Includes dependent libraries as part of this library
|
||||
|
||||
libtclcad: The Tcl-CAD library is a thin interface that assists in the
|
||||
binding of an image to a Tk graphics context.
|
||||
Depends on: libbn libbu libfb libtcl libtk
|
||||
@@ -424,15 +422,14 @@ compiler conformance with the ANSI C standard (c89).
|
||||
There is currently no C++ interface to the core BRL-CAD libraries.
|
||||
There are a few tools and enhancements to libraries that are
|
||||
implemented in C++ (the new BREP object type in librt, for example),
|
||||
and C++ is used underneath quite a number of libraries, but there is
|
||||
presently no public C++ API in use outside of OpenNURBS.
|
||||
|
||||
While C++ as an implementation language of new tools and new library
|
||||
interfaces is not prohibited, the mixing of C++ semantics and C++ code
|
||||
(including simple // style comments) in the existing C files is not
|
||||
allowed. As new interfaces are developed, new contributors become
|
||||
involved, and C++ code integration becomes more prevalent, the
|
||||
contributor guidelines will become reinforced with more details.
|
||||
but there are presently no C++ bindings available beyond experimental
|
||||
developments. While C++ as an implementation language of new tools
|
||||
and new library interfaces is not prohibited, the mixing of C++
|
||||
semantics and C++ code (including simple // style comments) in the
|
||||
existing C files is not allowed. As new interfaces are developed, new
|
||||
contributors become involved, and C++ code integration becomes more
|
||||
prevalent, the contributor guidelines will become reinforced with more
|
||||
details.
|
||||
|
||||
|
||||
CODING STYLE & STANDARDS
|
||||
@@ -875,10 +872,6 @@ Note that changes to publicly documented tools and library APIs must
|
||||
adhere to BRL-CAD's change policy. This means changes to any tests
|
||||
may require thoughtful deployment. See the CHANGES file for details.
|
||||
|
||||
These tests are run nightly on BRL-CAD's server to catch problems
|
||||
quickly - developers should be aware of the status of BRL-CAD's tests
|
||||
as seen at http://brlcad.org/CDash
|
||||
|
||||
To add new regression tests, look at regress/weight.sh for an
|
||||
integration test example and src/libbu/tests/bu_vls_vprintf.c for an
|
||||
API unit test example. See their corresponding CMakeLists.txt build
|
||||
@@ -1275,7 +1268,7 @@ Release steps are as follows:
|
||||
|
||||
# Manually check rt, mged, and archer.
|
||||
bin/rt # should report usage with correct library versions
|
||||
bin/mged -c test.g "make sph sph ; draw sph ; rt" # pops up a sphere
|
||||
bin/mged -c test.g "make sph sph ; rt" # pops up a sphere
|
||||
bin/mged # displays gui, run: opendb test.g ; draw sph ; rt
|
||||
bin/archer # displays gui, run: opendb test.g ; draw sph ; rt
|
||||
|
||||
@@ -1473,6 +1466,10 @@ audience. Always notify the following when a release is made:
|
||||
BRL-CAD SourceForge NEWS (authorized can submit)
|
||||
https://sourceforge.net/p/brlcad/news/new
|
||||
|
||||
Freshmeat (anyone can submit update)
|
||||
http://freecode.com/projects/BRL-CAD/
|
||||
short summary without news details (sentence format)
|
||||
|
||||
BRL-CAD on Facebook (authorized can submit)
|
||||
http://www.facebook.com/pages/BRL-CAD/387112738872
|
||||
short summary without news details (sentence format)
|
||||
|
||||
@@ -347,18 +347,6 @@ respectively.
|
||||
CONFIGURATION OPTIONS
|
||||
---------------------
|
||||
|
||||
--- BRLCAD_BUNDLED_LIBS ---
|
||||
|
||||
Enables compilation of all 3rd party sources that are provided within a BRL-CAD
|
||||
source distribution. If used this option sets all other 3rd party library
|
||||
build flags to ON by default. However, that setting can be overridden by
|
||||
manually setting individual variables. Default is "AUTO" - 3rd party sources
|
||||
are compiled only if they are not detected as being available and functioning
|
||||
as expected.
|
||||
|
||||
Aliases: ENABLE_ALL
|
||||
|
||||
|
||||
--- BRLCAD_ENABLE_OPENGL ---
|
||||
|
||||
Enable support for OpenGL based Display Managers in BRL-CAD.
|
||||
@@ -450,6 +438,18 @@ permissions).
|
||||
Aliases: ENABLE_DOCS, ENABLE_EXTRA_DOCS, ENABLE_DOCBOOK
|
||||
|
||||
|
||||
--- BRLCAD_BUNDLED_LIBS ---
|
||||
|
||||
Enables compilation of all 3rd party sources that are provided within a BRL-CAD
|
||||
source distribution. If used this option sets all other 3rd party library
|
||||
build flags to ON by default. However, that setting can be overridden by
|
||||
manually setting individual variables. Default is "AUTO" - 3rd party sources
|
||||
are compiled only if they are not detected as being available and functioning
|
||||
as expected.
|
||||
|
||||
Aliases: ENABLE_ALL
|
||||
|
||||
|
||||
--- BRLCAD_LEMON ---
|
||||
|
||||
Option for enabling and disabling compilation of the lemon parser
|
||||
@@ -722,15 +722,6 @@ version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
Aliases: ENABLE_SPR
|
||||
|
||||
|
||||
--- BRLCAD_BSON ---
|
||||
|
||||
Option for enabling and disabling compilation of the Libbson library
|
||||
provided with BRL-CAD's source code. Default is BUNDLED, using
|
||||
the included other/src version.
|
||||
|
||||
Aliases: ENABLE_BSON
|
||||
|
||||
|
||||
--- BRLCAD_SC ---
|
||||
|
||||
Option for enabling and disabling compilation of the NIST Step Class
|
||||
|
||||
@@ -9,59 +9,13 @@ first and are grouped by release. Each release also includes optional
|
||||
descriptive text that emphasizes or further describes significant
|
||||
changes made. See document footer for additional details.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2016-07-XX Release 7.26.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2016-06-XX Release 7.26.0 ---
|
||||
--- 2014-XX-XX Release 7.26.XX ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
This major release update of BRL-CAD culminates several years of
|
||||
development efforts to provide robust boundary representation (BREP)
|
||||
NURBS import and ray tracing support. Our NURBS capability gets us a
|
||||
step closer to full hybrid representation modeling, supporting
|
||||
seamless transitioning and mixing of boundary representation geometry
|
||||
(e.g., NURBS or polygonal meshes) with implicit representation
|
||||
geometry (e.g., primitives with CSG).
|
||||
|
||||
* added manual page for lt comb child listing command - Cliff Yapp
|
||||
* added lt -c option for specifying separation character - Bob Parker
|
||||
* mass-deprecation of 121 command-line utilities - BRL-CAD Developers
|
||||
* improved hierarchy preservation in 3dm-g importer - Jon Engbert
|
||||
* fixed upside down 'screengrab' images on some platforms - Nick Reed
|
||||
* updated wireframe drawing to respect primitive colors - Cliff Yapp
|
||||
* updated pixdiff & pixcmp to only compare same sizes - Cliff Yapp
|
||||
* fixed running archer from read-only filesystems - Cliff Yapp
|
||||
* fixed patch-g tool and E command infinite loop bug - Sean Morrison
|
||||
* improved NMG ray tracing fault tolerance - Sean Morrison
|
||||
* added 3dm-g support for layers and names - Keith Bowman
|
||||
* fixed color/shader preservation issue with 3dm-g importer - Jon Engbert
|
||||
* added 3dm-g support for mesh objects - Jon Engbert
|
||||
* added csg implicit hierarchy conversion to brep command - Cliff Yapp
|
||||
* fixed crash in clone when told to make zero copies - Cliff Yapp
|
||||
* fixed crash in search when using -above option - Cliff Yapp
|
||||
* extended nirt to list current and available formats - Sean Morrison
|
||||
* fixed NURBS wireframe drawing crash - Cliff Yapp
|
||||
* fixed firing of single rays using the rtshot tool - Sean Morrision
|
||||
* improved rcodes command feedback in the no changes case - Cliff Yapp
|
||||
* added brlman -S option to specify man page section - Cliff Yapp
|
||||
* modified rtg3 to avoid outputting excessive LOS - Nick Gerstner
|
||||
* extended burst and rtg3 to output 5 digit ID numbers - Nick Gerstner
|
||||
* improved draw command manual page documenation - Cliff Yapp
|
||||
* added lc -m option to report multi-material/los regions - Cliff Yapp
|
||||
* added new 'icv' image conversion tool w/ pix, bw, dpix, png, ppm
|
||||
- Mohit Daga, Cliff Yapp, Sean Morrison, Erik Greenwald
|
||||
* ported 'burst' tool (batch mode only) to Windows - Cliff Yapp
|
||||
* removed mged pl command, use plot command instead - Sean Morrison
|
||||
* improved datum wireframes (yellow) and fixed arrowheads - Cliff Yapp
|
||||
* added initial manual page for 'burst' ray dispatch tool - Cliff Yapp
|
||||
* improved wireframe display list performance - Keith Bowman
|
||||
* added draw -S for simplied wireframes, no subtractions - Cliff Yapp
|
||||
* added draw -L# to draw bounding boxes for large objects - Cliff Yapp
|
||||
* added 3dm-g instance reference and definition import - Jon Engbert
|
||||
* added -M draw cmd option to skip subtraction solids - Cliff Yapp
|
||||
* added -L draw cmd option to draw bboxes for large bots - Cliff Yapp
|
||||
* minor rtwizard graphical user interface reorganization - Cliff Yapp
|
||||
* ported 'brlman' manual page viewer with GUI to Windows - Cliff Yapp
|
||||
* added gdiff -h help command-line option - Cliff Yapp
|
||||
@@ -70,10 +24,8 @@ geometry (e.g., primitives with CSG).
|
||||
* improved pix-bw intensity averaging to closest integer - Cliff Yapp
|
||||
* removed pix-bw3 & bw3-pix tools, see pix-bw & bw-pix - Cliff Yapp
|
||||
* fixed pix-ppm to write out all image data - Sean Morrision
|
||||
* added libnetpbm for ppm image format support in icv - Cliff Yapp
|
||||
* added new algorithm to bot_decimate (via -f option) - Jon Engbert
|
||||
* fixed benchmark bug running from paths with spaces - Sean Morrison
|
||||
* fixed adjust command crash when working with BoTs - Daniel Roßberg
|
||||
* removed support for RLE v1 and v2 ('orle') image format - Cliff Yapp
|
||||
* fixed datum type 'in' command unit conversion bug - Cliff Yapp
|
||||
* fixed rpatch / patch-g line handling on Windows - Daniel Roßberg
|
||||
@@ -84,36 +36,25 @@ geometry (e.g., primitives with CSG).
|
||||
- Jon Engbert, Vasco Costa
|
||||
* improved point cloud plot visualization - Sean Morrison
|
||||
* fixed program freezing bug in MGED grouper command - Bob Parker
|
||||
* added 'rhc' reporting to analyze command - Kalpit Thakkar
|
||||
* improved help option consistency across numerous tools - Carl Moore
|
||||
* added prefatory FASTGEN4 geometry export support - Jon Engbert
|
||||
* improved option parsing and output options for gencolor - Carl Moore
|
||||
* fixed saveview usage help string and running from archer - Nick Reed
|
||||
* fixed and improved killtree man page - Nick Reed
|
||||
* fixed composition bugs in pixmatte and pixmerge - Carl Moore
|
||||
* fixed definition of "light year" in unit conversions - Cliff Yapp
|
||||
* modernized documents and improved infrastructure - Hitesh Sofat
|
||||
* added mirroring support for hrt primitive objects - Isaac Kamga
|
||||
* ported the mged Overlap Tool to Windows - Sean Morrison
|
||||
* improved NURBS prep performance for UV-remapped surfaces - Nick Reed
|
||||
* fixed dbconcat -c crash when color table does not exist - Nick Reed
|
||||
* swapped meanings of search's -above/-below options - Sean Morrison
|
||||
* upgraded freetype to version 2.5.5 - Cliff Yapp
|
||||
* updated libregex to apply a fix for CVE-2015-2305 - Cliff Yapp
|
||||
* upgraded libpng to version 1.6.20 - Cliff Yapp
|
||||
* added command window option for pasting tree view paths - Nick Reed
|
||||
* improved robustness of bb command oriented box option - Peter Amidon
|
||||
* added example NURBS B-Rep geometry files from NIST - Cliff Yapp
|
||||
* removed "high resolution" options from all commands - Carl Moore
|
||||
* improved performance of archer loading large BoT models - Nick Reed
|
||||
* added evaluated shaded drawing preference mode and menu - Nick Reed
|
||||
* extensive improvements to NURBS Boolean evaluation - Nick Reed
|
||||
* added 'bot chull' for creating convex hull envelopes - Cliff Yapp
|
||||
* new manual page for the g-voxel exporter - Mandarj
|
||||
* improved performance of lc command - Peter Amidon
|
||||
* updated manual page for MGED's brep command - Peter Amidon
|
||||
* new manual page for the g-dot exporter - Shardul Chiplunkar
|
||||
* added sketch centroid support the analyze command - Peter Amidon
|
||||
* new Think. Invent. Create. splash screen for archer - Marc Tannous
|
||||
* improved pix-bw to support dual output streams - Carl Moore
|
||||
* added list option to attr command - Cliff Yapp
|
||||
@@ -124,9 +65,6 @@ geometry (e.g., primitives with CSG).
|
||||
* gqa respects LIBRT_BOT_MINTIE environment variable - Ștefan Mirea
|
||||
* improved behavior of mged's draw command - Ștefan Mirea
|
||||
* fixed handling of extra whitespace in nirt commands - Ștefan Mirea
|
||||
* renamed 'make_bb' mged command name to 'bb' - Cliff Yapp
|
||||
* added g-ply exporter for Stanford PLY geometry format - Rishub Jain
|
||||
* added ply-g importer for Stanford PLY geometry format - Rishub Jain
|
||||
* fixed texture mapping crash with bad image dimensions - Ștefan Mirea
|
||||
* fixed g2asc and asc2g handling of dsp primitive - Cliff Yapp
|
||||
* rewrote gdiff with improved output & reporting options - Cliff Yapp
|
||||
@@ -136,8 +74,6 @@ geometry (e.g., primitives with CSG).
|
||||
* support non-.g file import in Archer's file open dialog - Cliff Yapp
|
||||
* added brep support to g2asc and asc2g - Cliff Yapp
|
||||
* fixed a CPU affinity locking bug on Linux platforms - Sean Morrison
|
||||
* renamed g_diff/g_lint/g_qa/g_transfer sans underscore - Cliff Yapp
|
||||
* removed mged -n option, use mged -c for classic mode - Cliff Yapp
|
||||
* fixed mged -c crash running view-modifying commands - Sean Morrison
|
||||
* improved kill, killall, killtree documentation - Sean Morrison
|
||||
* added killtree -f force flag to kill unconditionally - Sean Morrison
|
||||
@@ -147,7 +83,7 @@ geometry (e.g., primitives with CSG).
|
||||
- Wu Jianbang, Nick Reed, Cliff Yapp
|
||||
* improved step-g assembly hierarchy import support - Keith Bowman
|
||||
* fixed rtweight when using the -G grid spacing option - Sean Morrison
|
||||
* fixed memory leaks in a number of pix utilities - Cezar Elnazli
|
||||
* fixed memory leaks in a number of pix utilities - Cezar Elnazi
|
||||
* improved NURBS ray tracing & tessellation robustness - Keith Bowman
|
||||
* improved step-g NURBS geometry import robustness - Keith Bowman
|
||||
* added -v verbose output option to mged 'search' command - Cliff Yapp
|
||||
@@ -159,8 +95,6 @@ geometry (e.g., primitives with CSG).
|
||||
* added menu option to restore mged command window - Cezar Elnazli
|
||||
* search command now recognizes hyp and metaball types - Cliff Yapp
|
||||
* added -depth option to mged 'search' command - Cliff Yapp
|
||||
* initial support for rigging joints and constrained articulation
|
||||
- Nick Reed, Keith Bowman, Cliff Yapp, Sean Morrison
|
||||
* improved 'search' with 'flat' search path modifier - Cliff Yapp
|
||||
* improved 'search' with above/equal/below depth limits - Cliff Yapp
|
||||
* added comb -S option to stop when object already exists - Cliff Yapp
|
||||
@@ -441,7 +375,7 @@ received corrections and improvements. The introductory article
|
||||
* "About BRL-CAD" article translation to Armenian - Karen Mgebrova
|
||||
* "About BRL-CAD" article translation to Italian
|
||||
- Unknown Contributor, Tom Browder
|
||||
* improved 'adjust' command rgb/color attribute handling - Cliff Yapp
|
||||
* improved handling of rgb/color attributes by adjust cmd - Cliff Yapp
|
||||
* added initial support for step-g import of assemblies - Keith Bowman
|
||||
* added a basic SWIG spec file - Erik Greenwald
|
||||
* fixed referenced object highlighting in archer treeview - Bob Parker
|
||||
@@ -472,7 +406,7 @@ received corrections and improvements. The introductory article
|
||||
* improved tessellation of pipe bends for conversion - Richard Weiss
|
||||
* fixed keypoint vertex bug when editing extrude objects - Nick Reed
|
||||
* fixed eto error converting hyp objects with asc2g tool - Nick Reed
|
||||
* fixed mged bug processing edcodes command arguments - Bob Parker
|
||||
# fixed mged bug processing edcodes command arguments - Bob Parker
|
||||
* various improvements to NMG polygonal mesh processing robustness
|
||||
- Nick Reed, Sean Morrison, Richard Weiss
|
||||
* improved bad face handling within the obj-g importer - Nick Reed
|
||||
@@ -1183,7 +1117,7 @@ invalid geometry is now more robust.
|
||||
* added new -c character option to the loop command - Dawn Thomas
|
||||
* tire now checks for files instead of overwriting - Cliff Yapp
|
||||
* add new nirt formatting options, -L listing option - C. Yapp
|
||||
* fixed nirt 'dest' command file name string handling - Cliff Yapp
|
||||
* fixed nirt's dest cmd's handling of file name string - Cliff Yapp
|
||||
* modified mged nirt command to include air in results - Bob Parker
|
||||
|
||||
|
||||
@@ -1775,7 +1709,7 @@ The rtarea command was added to MGED as well, along with rtweight.
|
||||
* added a -noleaf option to the mged pathlist command - Bob Parker
|
||||
* fixed potential infinite loop bug in BoT primitive - Bob Parker
|
||||
* no longer install tclsh/wish, use btclsh/bwish - Sean Morrison
|
||||
* added 'bot_merge' mged command (combine 2 bots into 1) - Lee Butler
|
||||
* added bot_merge mged cmd (combine 2 bots into 1) - Lee Butler
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2005-06-07 Release 7.2.6 ---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
BRL-CAD
|
||||
Release 7.26.2
|
||||
Release 7.26.0
|
||||
http://brlcad.org/
|
||||
|
||||
BRL-CAD is a powerful cross-platform open source combinatorial
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
branch/binary-attributes
|
||||
========================
|
||||
|
||||
To turn on the use of binary attributes define:
|
||||
|
||||
USE_BINARY_ATTRIBUTES
|
||||
|
||||
E.g., prior to running CMake:
|
||||
|
||||
export CFLAGS=-DUSE_BINARY_ATTRIBUTES
|
||||
export CXXFLAGS=-DUSE_BINARY_ATTRIBUTES
|
||||
|
||||
external code added:
|
||||
-------------------
|
||||
|
||||
BSON
|
||||
specification: http://bsonspec.org/spec.html
|
||||
libbson source: https://github.com/mongodb/libbson
|
||||
current release tarball: https://github.com/mongodb/libbson/releases/
|
||||
libbson-1.3.0-beta0.tar.gz
|
||||
converter: libbson has tools included to convert BSON to/from JSON
|
||||
|
||||
Scheme
|
||||
------
|
||||
|
||||
The BRL-CAD V5 database seems to allow an arbitrary binary chunk
|
||||
following the ASCII attributes. The idea is to define the total
|
||||
attribute chunk length to include any desired binary objects. The
|
||||
read or write (RW) of the ASCII attributes stops with the char* RW of
|
||||
a double NULL which should be a sufficient stop RW mark. Then, any
|
||||
difference in length read versus attribute chunk length is the length
|
||||
of a chunk of binary attributes (BAs) which we will define as a BSON
|
||||
collection of BSON documents (??? check BSON terminology). At that
|
||||
point we use libbson to RW the BAs.
|
||||
|
||||
As a minumum, a BA must have an ASCII key and a binary value.
|
||||
Following the BSON specification, the user can add other objects in
|
||||
the BA if desired.
|
||||
|
||||
The user interface relies on AVS handling which will have to also
|
||||
handle the BAs (that appears to be doable). Our best practice should
|
||||
encourage (maybe require?) a BA to have a short ASCII comment.
|
||||
|
||||
We will need appropriate functions to convert BAs to/from AVS
|
||||
objects. In the course of developing the BA capability we will add a
|
||||
file IO scheme for users to manipulate the BAs.
|
||||
|
||||
User interface (mged)
|
||||
---------------------
|
||||
|
||||
Current attr usage
|
||||
******************
|
||||
|
||||
mged> attr
|
||||
Usage: attr {[-c sep_char] set|get|show|rm|append|sort|list} object [key [value] ... ]
|
||||
|
||||
Proposed attr usage
|
||||
*******************
|
||||
|
||||
mged> attr
|
||||
Usage: attr {[-c sep_char][-b] set|get|show|rm|append|sort|list} object [key [value] ... ]
|
||||
|
||||
Where the '-b', indicating a binary attribute (BA), works with 'get'
|
||||
and 'set' only (and ignored for the other commands).
|
||||
|
||||
Note that 'set' and 'get' for binary attributes require an external
|
||||
file name (which must must be a valid JSON file for 'set') and must
|
||||
NOT exist for 'get'. The 'append' command will NOT work for a BA.
|
||||
|
||||
The 'show', 'sort', and 'list' commands will show for BAs their key
|
||||
followed by followed by '(binary)' followed by their comment string,
|
||||
if it exists (we should make that mandatory I believe). The 'rm'
|
||||
command will remove the BA referenced by the key.
|
||||
|
||||
The BAs will have both a key and a comment, and it is an error to try
|
||||
to add a BA with a key the same as an existing key.
|
||||
|
||||
Tentative JSON format of a BA
|
||||
-----------------------------
|
||||
|
||||
(See http://www.json.org/ for the JSON specification.)
|
||||
|
||||
Functions needed
|
||||
----------------
|
||||
|
||||
JSON BA to/from in-memory AVS
|
||||
see current functions:
|
||||
|
||||
AVS BA to/from on-disk attribute body
|
||||
see current functions:
|
||||
|
||||
...
|
||||
|
||||
Macro definitions needed
|
||||
------------------------
|
||||
|
||||
Data structures needed
|
||||
----------------------
|
||||
|
||||
Other notes
|
||||
-----------
|
||||
Files affected:
|
||||
|
||||
./include/bu/parse.h
|
||||
./include/bu/avs.h
|
||||
./src/librt/db5_io.c
|
||||
./src/librt/attributes.c
|
||||
|
||||
Features to be implemented and other considerations:
|
||||
|
||||
+ add a binary attribute using similar syntax as a string attribute
|
||||
+ a binary attribute should have an optional description field
|
||||
+ implement auto update of an object's ctime (creation time) and
|
||||
mtime (last modification)
|
||||
+ mtime and ctime should be 64-bit integers (based on Unix time and
|
||||
epoch) (int64_t; see src/libbu/y2038/time64_config.h)
|
||||
+ binary attributes should be able to be entered from or output to a
|
||||
file
|
||||
|
||||
A db admin tool:
|
||||
|
||||
./src/util/db-admin-tool.cpp
|
||||
|
||||
On-disk format of a binary attribute [following the (char*)NULL
|
||||
(char*)NULL end of the normal attributes]:
|
||||
|
||||
While I believe we can use the existing AVS attribute section for BAs,
|
||||
I believe in the future we ought to create a separate object structure
|
||||
section for binary attributes, especially if we use a more compact
|
||||
binary representation such as CBOR.
|
||||
|
||||
The following describes the current V5 db:
|
||||
|
||||
BRL_CAD_g_format_V5.xml
|
||||
|
||||
The following describes the proposed V6 db with the binary attributes:
|
||||
|
||||
BRL_CAD_g_format_V6.xml
|
||||
|
||||
|
||||
Possible tests:
|
||||
|
||||
1. Simple TGM
|
||||
+ create a single-object TGM
|
||||
+ copy the TGM to a new file (TGM2)
|
||||
+ add multiple binary attributes to TGM2
|
||||
+ add a file to TGM2
|
||||
+ use the admin-db tool to check TGM2
|
||||
+ export the file; check that it is the same as was imported
|
||||
+ delete the added binary attributes from TGM2
|
||||
+ run cmp on TGM and TGM2 to see they are the same
|
||||
|
||||
2. Complex TGM
|
||||
+ select a complex TGM in the db directory as a test subject
|
||||
+ copy the TGM to a new file (TGM2)
|
||||
+ add multiple binary attributes to TGM2
|
||||
+ add a file to TGM2
|
||||
+ use the admin-db tool to check TGM2
|
||||
+ export the file; check that it is the same as was imported
|
||||
+ delete the added binary attributes from TGM2
|
||||
+ run cmp on TGM and TGM2 to see they are the same
|
||||
|
||||
See the TODO file, sections "ATTRIBUTES" and "THESE BREAK PROTOCOL OR
|
||||
ARE BACKWARDS-INCOMPATIBLE" for more official information.
|
||||
@@ -18,57 +18,32 @@ tasks as they are completed.
|
||||
THESE TASKS SHOULD HAPPEN BEFORE THE NEXT RELEASE
|
||||
-------------------------------------------------
|
||||
|
||||
* quick check of CHANGES to make sure user-vis obsoletions are in NEWS
|
||||
* sync tgc/rec shot() behavior, sort results for proper normal.
|
||||
inspect t62 grazing with r653,r735 (tgc on an arb8) looking at ae0,0
|
||||
and z=1524 (was hit/overlap, now misses).
|
||||
|
||||
* fix regressions in lc -d and -s options
|
||||
* fix regressions in step-g
|
||||
|
||||
* regressed behavior in mged and archer: they seem to be defaulting
|
||||
objects to black instead of white/gray. wireframes and default
|
||||
black-background rendering make newly created objects practically
|
||||
invisible.
|
||||
* figure out why the following is crashing:
|
||||
|
||||
* check these commits for documentation:
|
||||
58415 - NEWS, attributes are now case-insensitive (test: any or just standard ones?)
|
||||
58147 - NEWS, improved search command documentation examples
|
||||
58146 - NEWS, improved archer initialization, removed startup flashing
|
||||
58145 - NEWS, minor but technically user visible and potentially significant if the assumptions made are incorrect (improved tire command usage statement)
|
||||
58254 - NEWS, fixed bug you say? what bug?
|
||||
58325 - NEWS, improved v5 specification formatting, added timestamp proposal
|
||||
64637 - NEWS, almost certainly fixed mysterious errors during dbconcat and db_opens with duplicate names found
|
||||
58475 - AUTHORS if user identified the fix (not just the bug), NEWS if g-step considered published
|
||||
58594, 58608 - AUTHORS for mged tutorial fixes (doc or code contrib section), NEWS if user-vis
|
||||
61168 - NEWS, new param option to search
|
||||
64314 - NEWS, announce the new doc
|
||||
63132 - NEWS, expanded rtedge usage
|
||||
bin/rtshot -R 1 -p 0 0 0 -d 1 0 0 share/db/havoc.g havoc
|
||||
|
||||
is it related to using bu_hash in some fashion? This test worked
|
||||
as of r65575
|
||||
|
||||
* quick rtg3 with -c option. was failing when run without -c "set
|
||||
ray_data_file=..." with this: "RTG3: Invalid argument" and "Cannot
|
||||
open ray data output file"
|
||||
|
||||
* rtwizard command line ghost image specification isn't working
|
||||
reliably
|
||||
|
||||
* drawing datums far from origin result in huge arrowheads
|
||||
|
||||
|
||||
THESE TASKS SHOULD HAPPEN WITHIN TWO RELEASE ITERATIONS
|
||||
-------------------------------------------------------
|
||||
|
||||
* update astyle
|
||||
|
||||
* integrate gen-registered-attributes-html output into website
|
||||
|
||||
* brlcad-config build helper script is not working (not reporting
|
||||
-llibs, reporting semicolon list for 'brlcad' lib). Example working output:
|
||||
$ /usr/brlcad/rel-7.18.0/bin/brlcad-config brlcad
|
||||
-L/usr/brlcad/rel-7.18.0/lib -m64 -L/usr/local/lib64 -L/usr/local/lib -pipe -fno-strict-aliasing -fno-common -fexceptions -ggdb3 -D_FORTIFY_SOURCE=2 -O3 -w -L/usr/brlcad/rel-7.18.0/lib -lbrlcad -lged -lwdb -lrt -lbn -lbu -ltcl8.5 -ldl -lm -lpng14 -lz -lc -lpthread -lregex -lsysv -lopenNURBS -lanalyze
|
||||
|
||||
$ /usr/brlcad/rel-7.18.0/bin/brlcad-config rt
|
||||
-L/usr/brlcad/rel-7.18.0/lib -m64 -L/usr/local/lib64 -L/usr/local/lib -pipe -fno-strict-aliasing -fno-common -fexceptions -ggdb3 -D_FORTIFY_SOURCE=2 -O3 -w -L/usr/brlcad/rel-7.18.0/lib -lrt -lbn -lbu -ltcl8.5 -ldl -lm -lpng14 -lz -lc -lpthread -lregex -lsysv -lopenNURBS
|
||||
|
||||
* bu_*_argv -> bu_argv_*
|
||||
|
||||
* obsd stack crashers
|
||||
|
||||
* rt moss.g facetize rt bot bug
|
||||
|
||||
* invoke graphical with console, play nicely
|
||||
|
||||
* sync tgc/rec shot() behavior, sort results for proper normal.
|
||||
inspect t62 grazing with r653,r735 (tgc on an arb8) looking at ae0,0
|
||||
and z=1524 (was hit/overlap, now misses).
|
||||
|
||||
* reinstate 'stat' and search -size, see r67636 through r67646
|
||||
|
||||
* turn on Bullet code (simulate command) unconditionally
|
||||
@@ -94,56 +69,39 @@ THESE TASKS SHOULD HAPPEN WITHIN TWO RELEASE ITERATIONS
|
||||
THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
-----------------------------------
|
||||
|
||||
* evaluate OpenMesh (http://www.openmesh.org) and OpenFlipper
|
||||
(http://www.openflipper.org) for smoothing, decimation, and
|
||||
additional GCV conversion formats.
|
||||
|
||||
* GCT decimation assumes no edge is shared by two triangles except
|
||||
once in the reversed order (AB, BA). Needs basic check to avoid
|
||||
failures/crashing.
|
||||
|
||||
* V&V bwcrop, pixembed are behaving correctly, as documented
|
||||
|
||||
* need routine that returns a color given a path, similar to
|
||||
rt_comb_get_color() but full path so that inheritance is taken into
|
||||
account and colors set correctly.
|
||||
|
||||
* implement unit tests for bu dirent / stat API
|
||||
|
||||
* OpenCL for enhanced performance boolweave sorting
|
||||
|
||||
* create boolweave+boolfinal unit tests to validate weaving behavior
|
||||
and performance.
|
||||
|
||||
* convert src/util/terrain.c to src/shapes/terrain.c writing out the
|
||||
datafile to a binunif along with a referencing dsp. perhaps add
|
||||
command line option to skip .g to retain prior datafile capability.
|
||||
need to review command line options to simplify complexity and
|
||||
control randomization better.
|
||||
|
||||
* implement quasi-random unbiased iterative spherical ray sampling.
|
||||
requires devising an algorithm whereby we obtain a set of points on
|
||||
a sphere with rays randomly going through those points, so we sample
|
||||
the volume evenly. we need to be able to add additional sets of
|
||||
points/rays (incrementally or step-wise) in order to evaluate
|
||||
convergence and estimate error. this feature is useful for checking
|
||||
overlaps, surface area, volume, and moments of inertia.
|
||||
|
||||
* get_eyemodel returns an eye_pt entry, but feeding the results to
|
||||
archer's eye_pt command results in get_eyemodel returning a different
|
||||
eye_pt, even when the units are all in mm. is this expected?
|
||||
intuitively, I would expected feeding the results of get_eyemodel to
|
||||
eye_pt to result in no change, modulo unit conversions.
|
||||
|
||||
* make rt -b accept a pixel index in addition to x,y pixel coordinates
|
||||
* teach pixdiff, rt, and other tools that can/should support the
|
||||
capability to read/write (as appropriate) pixel index values and
|
||||
reproduce the ray fired to create that pixel. rt's -j option can
|
||||
specify a sub-rectangle, but the key point (whatever the details of
|
||||
implementation) is to be able to easily identify and reproduce the
|
||||
ray that produces a given pixel when debugging. For example,
|
||||
pixdiff's -l option will report differing pixels by index - rt
|
||||
should support those index specifications as an input option.
|
||||
Another possibility would be to have rt support accepting an input
|
||||
image as a "control" image and generating a file with nirt or rtshot
|
||||
commands for each pixel that reports different from the control.
|
||||
|
||||
* teach pixdiff and other tools that can/should support the capability
|
||||
to read/write (as appropriate) pixel index values or x,y coordinates
|
||||
and reproduce the ray fired to create that pixel. currently does -l
|
||||
index but not xy coordinates.
|
||||
* pull work on rm command out of history (commit r67394 reverted it)
|
||||
and take it to a production ready stage.
|
||||
|
||||
* Extract bounding box code from both autoview.c and get_autoview.c
|
||||
into a general bounding rpp function in librt and use accordingly
|
||||
(particularly in libged). Should combine autoview.c with
|
||||
get_autoview.c (perhaps as a flag) and utilize the general function
|
||||
in lots of places (e.g., the ged_arb() function).
|
||||
|
||||
* make mged work without a batch script
|
||||
|
||||
* make archer work without a batch script
|
||||
|
||||
* make isst work without a batch script
|
||||
|
||||
* Need to rethink libbu hash API - ideally should be much simpler and
|
||||
expose much less to the user.
|
||||
|
||||
@@ -210,6 +168,9 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
fixes some concerns but breaks if an application changes its notion of
|
||||
the current working directory after initialization, for example.
|
||||
|
||||
* make the idents command not list subtracted objects by default,
|
||||
optionally list everything
|
||||
|
||||
* start making use of the CMakePushCheckState macros - we are doing
|
||||
this manually in several places
|
||||
|
||||
@@ -289,6 +250,12 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
|
||||
* import CTRI material information in fast4-g as per-face data.
|
||||
|
||||
* improve performance of these commands that seem to have exponential
|
||||
cost: bot_split, killtree
|
||||
|
||||
* translate lc command to libged (discovered in Feb. 2015 to have already
|
||||
been done -- need information regarding when this was done and committed).
|
||||
|
||||
* Integrate ADRT into Archer as a visualization mode.
|
||||
|
||||
* Document a GUI feature list (prioritized).
|
||||
@@ -314,6 +281,13 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
propagated up into separate region hits. the prior is probably
|
||||
easier and less error-prone.
|
||||
|
||||
* BoT mesh editing command. Subtasks:
|
||||
|
||||
- enumerate functions desirable
|
||||
- catalog features of other mesh manipulation tools
|
||||
- investigate mesh editing libraries and/or relying on NMG editing
|
||||
- bind GUI editing to the BoT mesh editing command
|
||||
|
||||
* establish the Basic Application Runtime (BAR), only consisting of
|
||||
libbu and libbn, as a stand-alone self-contained project. provide
|
||||
an API that supports most C/C++ application development and
|
||||
@@ -337,6 +311,16 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
functions until it provides some clear advantage (e.g., portability,
|
||||
performance, and/or maintainability).
|
||||
|
||||
* object error heuristic. implement a function/command to report how
|
||||
big of an error a given geometry object has. the intent is to help
|
||||
prioritize geometry modeling errors based on their spatial impact.
|
||||
this is particularly relevant for nurbs/brep and nmg geometry where
|
||||
there may be solidity gaps in the topology that need to be sealed or
|
||||
dangling faces/surfaces of different sizes. this is meant to be a
|
||||
relative heuristic applicable across all geometry, not necessary an
|
||||
exact measure. this may make more sense added as an output option
|
||||
to glint or as a warning category for a geometry debugger.
|
||||
|
||||
* create a joint articulation (manually is good, automatic is better)
|
||||
for the tin woodsman so he can move his arms, legs, neck, and head.
|
||||
|
||||
@@ -381,6 +365,17 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
|
||||
* investigate INFINITY spatial partitioning issue.
|
||||
|
||||
* implement a region anointment feature where the user can turn an
|
||||
assembly into a region and change all lower or higher regions into
|
||||
combinations. basically consolidate or distribute region flags.
|
||||
this is partially covered by the 'comb' command but it tries hard to
|
||||
ensure geometry isn't left in a broken state. needs to be a way to
|
||||
do the simple consolidate/distribute operation regardless of
|
||||
resulting state.
|
||||
|
||||
* update search depth options (above + below) to make sure the logic
|
||||
supports depth=0 / above=0 / below=0 meaning the current node.
|
||||
|
||||
* kill material_head static global in src/librt/mater.c
|
||||
|
||||
* add an mk_extrude() routine to libwdb.
|
||||
@@ -389,7 +384,6 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
other options supplied at the command line and in environment
|
||||
variables. See whether we can pass a variable into CMAKE_C_FLAGS
|
||||
that will allow specification of build flags at make time.
|
||||
Relevant link: https://cmake.org/Bug/view.php?id=12928
|
||||
|
||||
* investigate the possibility of allowing functions to define
|
||||
their own custom filters for some version of the db_search API.
|
||||
@@ -399,6 +393,9 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
as the functions satisfy the API templates used by the db_plan
|
||||
structures, wouldn't custom functions work?
|
||||
|
||||
* merge get_eyemodel's functionality as a "view eyemodel"
|
||||
sub-command in MGED/Archer.
|
||||
|
||||
* document gqa centroid and moments of inertia options
|
||||
|
||||
* add support for custom and random views to gqa. provide an option
|
||||
@@ -558,16 +555,10 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
* decouple libwdb from librt, particularly the headers and relevant
|
||||
structures that cross over to both such as the rtgeom.h types.
|
||||
|
||||
* Translate logic from clipper polygon clipping library
|
||||
(http://www.angusj.com/delphi/clipper.php) into libbg and use it
|
||||
as a pre-processing step for poly2tri's algorithm along the lines
|
||||
of what bitfighter did: https://github.com/raptor/clip2tri
|
||||
Some useful notes here: http://stackoverflow.com/a/16115775
|
||||
|
||||
* Translate the poly2tri routines into libbg C code
|
||||
* Translate the poly2tri routines into libbn C code
|
||||
|
||||
* Implement Shamos-Hoey test for checking whether a polygon is simple
|
||||
in libbg: http://geomalgorithms.com/a09-_intersect-3.html
|
||||
in libbn: http://geomalgorithms.com/a09-_intersect-3.html
|
||||
|
||||
* figure out what in f_matpick (or possibly some other related function)
|
||||
is causing ipathpos to get incremented to a number larger than the
|
||||
@@ -576,6 +567,24 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
* change _mged_ command prefix to a simple '.' prefix to hide/protect
|
||||
the built-in commands.
|
||||
|
||||
* the 'comb' command both updates and creates combinations. this is a
|
||||
problem because it's not possible to infer an intended result from
|
||||
the command string alone. it should either append to an existing
|
||||
combination and fail if it doesn't exist (with flag to create) OR it
|
||||
should create a combination and fail if there is an existing
|
||||
combination (with flag to append).
|
||||
|
||||
* Update the comb "region lift" capability to handle automatic duplication
|
||||
and substitution of the duplicate into the tree of combs who can't have
|
||||
their definitions changed without impacting other geometry in the .g file.
|
||||
|
||||
* change 'mirror' command offset to be prior to mirror instead of
|
||||
after, so that you can mirror intuitively over a specified point
|
||||
along a given axis.
|
||||
|
||||
* add option to 'mirror' command to delete the source object. support
|
||||
specification of a plane as the view plane, 3 points, XY, YZ, XZ.
|
||||
|
||||
* refactor rt_mirror (src/librt/primitives/mirror.c) into the functab
|
||||
|
||||
* refactor rt_functab accessors to go through an api call or calls so
|
||||
@@ -608,9 +617,6 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
* investigate integrating Pixar's OpenSubdiv for subdivision surfaces:
|
||||
http://graphics.pixar.com/opensubdiv/
|
||||
|
||||
* investigate the possibility of using Appleseed (http://appleseedhq.net/)
|
||||
to perform visual image rendering using librt shotline data for input.
|
||||
|
||||
* the scale structure in bn_cmd_noise_slice (bn_tcl.c) was never
|
||||
initialized. it looks like somebody has planned to extend the
|
||||
function but never carried out
|
||||
@@ -640,6 +646,10 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
as API instead of expecting callers to use RT_DBNHASH and
|
||||
RT_DBHASH() manually. consider using bu_hash or other container.
|
||||
|
||||
* rename chan_add, chan_mult, chan_permute and look into possibly
|
||||
merging them into one tool in the util directory. similar to the
|
||||
'join' command, but arguably easier to use.
|
||||
|
||||
* temp colors and temp matrices during ray tracing, rt, rtwizard.
|
||||
need a command-line and mged method to override parameters.
|
||||
|
||||
@@ -662,6 +672,11 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
|
||||
* convert teapot to use nurbs surfaces instead of bspline
|
||||
|
||||
* add an option to the bb command for calculating a bounding box that
|
||||
encompasses subtracted objects and trimmed surfaces and default to
|
||||
calculating a tight-fitting fbounding box once we have a robust path
|
||||
from geom->NURBS+CSG->NURBS.
|
||||
|
||||
* create a FASTGEN sample geometry with all entities defined and a
|
||||
corresponding regression test to make sure outputs don't change.
|
||||
|
||||
@@ -749,14 +764,39 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
* Mac OS X mouse input binding problem seems to be back with rotations
|
||||
stalling during interactive use.
|
||||
|
||||
* killall command reports db_lookup failures if the target object
|
||||
doesn't exist (maybe we only care about refs). should keep quiet.
|
||||
|
||||
* pixdiff reports bytes, but reports incorrect (off-by-one) bytes for
|
||||
.bw input files. cause is due to tool assuming input is rgb triplets
|
||||
(even though output is bytes, wtf?). should probably report pixels
|
||||
and/or have a -b option for handling byte/bw input.
|
||||
|
||||
* the new "exists" command is a beautiful corollary to the unix 'test'
|
||||
command. make the usage match, remove options that make no sense
|
||||
after you've replaced instances of 'file' with 'object', and add
|
||||
options specific to testing geometry (like whether two objects
|
||||
overlap, whether an object's volume is greater than some value or
|
||||
equal to zero, whether two objects are actually the same object
|
||||
(geometrically), etc.).
|
||||
|
||||
* investigate why epa primitive is so sensitive to coarse absolute
|
||||
value changes (run csgbrep, tol abs=1, facetize and get 321k poly)
|
||||
|
||||
* implement a new "simulate" command for applying physics deformations
|
||||
to geometry. Each timestep (default steps==1) would get recorded as
|
||||
new geometry unless updating the existing is requested. Usage might
|
||||
be something like this:
|
||||
|
||||
simulate [-k] [-g|-G] [-f x y z N] <time> [steps]
|
||||
|
||||
Examples:
|
||||
simulate 10.5 # simulate 10.5s of time (default gravity)
|
||||
simulate 3 10 # simulate 30s of time, 10s per timestep
|
||||
simulate -f 0 0 -1.0 9.807 3.0 # earth's gravity for 3s
|
||||
simulate -k 1.0 # simulate 1s of gravity, overwriting original
|
||||
simulate -G -f 1 2 3 .4 5 # no gravity, custom force, 5s
|
||||
|
||||
* implement http network transfer tool for crash reports and benchmark
|
||||
analyses (via libfetch)
|
||||
|
||||
@@ -779,6 +819,8 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
framebuffer is enabled and the window is resized. initialize and
|
||||
refresh the new memory and zap the framebuffer.
|
||||
|
||||
* merge sed and oed commands
|
||||
|
||||
* make the right-hand path to oed optional
|
||||
|
||||
* deprecate dbcp and merge functionality (and improved
|
||||
@@ -789,6 +831,8 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
|
||||
* update g-xxx_facets to use libgcv
|
||||
|
||||
* make sure 'preview' works, particularly the 'tree' subcommand.
|
||||
|
||||
* make nreed's new bot cleanup interface update interactively without
|
||||
resorting to calls to Tcl_DoOneEvent() down in librt.
|
||||
|
||||
@@ -801,6 +845,9 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
|
||||
* investigate OpenEXR (BSD licensed HDE image format)
|
||||
|
||||
* add support for a custom unit conversion factor to the units command
|
||||
(e.g. 'units 9.3120223' or 'units metertons 9.3120223')
|
||||
|
||||
* usage statistics. similar to the eclipse Usage Data Collector, keep
|
||||
track of which BRL-CAD command-line commands and MGED/libged
|
||||
commands are run. Give the user the option of uploading those
|
||||
@@ -841,6 +888,10 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
obtain a bu_log()-style callback function returned from a
|
||||
logger registration function.
|
||||
|
||||
* deprecate dbfind - ensure functionality is fully captured by the
|
||||
search command, make it report a deprecation statement on use and
|
||||
utilize search under the hood.
|
||||
|
||||
* investigate impact of using lookup tables for root solving.
|
||||
implement lookup tables for a range of linear, quadratic, cubic, and
|
||||
quartic polynomial coefficients. compare performance to root
|
||||
@@ -882,6 +933,9 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
intersected with them) since, while bad practice, are valid
|
||||
geometrically.
|
||||
|
||||
* implement some sort of archive/backup command in mged in order to
|
||||
save the currently open database out to a file.
|
||||
|
||||
* make sure there are no getenv() non-NULL assumptions within the
|
||||
code. might want to see if there's a pattern of variables being
|
||||
checked such that a libbu interface would be warranted (e.g.,
|
||||
@@ -929,6 +983,15 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
* refactor mged's signal handling to make it possible to safely
|
||||
interrupt long-running commands
|
||||
|
||||
* add a -color option to all mged commands that draw geometry (B, eid,
|
||||
and E come to mind)
|
||||
|
||||
* have mged record a timestamped command history by default
|
||||
|
||||
* implement -exec support for 'search' command
|
||||
|
||||
* implement -param support for 'search' command
|
||||
|
||||
* readd support for vrml v1 to g-vrml so that users can select whether
|
||||
they want v2 (default) or previous v1 output format via a
|
||||
command-line switch. see http://brlcad.svn.sf.net/viewvc/brlcad/brlcad/trunk/conv/g-vrml.c?view=diff&pathrev=22798&r1=16900&r2=16901
|
||||
@@ -952,6 +1015,8 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
|
||||
* calculate radii of gyration in 'analyze' and/or gqa output
|
||||
|
||||
* implement 'analyze' command option to write output to a file
|
||||
|
||||
* implement make, ted, edsol, mirror, and analyze for revolve
|
||||
primitive. implement tess() too.
|
||||
|
||||
@@ -966,6 +1031,13 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
|
||||
* give bot-bldxf the axe (reconcile and merge with bot_dump)
|
||||
|
||||
* implement mged object name globbing similar to tclsh's globbing
|
||||
(i.e. via a globbing command and quoting globs that use []). testing
|
||||
shows db_glob doesn't seem to behave correctly, at least not like
|
||||
glob. hook globbing into all commands so glob_compat_mode
|
||||
statefulness can go away. a db_glob expression that doesn't match
|
||||
anything should not return the expression.
|
||||
|
||||
* come up with a new tool that automatically generates "inside"
|
||||
regions for a given model as a way to automatically model air.
|
||||
particularly useful for bot models where the inside air compartment
|
||||
@@ -1100,6 +1172,8 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
* libfb + font rendering (perhaps through libbn's plot interface) for
|
||||
a posix terminal.
|
||||
|
||||
* OpenCL for enhanced performance boolweave sorting
|
||||
|
||||
* getexecname, "/proc/self/cmdline", program_invocation_short_name.
|
||||
separate out into new file.
|
||||
|
||||
@@ -1140,6 +1214,15 @@ THESE ARE UNSCHEDULED BACKLOG TASKS
|
||||
combinations of these primitives, provided their continuity at the
|
||||
ends ensures continuity all along "seams" - something to consider.
|
||||
|
||||
* incorporate some variety of spatial partitioning into the facetize
|
||||
command (may involve just rewriting it) to try and realize MUCH
|
||||
faster tessellation of CSG geometry. Current routines are doing a
|
||||
lot of unnecessary work that tends to result in explosive completion
|
||||
times for worst-case scenarios - try to get closer to the "only do
|
||||
the work we need to" ideal. Once a new idea is proven in that
|
||||
command, it should be made into a libgcv routine and
|
||||
converters/other commands retargeted to use it.
|
||||
|
||||
* look into embedding both rgb[3] and complex[n] data types in a union
|
||||
to allow unification of libmultispectral and liboptical APIs to a
|
||||
single more general liboptical. Need to be careful about
|
||||
@@ -1280,16 +1363,6 @@ LIBGED
|
||||
|
||||
* See src/libged/TODO for new command and subcommand ideas.
|
||||
|
||||
* the lt [-c] obj command looks like it should be replaceable with
|
||||
a search command (search obj -depth 1) and a more powerful -print
|
||||
option that can do things like mimic tcl style output and create
|
||||
lists with user specified character separation. Enhance search
|
||||
to do more powerful printing, then make lt an alias to a search
|
||||
call.
|
||||
|
||||
* pull work on rm command out of history (commit r67394 reverted it)
|
||||
and take it to a production ready stage.
|
||||
|
||||
* libged needs to support "temporary" objects that are in-memory only
|
||||
and will disappear when the ged instance is destroyed, yet is
|
||||
otherwise considered real objects in a given database. this
|
||||
@@ -1331,153 +1404,6 @@ LIBGED
|
||||
common code in src/libanalyze (there may be more candidates around
|
||||
the tree)
|
||||
|
||||
* Extract bounding box code from both autoview.c and get_autoview.c
|
||||
into a general bounding rpp function in librt and use accordingly
|
||||
(particularly in libged). Should combine autoview.c with
|
||||
get_autoview.c (perhaps as a flag) and utilize the general function
|
||||
in lots of places (e.g., the ged_arb() function).
|
||||
|
||||
* Explore possibility of expanding dm command to accept object names
|
||||
as a way of tweaking display manager specific properties (wireframe
|
||||
vs solid drawing, shading on normals, etc.) that are currently
|
||||
controlled only via the draw command. Many of the undocumented (or
|
||||
poorly documented) draw options are very specific and there are many
|
||||
more possible similar options that aren't defined. Initial thought
|
||||
is to allow passing "dm" subcommands to draw (maybe --dm key=val or
|
||||
some such) and using the dm command to offer display type aware
|
||||
hooks (for example, solid drawing isn't a valid option in text mode
|
||||
display, so options about how to shade normals don't make much
|
||||
sense. On the other hand, a full scene graph could have many
|
||||
per-object display options the user (or application) would want to
|
||||
tweak on a per object basis, e.g. dm obj.r transparency 0.3. Hard
|
||||
wiring draw options isn't going to be flexible or user friendly;
|
||||
need something similar to the new dm ability to supply dm-backend
|
||||
specific options to the user.
|
||||
|
||||
* use the globbing work needed for proper rm support to enhance the
|
||||
ls command. dbfind's behavior can be emulated by search, but the
|
||||
speed of dbfind is not practical in search due to the potential
|
||||
generality of search's filters. search would have to pre-process
|
||||
its plan and prove it needed to examine only a subset of the full
|
||||
hierarchy in advance. ls */objname is a better match for what
|
||||
dbfind is actually doing, and if need be we could add a
|
||||
--print-parent option or some such to precisely mimic dbfind's
|
||||
output.
|
||||
|
||||
* make the idents command not list subtracted objects by default,
|
||||
optionally list everything
|
||||
|
||||
* improve performance of these commands that seem to have exponential
|
||||
cost: bot_split, killtree
|
||||
|
||||
* translate lc command to libged (discovered in Feb. 2015 to have already
|
||||
been done -- need information regarding when this was done and committed).
|
||||
|
||||
* BoT mesh editing command. Subtasks:
|
||||
|
||||
- enumerate functions desirable
|
||||
- catalog features of other mesh manipulation tools
|
||||
- investigate mesh editing libraries and/or relying on NMG editing
|
||||
- bind GUI editing to the BoT mesh editing command
|
||||
|
||||
* object error heuristic. implement a function/command to report how
|
||||
big of an error a given geometry object has. the intent is to help
|
||||
prioritize geometry modeling errors based on their spatial impact.
|
||||
this is particularly relevant for nurbs/brep and nmg geometry where
|
||||
there may be solidity gaps in the topology that need to be sealed or
|
||||
dangling faces/surfaces of different sizes. this is meant to be a
|
||||
relative heuristic applicable across all geometry, not necessary an
|
||||
exact measure. this may make more sense added as an output option
|
||||
to glint or as a warning category for a geometry debugger.
|
||||
|
||||
* implement a region anointment feature where the user can turn an
|
||||
assembly into a region and change all lower or higher regions into
|
||||
combinations. basically consolidate or distribute region flags.
|
||||
this is partially covered by the 'comb' command but it tries hard to
|
||||
ensure geometry isn't left in a broken state. needs to be a way to
|
||||
do the simple consolidate/distribute operation regardless of
|
||||
resulting state.
|
||||
|
||||
* update search depth options (above + below) to make sure the logic
|
||||
supports depth=0 / above=0 / below=0 meaning the current node.
|
||||
|
||||
* the 'comb' command both updates and creates combinations. this is a
|
||||
problem because it's not possible to infer an intended result from
|
||||
the command string alone. it should either append to an existing
|
||||
combination and fail if it doesn't exist (with flag to create) OR it
|
||||
should create a combination and fail if there is an existing
|
||||
combination (with flag to append).
|
||||
|
||||
* Update the comb "region lift" capability to handle automatic duplication
|
||||
and substitution of the duplicate into the tree of combs who can't have
|
||||
their definitions changed without impacting other geometry in the .g file.
|
||||
|
||||
* change 'mirror' command offset to be prior to mirror instead of
|
||||
after, so that you can mirror intuitively over a specified point
|
||||
along a given axis.
|
||||
|
||||
* add option to 'mirror' command to delete the source object. support
|
||||
specification of a plane as the view plane, 3 points, XY, YZ, XZ.
|
||||
|
||||
* add an option to the bb command for calculating a bounding box that
|
||||
encompasses subtracted objects and trimmed surfaces and default to
|
||||
calculating a tight-fitting fbounding box once we have a robust path
|
||||
from geom->NURBS+CSG->NURBS.
|
||||
|
||||
* killall command reports db_lookup failures if the target object
|
||||
doesn't exist (maybe we only care about refs). should keep quiet.
|
||||
|
||||
* the new "exists" command is a beautiful corollary to the unix 'test'
|
||||
command. make the usage match, remove options that make no sense
|
||||
after you've replaced instances of 'file' with 'object', and add
|
||||
options specific to testing geometry (like whether two objects
|
||||
overlap, whether an object's volume is greater than some value or
|
||||
equal to zero, whether two objects are actually the same object
|
||||
(geometrically), etc.).
|
||||
|
||||
* replace sed and oed commands: functionality provided by new 'edit'
|
||||
command, but requires testing (unit tests) to make sure it's working
|
||||
correctly.
|
||||
|
||||
* make sure 'preview' works, particularly the 'tree' subcommand.
|
||||
|
||||
* add support for a custom unit conversion factor to the units command
|
||||
(e.g. 'units 9.3120223' or 'units metertons 9.3120223')
|
||||
|
||||
* deprecate dbfind - ensure functionality is fully captured by the
|
||||
search and ls commands, make it report a deprecation statement on
|
||||
use and utilize ls under the hood.
|
||||
|
||||
* implement some sort of archive/backup command in mged in order to
|
||||
save the currently open database out to a file.
|
||||
|
||||
* add a -color option to all mged commands that draw geometry (B, eid,
|
||||
and E come to mind)
|
||||
|
||||
* have mged record a timestamped command history by default
|
||||
|
||||
* implement -exec support for 'search' command
|
||||
|
||||
* implement -param support for 'search' command
|
||||
|
||||
* implement 'analyze' command option to write output to a file
|
||||
|
||||
* implement mged object name globbing similar to tclsh's globbing
|
||||
(i.e. via a globbing command and quoting globs that use []). testing
|
||||
shows db_glob doesn't seem to behave correctly, at least not like
|
||||
glob. hook globbing into all commands so glob_compat_mode
|
||||
statefulness can go away. a db_glob expression that doesn't match
|
||||
anything should not return the expression.
|
||||
|
||||
* incorporate some variety of spatial partitioning into the facetize
|
||||
command (may involve just rewriting it) to try and realize MUCH
|
||||
faster tessellation of CSG geometry. Current routines are doing a
|
||||
lot of unnecessary work that tends to result in explosive completion
|
||||
times for worst-case scenarios - try to get closer to the "only do
|
||||
the work we need to" ideal. Once a new idea is proven in that
|
||||
command, it should be made into a libgcv routine and
|
||||
converters/other commands retargeted to use it.
|
||||
|
||||
|
||||
SHADED DISPLAYS
|
||||
---------------
|
||||
@@ -1700,13 +1626,6 @@ NEW OBJECTS
|
||||
view (i.e., a grid of primary rays), and 3) rtgl point samples
|
||||
(which is a variant of 2 but potentially view independent).
|
||||
|
||||
Considerations:
|
||||
fast dictionary with expiration by time? (eviction during writes)
|
||||
cache rate read/write / sec > 10k @ 500bytes
|
||||
remain fast with millions of entries
|
||||
immediate retrieval (consistency)
|
||||
provide for concurrent access (concurrency), perhaps via sharding (N locks)
|
||||
|
||||
* alias objects. this is an object handle in a geometry database that
|
||||
refers to another geometry database object. in effect, it
|
||||
encapsulates the idea of a symbolic reference for database objects.
|
||||
@@ -2269,81 +2188,152 @@ DOCUMENTATION
|
||||
|
||||
* add missing manual pages (tbrowder2 generated list 2013-08):
|
||||
|
||||
3dm-g
|
||||
a-d
|
||||
alias-pix
|
||||
all_sf
|
||||
anim_cascade
|
||||
anim_fly
|
||||
anim_hardtrack
|
||||
anim_keyread
|
||||
anim_lookat
|
||||
anim_offset
|
||||
anim_orient
|
||||
archer
|
||||
asc2pix
|
||||
bolt
|
||||
bombardier
|
||||
bot-bldxf
|
||||
brep_cube
|
||||
brep_simple
|
||||
brepintersect
|
||||
breplicator
|
||||
brickwall
|
||||
brlman
|
||||
burst
|
||||
bw-a
|
||||
bw-d
|
||||
bwish
|
||||
c-d
|
||||
chan_add
|
||||
check-express
|
||||
clutter
|
||||
contours
|
||||
csgbrep
|
||||
d-a
|
||||
d-bw
|
||||
d-f
|
||||
d-i
|
||||
d-u
|
||||
d2-c
|
||||
damdf
|
||||
dauto
|
||||
dauto2
|
||||
dconv
|
||||
ddisp
|
||||
dem-g
|
||||
dfft
|
||||
dmod
|
||||
double-asc
|
||||
dpeak
|
||||
dsel
|
||||
dsp_add
|
||||
dstats
|
||||
dwin
|
||||
ihist
|
||||
imod
|
||||
isst
|
||||
istats
|
||||
lowp
|
||||
pix3filter
|
||||
pixcount
|
||||
pixelswap
|
||||
pixembed
|
||||
plot3stat
|
||||
rtsrv
|
||||
smod
|
||||
umod
|
||||
ustats
|
||||
|
||||
* these are matured shape tools that get installed with simple
|
||||
usability but should still have basic docs and better names. plan
|
||||
to absorb them into ged as external plugins, but they'll still need
|
||||
docs:
|
||||
|
||||
bolt
|
||||
euclid_format
|
||||
euclid_unformat
|
||||
f-d
|
||||
f-i
|
||||
fbgammamod
|
||||
fence
|
||||
gastank
|
||||
handle
|
||||
human
|
||||
picket_fence
|
||||
window
|
||||
window_frame
|
||||
wire
|
||||
|
||||
* misc / 3rd party tools we control / bundle, but need docs if anyone
|
||||
else is to use them or contribute:
|
||||
|
||||
perplex
|
||||
re2c
|
||||
|
||||
* needs his own repo:
|
||||
|
||||
ttcp
|
||||
|
||||
* need to revisit utility of spherical mapping, used by sh_spm and
|
||||
sh_points, used for environment mapping (e.g., stars):
|
||||
|
||||
pix-spm
|
||||
spm-fb
|
||||
|
||||
* these eventually get put into gcv (hopefully not needing docs):
|
||||
|
||||
3dm-g
|
||||
dem-g
|
||||
fhor
|
||||
fix_polysolids
|
||||
g-dot
|
||||
g-euclid1
|
||||
g-jack
|
||||
g-off
|
||||
g-step
|
||||
g-voxel
|
||||
gastank
|
||||
globe
|
||||
handle
|
||||
human
|
||||
i-a
|
||||
i-d
|
||||
i-f
|
||||
ihist
|
||||
imod
|
||||
isst
|
||||
istats
|
||||
jack-g
|
||||
kurt
|
||||
lens
|
||||
lowp
|
||||
masonry
|
||||
menger
|
||||
metaball
|
||||
mkbuilding
|
||||
molecule
|
||||
nmg-sgp
|
||||
nmgmodel
|
||||
off-g
|
||||
pdb-g
|
||||
perplex
|
||||
picket_fence
|
||||
pipe
|
||||
pix-spm
|
||||
pix-yuv
|
||||
pix2g
|
||||
pix3filter
|
||||
pixcount
|
||||
pixelswap
|
||||
pixembed
|
||||
pixfields
|
||||
pixfieldsep
|
||||
pixflip-fb
|
||||
pixpaste
|
||||
plot3-dm
|
||||
plot3stat
|
||||
pyramid
|
||||
raw-g
|
||||
rawbot
|
||||
re2c
|
||||
ringworld
|
||||
room
|
||||
rtcell
|
||||
rtfrac
|
||||
rtrad
|
||||
rtsil
|
||||
rtsrv
|
||||
script-tab
|
||||
shp-g
|
||||
sketch
|
||||
smod
|
||||
sphflake
|
||||
spm-fb
|
||||
ssampview
|
||||
step-g
|
||||
surfaceintersec
|
||||
tea
|
||||
tea_nmg
|
||||
texturescale
|
||||
tgf-g
|
||||
torii
|
||||
ttcp
|
||||
tube
|
||||
u-a
|
||||
u-bw
|
||||
u-d
|
||||
u-f
|
||||
umod
|
||||
ustats
|
||||
vegetation
|
||||
wavy
|
||||
window
|
||||
window_frame
|
||||
wire
|
||||
xyz-plot3
|
||||
yuv-pix
|
||||
|
||||
* DocBook: create a DB index.xml to generate a doc listing (with
|
||||
hot links) for the html and pdf collection
|
||||
@@ -2368,8 +2358,9 @@ DOCUMENTATION
|
||||
CMake supports other generators, wouldn't hurt to detail how to
|
||||
trigger builds in them (MSVC is partially covered, make sure to
|
||||
coverage is complete - others include Eclipse, XCode once we get the
|
||||
kinks ironed out there, CodeBlocks. Ninja build tool and its
|
||||
CMake support are worth documenting too.
|
||||
kinks ironed out there, CodeBlocks. New experimental ninja build
|
||||
tool and its (also experimental) CMake support are promising -
|
||||
if/when CMake support goes mainstream, document that too.)
|
||||
|
||||
* all of the rt* tracers share common code and common options, but do
|
||||
not share common documentation. refactor documentation to use
|
||||
|
||||
@@ -10,10 +10,6 @@ while [ "$1" != "" ]
|
||||
do
|
||||
case $1
|
||||
in
|
||||
--enable-all) options="$options -DBRLCAD_BUNDLED_LIBS=ON";
|
||||
shift;;
|
||||
--disable-all) options="$options -DBRLCAD_BUNDLED_LIBS=OFF";
|
||||
shift;;
|
||||
--enable-opengl) options="$options -DBRLCAD_ENABLE_OPENGL=ON";
|
||||
shift;;
|
||||
--disable-opengl) options="$options -DBRLCAD_ENABLE_OPENGL=OFF";
|
||||
@@ -90,6 +86,10 @@ do
|
||||
shift;;
|
||||
--disable-docbook) options="$options -DBRLCAD_EXTRADOCS=OFF";
|
||||
shift;;
|
||||
--enable-all) options="$options -DBRLCAD_BUNDLED_LIBS=ON";
|
||||
shift;;
|
||||
--disable-all) options="$options -DBRLCAD_BUNDLED_LIBS=OFF";
|
||||
shift;;
|
||||
--enable-lemon) options="$options -DBRLCAD_LEMON=BUNDLED";
|
||||
shift;;
|
||||
--disable-lemon) options="$options -DBRLCAD_LEMON=SYSTEM";
|
||||
@@ -190,10 +190,6 @@ do
|
||||
shift;;
|
||||
--disable-spr) options="$options -DBRLCAD_SPR=SYSTEM";
|
||||
shift;;
|
||||
--enable-bson) options="$options -DBRLCAD_BSON=BUNDLED";
|
||||
shift;;
|
||||
--disable-bson) options="$options -DBRLCAD_BSON=SYSTEM";
|
||||
shift;;
|
||||
--enable-scl) options="$options -DBRLCAD_SC=BUNDLED";
|
||||
shift;;
|
||||
--disable-scl) options="$options -DBRLCAD_SC=SYSTEM";
|
||||
|
||||
+2
-30
@@ -33,41 +33,13 @@ macro(ADD_NIST_STEP_TARGET step_model folder)
|
||||
DISTCLEAN(${log_file})
|
||||
endmacro(ADD_NIST_STEP_TARGET step_model folder)
|
||||
|
||||
# Get our root path
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
set(bin_root "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
set(bin_root "${CMAKE_BINARY_DIR}")
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
|
||||
# The general pattern of the BRL-CAD build is to use CMAKE_CFG_INTDIR when
|
||||
# multi-configuration builds complicate the location of binaries. In this
|
||||
# case, however, we are using a generated script with a different mechanism
|
||||
# for handling this situation, and we need to update the executable paths
|
||||
# accordingly if they are configuration dependent.
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" rbin_root "${bin_root}")
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
set(rbin_root "${bin_root}")
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
|
||||
# Use the CMake executable to figure out if we need an extension
|
||||
get_filename_component(EXE_EXT "${CMAKE_COMMAND}" EXT)
|
||||
|
||||
|
||||
macro(ADD_NIST_3DM_TARGET rhino_model folder)
|
||||
set(CMD_EXEC ${rbin_root}/${BIN_DIR}/3dm-g${EXE_EXT})
|
||||
string(REGEX REPLACE "([0-9a-z]*).3dm" "\\1" rhino_model_root "${rhino_model}")
|
||||
set(output_file ${rbin_root}/${DATA_DIR}/db/${rhino_model_root}.g)
|
||||
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${rhino_model_root}.log)
|
||||
set(STDOUT_LOG "${log_file}")
|
||||
set(STDERR_LOG "${log_file}")
|
||||
set(CMD_ARGS "-o \"${output_file}\" \"${CMAKE_CURRENT_SOURCE_DIR}/${rhino_model}\"")
|
||||
configure_file(${BRLCAD_CMAKE_DIR}/builddir_cmd.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/3dm-g.cmake @ONLY)
|
||||
set(output_file ${bin_root}/${DATA_DIR}/db/${rhino_model_root}.g)
|
||||
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${rhino_model_root}.log)
|
||||
add_custom_command(
|
||||
OUTPUT ${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/3dm-g.cmake
|
||||
COMMAND 3dm-g -o ${output_file} ${CMAKE_CURRENT_SOURCE_DIR}/${rhino_model} > ${log_file} 2>&1
|
||||
DEPENDS 3dm-g ${CMAKE_CURRENT_SOURCE_DIR}/${rhino_model}
|
||||
)
|
||||
add_custom_target(${rhino_model_root}.g ALL DEPENDS ${output_file})
|
||||
|
||||
@@ -225,6 +225,7 @@ CMAKEFILES(
|
||||
README.OSCON-2014
|
||||
STARTERS
|
||||
STRATEGY
|
||||
burst
|
||||
csv_to_comgeom.txt
|
||||
implicit_constraints.txt
|
||||
pad_file.xml.in
|
||||
|
||||
@@ -29,17 +29,6 @@ familiar with the project.
|
||||
|
||||
* Implement one of the items listed on the request for enhancements tracker
|
||||
|
||||
--
|
||||
There are lots of possible non-coding tasks:
|
||||
|
||||
* Write documentation
|
||||
* Improve the website
|
||||
* Offer to help with art and design
|
||||
* Engage in discussions
|
||||
* Write design docs
|
||||
* Update roadmap
|
||||
* Answer questions, be helpful
|
||||
* Give a presentation on some topic
|
||||
|
||||
---
|
||||
There may be more tasks and ideas available in the Tasks section of
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ libXext-devel
|
||||
libXi-devel
|
||||
freetype-devel
|
||||
fontconfig-devel
|
||||
mesa-libGL-devel
|
||||
|
||||
|
||||
To determine what particular version of Redhat or Fedora you are
|
||||
using, check these files:
|
||||
|
||||
+138
-202
@@ -65,201 +65,172 @@ bolster those areas, and identifies specific actionable objectives.
|
||||
strategic areas devising measurable tasks that support the
|
||||
particular objective.
|
||||
|
||||
** PROJECT: Deploy Archer
|
||||
|
||||
** PROJECT: Deploy Archer/MGED Beta (14)
|
||||
|
||||
*** interactivity / blocking indicators - ALPHA (3)
|
||||
**** TODO multithreaded command execution (2)
|
||||
**** TODO interface busy indicator (1)
|
||||
|
||||
*** command cleanup - ALPHA (3)
|
||||
**** TODO inventory + mapping + time (1)
|
||||
**** TODO design UI / commands (2)
|
||||
**** TODO sit with users to discuss command migration (0)
|
||||
|
||||
*** feature parity - ALPHA (2)
|
||||
**** TODO review/finish edit keypointing (oed parity) (1)
|
||||
**** TODO GUI matrix editing (1)
|
||||
*** command cleanup - ALPHA+
|
||||
**** TODO inventory + mapping + time
|
||||
**** TODO design UI / commands
|
||||
**** TODO QA acceptance from users
|
||||
**** TODO announce / share / sit with users
|
||||
|
||||
*** announcements + migration plan - BETA+ (4)
|
||||
**** TODO write + publish strategy map and migration plan (1)
|
||||
**** TODO preliminary discussion with users, discuss tcl scripts (0)
|
||||
**** TODO archer manual page (1)
|
||||
**** TODO install basic version of new website (1)
|
||||
**** TODO sit down review with users (1)
|
||||
|
||||
*** searchable docs - ALPHA (2)
|
||||
**** TODO command line searching of doc content, apropos (2)
|
||||
*** interactivity / blocking indicators - ALPHA
|
||||
**** TODO multithreaded command execution
|
||||
**** TODO interface busy indicator
|
||||
**** TODO drawing indicator
|
||||
|
||||
*** feature parity - ALPHA
|
||||
**** TODO classic console mode
|
||||
**** TODO review/finish edit keypointing (oed parity)
|
||||
**** TODO summarize features
|
||||
**** TODO create mapping from old to new
|
||||
**** TODO GUI matrix editing
|
||||
**** TODO reverse tempfile
|
||||
**** TODO query ray control GUI
|
||||
|
||||
*** undo - BETA
|
||||
**** TODO implement libbu filesystem info
|
||||
**** TODO re-enable undo with fs awareness
|
||||
|
||||
*** bug reporting / feedback / metrics - BETA
|
||||
**** TODO reliable backtrace
|
||||
**** TODO hook/enable bombardier
|
||||
**** TODO in-app feedback dialog
|
||||
**** TODO track metrics (archer commands, tips, docs)
|
||||
|
||||
*** QA acceptance - BETA
|
||||
**** TODO run regression w/ archer
|
||||
**** TODO sit down reviews (discuss scripts)
|
||||
**** TODO define acceptance tasks
|
||||
**** TODO run with procedural web scripts
|
||||
|
||||
*** announcements + migration plan - BETA+
|
||||
**** TODO write + publish strategy map
|
||||
**** TODO write + publish migration plan
|
||||
**** TODO review + update tutorials (docs)
|
||||
**** TODO create + give presentation
|
||||
**** TODO install new website (basic version)
|
||||
**** TODO discussion with core stakeholders
|
||||
|
||||
*** searchable docs - FINAL
|
||||
**** TODO command line searching of doc content
|
||||
**** TODO apropos reading from docbook
|
||||
**** TODO web publishing + searching of docs
|
||||
|
||||
|
||||
** PROJECT: Deploy Merged Archer/MGED Final (16)
|
||||
** PROJECT: Concentration
|
||||
|
||||
*** usability parity - BETA (4)
|
||||
**** TODO classic console mode (1)
|
||||
**** TODO map from old to new, publish summary (1)
|
||||
**** TODO reverse .g tempfile backup, edit live (1)
|
||||
**** TODO graphical query ray (1)
|
||||
*** revisit scope (vision, mission)
|
||||
**** TODO communicate intent and updates
|
||||
**** TODO develop high-level project roadmap
|
||||
**** TODO connect features to markets
|
||||
|
||||
*** undo - BETA (2)
|
||||
**** TODO implement libbu filesystem info (1)
|
||||
**** TODO re-enable undo with fs awareness (1)
|
||||
*** develop command roadmap
|
||||
**** TODO inventory of command-line commands, decide keep/refactor/kill
|
||||
**** TODO communicate command-line changes
|
||||
**** TODO take inventory of ged commands, decide keep/refactor/kill
|
||||
**** TODO communicate ged command changes
|
||||
**** TODO assess and mitigate deployment risks
|
||||
|
||||
*** bug reporting / feedback / metrics - BETA (3)
|
||||
**** TODO reliable backtrace (1)
|
||||
**** TODO hook/enable bombardier (1)
|
||||
**** TODO track metrics (archer commands, tips, docs) (1)
|
||||
|
||||
*** QA acceptance - BETA (3)
|
||||
**** TODO define acceptance tasks (1)
|
||||
**** TODO run regression w/ archer (1)
|
||||
**** TODO make wiki procedural web scripts work (1)
|
||||
|
||||
*** announcements + migration plan - BETA+ (3)
|
||||
**** TODO review + update tutorials and docs (2)
|
||||
**** TODO create + give presentation (1)
|
||||
|
||||
*** searchable docs - FINAL (1)
|
||||
**** TODO web publishing + searching of docs (1)
|
||||
*** unify docs
|
||||
**** TODO convert/integrate/kill html+troff docs
|
||||
**** TODO consolidate docs, one guide per interface
|
||||
**** TODO stub new docs where missing
|
||||
|
||||
|
||||
** PROJECT: Distilling BRL-CAD (11)
|
||||
** PROJECT: Webulgation
|
||||
|
||||
*** revisit scope (vision, mission) (3)
|
||||
**** TODO communicate intent and updates (1)
|
||||
**** TODO develop high-level project roadmap (1)
|
||||
**** TODO connect features to markets (1)
|
||||
FIXME these need to be sorted and ranked
|
||||
|
||||
*** develop command roadmap (4)
|
||||
**** TODO inventory of command-line commands, decide keep/refactor/kill (1)
|
||||
**** TODO communicate command-line changes (0)
|
||||
**** TODO develop command categorization (1)
|
||||
**** TODO take inventory of ged commands, decide keep/refactor/kill (1)
|
||||
**** TODO communicate ged command changes (0)
|
||||
**** TODO assess and mitigate deployment risks (1)
|
||||
*** publish docbook docs
|
||||
**** TODO instantiate / set up sofat's doc interface
|
||||
**** TODO design pdf stylesheet
|
||||
**** TODO integrate docs onto website (html+pdf)
|
||||
|
||||
*** integrate docs (4)
|
||||
**** TODO plan what to do with html+troff docs (0)
|
||||
**** TODO stub new docs where missing (1)
|
||||
**** TODO consolidate docs, one guide per interface (2)
|
||||
**** TODO kill obsolete docs (0)
|
||||
**** TODO migrate e-mail and release notes to web (1)
|
||||
*** online doc editing
|
||||
**** TODO review sofat edit interface
|
||||
**** TODO apply website theme to edit interface
|
||||
|
||||
*** publish use cases
|
||||
**** TODO post 3+ customer profiles
|
||||
**** TODO post top-10 feature highlights
|
||||
**** TODO identify alternatives and their highlight mappings
|
||||
**** TODO post comparison table with 2+ alternatives
|
||||
|
||||
*** set up developer corner
|
||||
**** TODO publish doxygen output to website
|
||||
**** TODO update doxygen stylesheet to fit theme
|
||||
**** TODO ensure buildbot is setup and running handsfree
|
||||
**** TODO update buildbot stylesheet to fit theme
|
||||
**** TODO post nightly builds
|
||||
**** TODO set up cron job to maintain CI and doc updates
|
||||
**** TODO announce dev corner to brlcad-devel/brlcad-news
|
||||
|
||||
*** improve website usability
|
||||
**** TODO set up platform-detected downloads on main page
|
||||
**** TODO publish project vitality/stats (ohloh integration)
|
||||
|
||||
|
||||
** PROJECT: Website Renovation (10)
|
||||
** PROJECT: Deploy GCV
|
||||
|
||||
*** improve website usability (1)
|
||||
**** TODO set up platform-detected downloads on main page (0)
|
||||
**** TODO publish project vitality/stats (openhub integration) (0)
|
||||
**** TODO restore search interface (1)
|
||||
*** 3dm "round-tripping"
|
||||
**** TODO integrate existing importer
|
||||
**** TODO NURBS export support
|
||||
**** TODO document entity support
|
||||
|
||||
*** publish docbook docs (3)
|
||||
**** TODO instantiate / set up sofat's doc interface (1)
|
||||
**** TODO design pdf stylesheet (1)
|
||||
**** TODO integrate docs onto website (html+pdf) (1)
|
||||
*** documentation
|
||||
**** TODO convert jon's write-up to docbook
|
||||
**** TODO integrate jon's plugin examples
|
||||
**** TODO write and publish plugin API policy
|
||||
**** TODO write and publish GCV feature profile on website
|
||||
|
||||
*** publish use cases (3)
|
||||
**** TODO post 3+ customer profiles (1)
|
||||
**** TODO post top-10 feature highlights (1)
|
||||
**** TODO identify alternatives and their highlight mappings (1)
|
||||
**** TODO post comparison table with 2+ alternatives (0)
|
||||
*** CLI usability
|
||||
**** TODO design usage / synopsis
|
||||
**** TODO provide logging/debugging interface
|
||||
|
||||
*** set up developer corner (3)
|
||||
**** TODO ensure buildbot is setup and running handsfree (1)
|
||||
**** TODO update buildbot stylesheet to fit theme (0)
|
||||
**** TODO post nightly builds (0)
|
||||
**** TODO set up cron job to maintain CI and doc updates (1)
|
||||
**** TODO announce dev corner to brlcad-devel/brlcad-news (0)
|
||||
**** TODO buildbot <-> cdash/lcov/coverity/gccfarm/swamp integration (1)
|
||||
*** robust deployment
|
||||
**** TODO convert tlib via automated testing
|
||||
**** TODO automate extraction of sources from checkout
|
||||
**** TODO integrate gcv into mged/archer
|
||||
**** TODO troubleshoot JASP export memory issue
|
||||
**** TODO integrate bot_dump into gcv
|
||||
|
||||
|
||||
** PROJECT: Deploy GCV (9)
|
||||
|
||||
*** 3dm "round-tripping" (2)
|
||||
**** TODO integrate existing importer (0)
|
||||
**** TODO NURBS export support (1)
|
||||
**** TODO document entity support (1)
|
||||
** PROJECT: Performant Pipeline
|
||||
*** bundled ray dispatch
|
||||
**** TODO define ray bundling API
|
||||
**** TODO audit librt API for performance
|
||||
**** TODO convert RT to new bundled API
|
||||
|
||||
*** documentation (3)
|
||||
**** TODO convert jon's write-up to docbook (0)
|
||||
**** TODO integrate jon's plugin examples (1)
|
||||
**** TODO write and publish plugin API policy (1)
|
||||
**** TODO write and publish GCV feature profile on website (1)
|
||||
|
||||
*** CLI usability (2)
|
||||
**** TODO design usage / synopsis (1)
|
||||
**** TODO provide logging/debugging interface (0)
|
||||
**** TODO integrate bot_dump into gcv (1)
|
||||
|
||||
*** robust deployment (2)
|
||||
**** TODO convert tlib via automated testing (1)
|
||||
**** TODO automate extraction of sources from checkout (0)
|
||||
**** TODO integrate gcv into mged/archer (0)
|
||||
**** TODO troubleshoot JASP export memory issue (1)
|
||||
|
||||
|
||||
** PROJECT: Performant Pipeline (15)
|
||||
|
||||
*** coherent Boolean evaluation (3)
|
||||
**** TODO preliminary OpenCL conversion (1)
|
||||
**** TODO eliminate branching (1)
|
||||
**** TODO V&V with specific test cases (1)
|
||||
|
||||
*** audit ray dispatching (3)
|
||||
**** TODO define ray bundling API (1)
|
||||
**** TODO audit librt ray API, consolidate (1)
|
||||
|
||||
*** implement bundled ray dispatch (2)
|
||||
**** TODO integrate Costa's GSoC work (1)
|
||||
**** TODO propagate bundle through spatial partition (1)
|
||||
**** TODO convert rt* to new bundled API (1)
|
||||
|
||||
*** on-demand NURBS tree-build (4)
|
||||
**** TODO formulate a design / approach (1)
|
||||
**** TODO dynamic tree build with minimal malloc (2)
|
||||
**** TODO profile and validate results (1)
|
||||
|
||||
*** coherent NURBS evaluation (1)
|
||||
**** TODO review 2006 paper (0)
|
||||
**** TODO convert openNURBS surface evaluation to OpenCL (1)
|
||||
|
||||
*** performant raytrace image display (2)
|
||||
**** TODO optimize libdb/libfb to remove bottleneck (1)
|
||||
**** TODO update archer for interactive tracing display (1)
|
||||
|
||||
|
||||
** PROJECT: Raytrace Prep Caching (10)
|
||||
|
||||
*** implement LIBBU data caching (3)
|
||||
**** TODO document libbu data caching API (1)
|
||||
**** TODO create data caching test cases (1)
|
||||
**** TODO implement libbu data caching (1)
|
||||
|
||||
*** implment LIBRT object caching (4)
|
||||
**** TODO serialize BoT prep data to cache (1)
|
||||
**** TODO serialize NURBS prep data to cache (1)
|
||||
**** TODO serialize tess/plot data to cache (2)
|
||||
|
||||
*** update tools to utilize the cache (3)
|
||||
**** TODO update rt* to use prep cache (1)
|
||||
**** TODO update mged/archer to use tess/plot cache (1)
|
||||
*** raytrace prep caching
|
||||
**** TODO implement libbu data caching API (3)
|
||||
**** TODO implement librt object prep caching (5)
|
||||
**** TODO update tools to utilize the prep cache (1+2)
|
||||
**** TODO document the prep cache interface (1)
|
||||
|
||||
*** on-demand NURBS tree-building
|
||||
**** TODO dynamic tree build with minimal malloc
|
||||
**** TODO profile and validate results
|
||||
**** TODO formulate a design / approach
|
||||
|
||||
** PROJECT: Progressive Geometry Display (11)
|
||||
*** coherent Boolean evaluation
|
||||
**** TODO OpenCL conversion
|
||||
**** TODO handle bundles of ray, eliminate branching
|
||||
**** TODO review and integrate Costa's GSoC work
|
||||
**** TODO V&V with specific test cases
|
||||
|
||||
*** asynchronous geometry display (4)
|
||||
**** TODO modify display loop to run in separate thread (2)
|
||||
**** TODO update draw command to dispatch (2)
|
||||
*** coherent NURBS evaluation
|
||||
**** TODO review 2006 paper
|
||||
**** TODO convert openNURBS surface evaluation to OpenCL
|
||||
|
||||
*** ray trace display manager (4)
|
||||
**** TODO review rtgl code (1)
|
||||
**** TODO design incremental loading architecture (1)
|
||||
**** TODO implement incremental ray tracing (2)
|
||||
*** performant raytrace image display
|
||||
**** TODO optimize libdb/libfb to remove bottleneck
|
||||
**** TODO update archer for interactive tracing display
|
||||
|
||||
*** point cloud hashing (3)
|
||||
**** TODO design LoD point cloud storage approach (1)
|
||||
**** TODO calculate LoD point cloud utility metric (1)
|
||||
**** TODO implement LoD point cloud loading (3)
|
||||
|
||||
** PROJECT: Merge Archer/MGED
|
||||
|
||||
*** do more good stuff
|
||||
|
||||
|
||||
** TEMPLATE: Project Title
|
||||
@@ -283,41 +254,6 @@ bolster those areas, and identifies specific actionable objectives.
|
||||
0 for tasks less than 2 days.
|
||||
|
||||
|
||||
* Strategic Strengths
|
||||
** project
|
||||
*** open source
|
||||
*** cross-platform
|
||||
*** free software
|
||||
*** 30-years of development
|
||||
*** massive investment
|
||||
*** extensive API
|
||||
*** extensive documentation
|
||||
** code
|
||||
*** extensively modular
|
||||
*** scalability
|
||||
*** embeddable
|
||||
*** efficient workflow
|
||||
*** flexible workflow
|
||||
*** DoD-accreddited
|
||||
*** integrated into MUVES, AJEM, COVART
|
||||
** modeling
|
||||
*** hybrid representation system
|
||||
*** wide variety of supported entities
|
||||
*** csg, nurbs, triangles, volumes, point clouds
|
||||
*** scriptable geometry
|
||||
*** procedural geometry
|
||||
*** geometry conversion
|
||||
*** geometry editing
|
||||
** analysis
|
||||
*** geometry v&v
|
||||
*** geometry preparation
|
||||
*** joint articulation system
|
||||
*** physics simulation system
|
||||
*** ray tracing performance
|
||||
*** analytic ray tracing
|
||||
*** solid ray tracing
|
||||
*** geometry visualization
|
||||
|
||||
# Local Variables:
|
||||
# mode: org
|
||||
# End:
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
tbl() {
|
||||
case $# in
|
||||
0) rsh vmb.brl.mil 'PATH=/usr/5bin:$PATH export PATH; tbl';;
|
||||
*) cat $1 | rsh vmb.brl.mil 'PATH=/usr/5bin:$PATH export PATH; tbl';;
|
||||
esac;
|
||||
}
|
||||
typeset()
|
||||
{
|
||||
case $# in
|
||||
0)
|
||||
rsh vmb.brl.mil 'PATH=/usr/5bin:$PATH export PATH; troff -mm -Ti300 | dimp -t | ipr -J -Pim124';;
|
||||
*) cat $1 |
|
||||
rsh vmb.brl.mil 'PATH=/usr/5bin:$PATH export PATH; troff -mm -Ti300 | dimp -t | ipr -J -Pim124';;
|
||||
esac;
|
||||
}
|
||||
laser()
|
||||
{
|
||||
OPTS=
|
||||
case $# in
|
||||
0) ;;
|
||||
*) case $1 in
|
||||
-h) OPTS=$1; shift;;
|
||||
esac
|
||||
case $# in
|
||||
1) FILE=$1;;
|
||||
esac;;
|
||||
esac
|
||||
pix-bw -ntsc ${FILE} | bw-imp ${OPTS} | rsh vmb.brl.mil 'PATH=/usr/5bin:$PATH export PATH; ipr -J -Pim124'
|
||||
unset OPTS FILE;
|
||||
}
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
#OPTS='-V'
|
||||
OPTS='-b'
|
||||
|
||||
groff $OPTS -mm -Tps burst.mm > burst.ps
|
||||
ps2pdf burst.ps
|
||||
|
||||
#groff $OPTS -mm
|
||||
|
||||
#groff -mm -Thtml burst.mm > burst.html
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
|
||||
tables="\
|
||||
bpl \
|
||||
cmap \
|
||||
commands \
|
||||
fb \
|
||||
hmkeys \
|
||||
ids \
|
||||
overlap \
|
||||
plot \
|
||||
screen \
|
||||
scrollmenu \
|
||||
shotlines \
|
||||
submenu \
|
||||
topmenu\
|
||||
"
|
||||
|
||||
for table in $tables ; do
|
||||
tbl $table.tbl > $table.mm
|
||||
done
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# these macros (mm files) are generated by tclsh script "Make-tables.sh"
|
||||
TABLE_MM := bpl.mm
|
||||
TABLE_MM += cmap.mm
|
||||
TABLE_MM += commands.mm
|
||||
TABLE_MM += fb.mm
|
||||
TABLE_MM += hmkeys.mm
|
||||
TABLE_MM += ids.mm
|
||||
TABLE_MM += overlap.mm
|
||||
TABLE_MM += plot.mm
|
||||
TABLE_MM += screen.mm
|
||||
TABLE_MM += scrollmenu.mm
|
||||
TABLE_MM += shotlines.mm
|
||||
TABLE_MM += submenu.mm
|
||||
TABLE_MM += topmenu.mm
|
||||
|
||||
PRODS := burst.ps burst.pdf burst.html
|
||||
|
||||
docs:
|
||||
@echo "Making burst tables for groff..."
|
||||
./Make-tables.sh
|
||||
@echo "Making burst docs..."
|
||||
./Make-docs.sh
|
||||
|
||||
clean: distclean
|
||||
|
||||
distclean:
|
||||
-rm $(TABLE_MM) $(PRODS) *~ t tt
|
||||
@@ -0,0 +1,64 @@
|
||||
Documentation for the BRL-CAD program 'burst'.
|
||||
|
||||
Debian requires packages groff and groff-base.
|
||||
|
||||
The original source file ('burst.mm') has been modified slightly to
|
||||
ensure correct handling by Eric Raymond's doclifter
|
||||
(http://www.catb.org/~esr/doclifter/). From an e-mail from Eric:
|
||||
|
||||
from: Eric S. Raymond <esr@thyrsus.com>
|
||||
reply-to: esr@thyrsus.com
|
||||
to: Tom Browder <tom.browder@gmail.com>
|
||||
date: Tue, Aug 20, 2013 at 8:48 AM
|
||||
subject: Re: doclifter (master) failing on troff mm source
|
||||
mailed-by: thyrsus.com
|
||||
|
||||
<quote>
|
||||
Tom Browder <tom.browder@gmail.com>:
|
||||
> I have checked all macros and they are valid mm macros so I can't
|
||||
> figure out why doclifter is failing. I can send you the whole source
|
||||
> zipped if you're interested.
|
||||
|
||||
What you sent is sufficient. The problem is that your mm file
|
||||
contains none of the three trigger macros doclifter is looking for as
|
||||
a way to recognize that it's dealing with mm - .MT, .SA, or .COVER.
|
||||
The relevant table looks like this:
|
||||
|
||||
# This is how we autodetect the right macro set:
|
||||
|
||||
interpreter_dispatch = {
|
||||
"pp": MeInterpreter,
|
||||
"Dt": MdocInterpreter,
|
||||
"Dd": MdocInterpreter,
|
||||
"Nm": MdocInterpreter,
|
||||
"AU": MsInterpreter,
|
||||
"NH": MsInterpreter,
|
||||
"TH": ManInterpreter,
|
||||
"MT": MmInterpreter,
|
||||
"SA": MmInterpreter,
|
||||
"COVER": MmInterpreter,
|
||||
# Extension macro sets
|
||||
"supplemental macros used in Tcl/Tk": TkManInterpreter,
|
||||
"BS": TkManInterpreter,
|
||||
"the F register is turned on": Pod2ManInterpreter,
|
||||
"ZN": XManInterpreter,
|
||||
"Pn": XManInterpreter,
|
||||
"ny0": XManInterpreter,
|
||||
"reStructuredText": reStructuredTextInterpreter,
|
||||
"reStructeredText": reStructuredTextInterpreter,
|
||||
"DocBook XSL Stylesheets" : DocBookInterpreter,
|
||||
"pdfdest" : FoojzsInterpreter,
|
||||
"H0": ASTInterpreter,
|
||||
# These are all of the supported Mwww tags
|
||||
"URL": MwwwInterpreter,
|
||||
"FTP": MwwwInterpreter,
|
||||
"MTO": MwwwInterpreter,
|
||||
"PIMG": MwwwInterpreter,
|
||||
"IMG": MwwwInterpreter,
|
||||
"TAG": MwwwInterpreter,
|
||||
}
|
||||
|
||||
Inserting a dummy .MT 0 call should fix your problem.
|
||||
</quote>
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
.TL
|
||||
``burst''; Air Force Vulnerability Analyses from BRL-CAD Models
|
||||
.AF "U. S. A. Ballistic Research Laboratory"
|
||||
.ds ZZ Aberdeen Proving Ground
|
||||
.AU "Gary S.\& Moss" GSM ZZ
|
||||
.AS
|
||||
.so introduction.mm
|
||||
'\"The presentation will not dwell on the details of usage as much as the paper
|
||||
'\"but will focus on the available features of the \*(b) program
|
||||
'\"as well as its flexibility in supporting analyses of varied threat
|
||||
'\"mechanisms on \*(m) targets.
|
||||
.AE
|
||||
.MT 4
|
||||
.rm ZZ
|
||||
.SA 1
|
||||
@@ -0,0 +1,37 @@
|
||||
.TS
|
||||
allbox,center,tab(@);
|
||||
lb lb lb
|
||||
_ _ _
|
||||
l l l.
|
||||
record description@field format@field description
|
||||
run header@'1'@record number 1
|
||||
@1x,f9.4@attack azimuth (degrees)
|
||||
@1x,f8.4@attack elevation (degrees)
|
||||
@1x,f5.2@burst distance
|
||||
@1x,f10.2@projected area associated with burst point
|
||||
@1x,6a@units (mm,cm,inches,feet,meters)
|
||||
@1x,f9.6@ray solid angle (steradians)
|
||||
shotline header@'2'@record number 2
|
||||
@1x,f8.3@Y' coordinate of shotline
|
||||
@1x,f8.3@Z' coordinate of shotline
|
||||
shotline intersections@'3'@record number 3
|
||||
@1x,f8.2@X' coordinate of component intersection
|
||||
@1x,f8.2@line-of-sight thickness of component
|
||||
@1x,i4@component code number
|
||||
@1x,i2@space code
|
||||
@1x,f7.3@sine of fallback angle of exit normal
|
||||
@1x,f7.2@rotation angle of exit normal (degrees)
|
||||
@1x,f7.3@cosine of obliquity angle at entry
|
||||
@1x,a1@burst flag ('1' for yes, '0' for no)
|
||||
burst ray header@'4'@record number 4
|
||||
@1x,f8.3@azimuth angle WRT shotline (radians)
|
||||
@1x,f8.3@sine of elevation angle WRT shotline
|
||||
@1x,i6@sequential ray number for this burst point
|
||||
burst ray intersections@'5'@record number 5
|
||||
@1x,f10.3@distance to first contact with component
|
||||
@1x,f9.3@line-of-sight thickness of component
|
||||
@1x,f9.3@normal thickness of component
|
||||
@1x,i4@space code
|
||||
@1x,i4@component code number
|
||||
@1x,f6.3@cosine of obliquity angle at entry
|
||||
.TE
|
||||
@@ -0,0 +1,995 @@
|
||||
.\" ASI Note: PP was changed to P in this file; CS was commented out
|
||||
.\" Note the following line was added per Eric Raymond's advice for
|
||||
.\" use by doclifter:
|
||||
.MT 0
|
||||
.PH ""
|
||||
.PF "''\\\\nP''"
|
||||
.so defs.mm
|
||||
.so abstract.mm
|
||||
.so macros.mm
|
||||
.H 1 "User Interface"
|
||||
.H 2 "Program Invocation"
|
||||
In the examples below,
|
||||
the `$' symbol represents the \*(U)
|
||||
shell prompt.
|
||||
The general usage for the \*(b) program is as follows:
|
||||
.Ex "burst [-b]\fR"
|
||||
.P
|
||||
When \*(b) is used in the default mode,
|
||||
a full-screen, interactive, menu-driven interface is provided:
|
||||
.Ex burst
|
||||
In the interactive mode,
|
||||
commands are formatted by the menu system (see \fBHierarchical Menus\fR).
|
||||
The optional
|
||||
.I -b\^
|
||||
argument will suppress the full-screen terminal display in favor of a
|
||||
batch-oriented interface;
|
||||
when coupled with \*(U) file redirection and background processing,
|
||||
the user can submit the job and go on to other tasks.
|
||||
.Ex "burst \|\-b \|< \|input_file \|&"
|
||||
The user will typically want to redirect any diagnostics to a log file
|
||||
(see \fBError Log\fR).
|
||||
In either batch or interactive mode,
|
||||
the program will read commands (see \fBCommand Input\fR) from the standard
|
||||
input until an end of file is encountered.
|
||||
In batch mode,
|
||||
the program will exit after the last command is processed,
|
||||
but when run interactively the menu system will take over after the last
|
||||
command.
|
||||
The user must \fIquit\fR the program by exiting the top-level menu
|
||||
(see Table 2).
|
||||
It is recommended that the reader begin by running the \*(b)
|
||||
program interactively.
|
||||
The hierarchical menu system generates key word commands for the user by
|
||||
prompting him to make choices or enter values without prior knowledge of
|
||||
the commands and their syntax.
|
||||
As commands are generated,
|
||||
they are printed in the scrolling region so that the user can learn
|
||||
the syntax of the alternative mode of input without affecting his productivity.
|
||||
The more advanced user can circumvent the menu system by using a
|
||||
text editor to prepare input files.
|
||||
.sp
|
||||
.H 2 "Command Input"
|
||||
All commands to \*(b) are composed of one or more words connected by hyphens
|
||||
and each command may require one or more arguments that must be separated by
|
||||
either spaces or tabs.
|
||||
A line that begins with the `#' symbol is considered a comment and will be
|
||||
ignored.
|
||||
Each command must be on a separate line and may be supplied to the \*(b)
|
||||
program's standard input (i.e. using \*(U)
|
||||
.Ud sh 1
|
||||
file redirection) or can be generated from the hierarchical menus.
|
||||
In Table 1 below is a brief description of these commands; \fIflag\fR
|
||||
arguments have \fIyes\fR or \fIno\fR values, an \fIangle\fR is expressed in
|
||||
degrees as a floating-point quantity,
|
||||
\fIdistances\fR and coordinates such as \fIX, Y, Z, left, right\fR, etc.
|
||||
are also floating-point numbers,
|
||||
and \fIcount\fR represents an integer.
|
||||
Square brackets delimit optional arguments.
|
||||
For a detailed description of each command,
|
||||
refer to sections 2 through 7.
|
||||
.DF
|
||||
.sp
|
||||
.TB "Key Word Commands"
|
||||
.so commands.mm
|
||||
.sp
|
||||
.DE
|
||||
.H 2 "Screen Layout"
|
||||
In interactive mode,
|
||||
the screen is divided into sections of one or more rows (lines) of text.
|
||||
.DF
|
||||
.so screen.mm
|
||||
.FG "Screen Layout"
|
||||
.sp
|
||||
.DE
|
||||
The top line,
|
||||
referred to as line 1,
|
||||
is reserved for
|
||||
CPU
|
||||
usage statistics.
|
||||
Starting on line 2,
|
||||
the hierarchical menu region spans 12 lines of the screen.
|
||||
Below the menu region is a line used for user input related errors and
|
||||
help messages that are generated by typing an `h' (see Table 2).
|
||||
Below that is a line used to prompt the user for input and to inform him
|
||||
of ongoing processing.
|
||||
The next line contains the program name and version number,
|
||||
and is intended as a divider between the scrolling window below it and the
|
||||
non-scrolling portion of the screen.
|
||||
Once ray tracing has begun,
|
||||
grid index ranges will appear inside square brackets to the right of the
|
||||
version number.
|
||||
The first number is the current horizontal index,
|
||||
and this is separated by a colon from the right-most index for the grid.
|
||||
After the comma,
|
||||
is the current vertical index,
|
||||
followed by the top-most index for the grid.
|
||||
As ray tracing commences,
|
||||
the current grid indices will reflect the current shotline being calculated
|
||||
as the grid is traversed in a left-to-right,
|
||||
bottom-to-top fashion.
|
||||
The scrolling window region takes up the remainder of the screen for the
|
||||
display of processed commands and processing-related errors (i.e. from the
|
||||
ray tracer).
|
||||
Figure 1 shows what the various sections of the screen are used for,
|
||||
however in practice,
|
||||
the status information,
|
||||
help message,
|
||||
and prompt would not be displayed concurrently.
|
||||
The screen-oriented interface is terminal independent;
|
||||
it doesn't use graphics per se
|
||||
but uses the terminal capabilities information database to control the
|
||||
manipulation of text characters.
|
||||
.sp
|
||||
.H 2 "Hierarchical Menus"
|
||||
Table 2 shows the key strokes used to manipulate the menus.
|
||||
.DF
|
||||
.sp
|
||||
.TB "Hierarchical Menu Commands"
|
||||
.so hmkeys.mm
|
||||
.sp
|
||||
.DE
|
||||
The top-level menu looks like Figure 2.
|
||||
.DF
|
||||
.so topmenu.mm
|
||||
.FG "Top-Level Hierarchical Menu"
|
||||
.sp
|
||||
.DE
|
||||
Note that the \fIcurrent\fR entry will be highlighted.
|
||||
The `v' symbols at the bottom corners of the menu show that
|
||||
there are more entries below.
|
||||
Attempting to move the cursor past the bottom entry will cause the
|
||||
menu to scroll upwards as illustrated in Figure 3.
|
||||
.DF
|
||||
.so scrollmenu.mm
|
||||
.FG "Scrolled Menu"
|
||||
.sp
|
||||
.DE
|
||||
Note the `^' symbols at the top corners of the menu.
|
||||
These signify that there are now hidden entries above that can be
|
||||
scrolled down by advancing the cursor upwards past the top visible
|
||||
entry.
|
||||
If no scrolling is possible,
|
||||
that is,
|
||||
if no further entries exist,
|
||||
a `+' symbol will mark the corner of the menu.
|
||||
If a menu item is selected that has a sub-menu,
|
||||
the sub-menu will be drawn to the right of its parent menu as shown
|
||||
in Figure 4.
|
||||
.DF
|
||||
.so submenu.mm
|
||||
.FG "Sub-Menu Display"
|
||||
.sp
|
||||
.DE
|
||||
The menu system \fIremembers\fR the last item selected in a given
|
||||
menu;
|
||||
entering a menu that has been used before will cause
|
||||
the \fIcurrent\fR item to be the same as it was when that menu was last exited.
|
||||
If a menu has never been used,
|
||||
the top item will initially be \fIcurrent\fR.
|
||||
.H 2 "Scrolling Region"
|
||||
When running the \*(b) program interactively,
|
||||
all diagnostic output is, by default, printed in a scrolling text window
|
||||
at the bottom of the display.
|
||||
If the batch option (\fI\-b\fR) is used,
|
||||
these diagnostics will be printed on the standard error output of the
|
||||
program.
|
||||
If there is enough output the user may find it difficult
|
||||
to read it all before it scrolls out of sight.
|
||||
Also, the user may wish to save these diagnostics for later reference;
|
||||
overlap diagnostics from the ray tracer are useful in fixing errors in
|
||||
the geometry of the target description.
|
||||
The \*(b) program has a command called
|
||||
.Co error-file
|
||||
that will divert this output to a file (see \fBError Log\fR).
|
||||
Figure 5 shows three such overlap diagnostics.
|
||||
.DS
|
||||
.sp
|
||||
.so overlap.mm
|
||||
.FG "Overlap Diagnostics"
|
||||
.sp
|
||||
.DE
|
||||
The full path name of both regions is printed, the zero enclosed in double
|
||||
curly brackets is intended to discriminate between \fIinstances\fR\*F.
|
||||
.FS
|
||||
An \fIinstance\fR is a type of group in the \*(m) data base that has
|
||||
a \fIprototype\fR object as a member.
|
||||
Several \fIinstances\fR may reference the same \fIprototype\fR
|
||||
yet have different transformation matrices.
|
||||
Although these objects represent distinct geometric entities,
|
||||
they share the same path name,
|
||||
therefore the additional discriminant is necessary.
|
||||
.FE
|
||||
Theoretically,
|
||||
\fIisol\fR and \fIosol\fR are the names of the starting and ending solids
|
||||
associated with the boolean operations on the overlapping partition.
|
||||
In practice,
|
||||
these solid names are typically not helpful in diagnosing the problem,
|
||||
but the region names should be sufficient.
|
||||
The \fIdepth\fR is the line-of-sight thickness of the overlapping partition
|
||||
in millimeters.
|
||||
In parentheses,
|
||||
are printed the target coordinates of the intersection of the ray
|
||||
with the overlap.
|
||||
The \fIx-2\fR and \fIy1\fR reveal that the grid indices of the shotline are
|
||||
\fI-2, 1\fR; this means that the shotline was 2 cells to the left,
|
||||
and one cell above the grid origin.
|
||||
If \fIlvl\fR (meaning ray tracing recursion level) is \fIzero\fR,
|
||||
then the overlap resulted from a shotline,
|
||||
but if it is \fIone\fR,
|
||||
it could represent either a burst ray intersection or a probe to
|
||||
calculate the normal thickness of a component intersected by the shotline.
|
||||
The real purpose of the ray is stated last.
|
||||
.H 1 "Executing a Run"
|
||||
.Cs "/execute"
|
||||
The \*(b) program is designed to allow many options to be configured before
|
||||
any outputs are calculated.
|
||||
Unless otherwise stated in the individual command descriptions in this report,
|
||||
a given command will nullify any previous occurrence of the same directive
|
||||
until an
|
||||
.Co execute
|
||||
command is given.
|
||||
For instance, the command
|
||||
.Co "target-file"
|
||||
\ \fItank1\fR followed by
|
||||
.Co "target-file"
|
||||
\ \fItank2\fR will nullify the reference to \fItank1\fR.
|
||||
Once the input parameters are specified,
|
||||
the
|
||||
.Co execute
|
||||
command will start a \fIrun\fR.
|
||||
Many \fIruns\fR may occur during an instance of the \*(b) program.
|
||||
One such instance is referred to as a \fIsession\fR.
|
||||
Below are descriptions of commands for configuring the behavior of the
|
||||
\*(b) program.
|
||||
.Ce
|
||||
.H 1 "User Preferences"
|
||||
.H 2 "Units of Measure"
|
||||
.Cs /units
|
||||
The
|
||||
.Co units
|
||||
command will set the linear units for input and output.
|
||||
This command should be used before any scalar quantities such as coordinates,
|
||||
distances,
|
||||
or sizes are input.
|
||||
The units may be changed to accommodate input files of differing units,
|
||||
but the output from a particular run will reflect whatever the units were
|
||||
set to when the
|
||||
.Co execute
|
||||
command was given.
|
||||
One argument is expected out of the following list and must be spelled
|
||||
correctly:
|
||||
\fImillimeters\fR,
|
||||
\fIcentimeters\fR,
|
||||
\fImeters\fR,
|
||||
\fIinches\fR and \fIfeet\fR.
|
||||
The default units are \fImillimeters\fR.
|
||||
Angles are always expressed in degrees, not radians.
|
||||
.Ce
|
||||
.H 2 "Region Overlap Reporting"
|
||||
.Cs "/preferences/report-overlaps"
|
||||
It is considered an error if two \fIregions\fR in an \*(m) file occupy
|
||||
the same space; we call this an \fIoverlap\fR.
|
||||
The ray tracing library (\*(l)) will report \fIoverlapping regions\fR that are
|
||||
intersected by shotlines or burst rays to the \*(b) application and
|
||||
the program will,
|
||||
by default,
|
||||
print out any that have a line of sight thickness of at least 0.25 millimeters
|
||||
(see \fBError Log\fR).
|
||||
Although a target may only have several \fIoverlaps\fR,
|
||||
an error will be reported for each ray that intersects one of them,
|
||||
so the messages will typically be repetitious.
|
||||
Although these diagnostics are important for fixing problems in the geometric
|
||||
description of the target,
|
||||
the user may wish to proceed with a production run and the printing of these
|
||||
errors can slow the execution time considerably.
|
||||
A \fIyes\fR or \fIno\fR argument to this command will turn the diagnostics
|
||||
on or off.
|
||||
Regardless of whether or not individual \fIoverlaps\fR are reported,
|
||||
the total number detected will be logged.
|
||||
.Ce
|
||||
.H 1 "Shotlining Options"
|
||||
.Cs /shotlines
|
||||
\fIShotlining\fR is a technique whereby lines are described in the target
|
||||
coordinate system and information is requested about the geometry that
|
||||
intersects those lines in 3-space.
|
||||
This technique is useful for analysis programs that must simulate
|
||||
threat/target interactions,
|
||||
and therefore must sample the geometry along the threat path.
|
||||
Typically the lines are specified discretely,
|
||||
by a point and a direction,
|
||||
or a \fIgrid\fR of lines is generated that is
|
||||
oriented perpendicular to the direction of attack.
|
||||
A \fIgrid\fR is rectangular,
|
||||
but is subdivided along its height and width uniformly resulting in square
|
||||
cells.
|
||||
\fIGridding\fR techniques include passing a line called a \fIshotline\fR through
|
||||
the center of each cell,
|
||||
or alternatively,
|
||||
\fIdithering\fR each shotline's position within its respective cell's
|
||||
boundaries (see \fBDithering Shotlines\fR).
|
||||
.Ce
|
||||
.H 2 "Attack Direction"
|
||||
.Cs "/shotlines/attack-direction"
|
||||
The orientation of shotlines with respect to the coordinate system of the
|
||||
target are described by \fIazimuth\fR and \fIelevation\fR angles.
|
||||
These angles must be specified in degrees as floating-point numbers
|
||||
(see \fBGridding\fR).
|
||||
.Ce
|
||||
.H 2 "Gridding"
|
||||
.Cs "/shotlines/shotline location"
|
||||
The user is faced with several choices for generating shotlines;
|
||||
full-target envelope, partial envelopes, or discrete shots.
|
||||
No matter what shotlining method is used,
|
||||
a grid always exists as a frame of reference for specifying 2-dimensional
|
||||
coordinates in the plane normal to the direction of attack.
|
||||
This 2-dimensional coordinate system is a projection of the shotline
|
||||
coordinate system (also referred to as the \fIprimed\fR coordinate system).
|
||||
For the simple case of a zero azimuth, zero elevation attack,
|
||||
the
|
||||
.Ax \*(x) \*(y) \*(z)
|
||||
in the shotline coordinate system coincide
|
||||
with the
|
||||
.Ax \*(X) \*(Y) \*(Z)
|
||||
of the target coordinate system and the shotline direction is parallel to
|
||||
the \*(x)\*(A) and headed toward decreasing coordinates.
|
||||
Other orientations are described by rotating the
|
||||
.Ax \*(x) \*(y) \*(z)
|
||||
to keep the shotline direction always down the \*(x)\*(A).
|
||||
This transformation involves two rotations;
|
||||
first a rotation of the \fIprimed\fR coordinate system about the coincident
|
||||
\*(Z) and \*(z)\*(a) by the specified azimuthal angle,
|
||||
followed by a rotation about the new \*(y)\*(A) by the specified elevation
|
||||
angle.
|
||||
Since the grid is a 2-d projection of the shotline coordinate system,
|
||||
it has no \*(X) coordinate;
|
||||
if the user's viewpoint is from the direction of attack,
|
||||
the \*(y)\*(A) can be thought of as horizontal with increasing coordinates
|
||||
to the right,
|
||||
and the \*(z)\*(A) as vertical and increasing in the upward direction.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/envelope"
|
||||
An \fIenvelope\fR refers to a grid that is dimensioned such that its
|
||||
rectangular area,
|
||||
projected normal to the grid,
|
||||
will cover optionally all or part of the target.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/envelope/enclose-target"
|
||||
This option will generate a grid that is guaranteed to cover the entire
|
||||
target.
|
||||
Since the \*(m) modeler uses combinatorial solid geometry,
|
||||
the dimensions of the target are not known,
|
||||
therefore a worst case bounding rectangular parallel piped (RPP)
|
||||
is the only information available to the program and
|
||||
the grid may be larger than necessary.
|
||||
In addition,
|
||||
depending on the attack aspect,
|
||||
the presented area of some targets may not fill up a rectangular grid well.
|
||||
This should not be a problem since ray tracing outside the target
|
||||
boundaries is cheap, but if desired,
|
||||
the grid can be trimmed down with the partial envelope option described
|
||||
below.
|
||||
The grid origin is always aligned with the target origin.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/envelope/enclose-portion"
|
||||
This option allows the user to generate a \fIsub-grid\fR by specifying the
|
||||
distances from the grid origin to the \fIsub-grid's\fR left, right, top,
|
||||
and bottom boundaries.
|
||||
.Ce
|
||||
.H 2 "Cell Size"
|
||||
.Cs "/shotlines/cell-size"
|
||||
The dimensions of a grid cell are input as floating-point values that
|
||||
represent the distances between the centers of adjacent cells.
|
||||
\fICell size\fR also expresses the projected area of influence
|
||||
associated with a shotline or burst ray.
|
||||
Therefore,
|
||||
\fIcell size\fR must be specified even when a grid will not be generated,
|
||||
such as with discrete shot or discrete burst point selection
|
||||
(see \fBInput Discrete Shots\fR and \fBInput Discrete Burst Points\fR).
|
||||
.Ce
|
||||
.H 2 "Dithering Shotlines"
|
||||
.Cs "/shotlines/dither-cells"
|
||||
When gridding,
|
||||
shotlines normally pass through the center of each cell,
|
||||
however,
|
||||
they may be also be \fIdithered\fR.
|
||||
If the user chooses the latter,
|
||||
2 random numbers are selected for each
|
||||
cell that are used to offset the shotline in both parametric
|
||||
directions of the grid plane,
|
||||
but within the respective cell's boundaries.
|
||||
.Ce
|
||||
.H 2 "Input Discrete Shots"
|
||||
.Cs "/shotlines/shotline location/discrete shots"
|
||||
The following options describe different ways to input explicit shot locations
|
||||
as an alternative to generating a grid.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/discrete shots/target coordinate system"
|
||||
If the user wants to fire at a known point on the target,
|
||||
he may wish to describe the shotline location in target coordinates.
|
||||
When coupled with the attack direction,
|
||||
each 3-dimensional coordinate uniquely specifies a shotline.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/discrete shots/target coordinate system/input-3d-shot"
|
||||
This option allows the user to type in a single shot location as an
|
||||
\*(X), \*(Y), and \*(Z) coordinate.
|
||||
When the
|
||||
.Co execute
|
||||
command is given,
|
||||
that one shot will be run.
|
||||
No queueing of shots occurs in this mode;
|
||||
the last set of coordinates entered will be used.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/discrete shots/target coordinate system/read-3d-shot-file"
|
||||
A number of shots can be input from a file;
|
||||
this option will,
|
||||
after submission of an
|
||||
.Co execute
|
||||
directive,
|
||||
loop through every set of target coordinates in the named file.
|
||||
The file should contain three floating-point numbers on each line separated by
|
||||
white space (blanks or tabs).
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/discrete shots/shotline coordinate system"
|
||||
Another way to describe a shot location is in the shotline coordinate
|
||||
system.
|
||||
Since the \*(x) location of the shot is irrelevant (the shotline is
|
||||
parallel to the \*(x)\*(A)) a shot may be specified as a
|
||||
\*(y) and \*(z) coordinate.
|
||||
These coordinates can also be referred to as horizontal and vertical grid
|
||||
offsets.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/discrete shots/shotline coordinate system/input-2d-shot"
|
||||
This option allows the user to type in a single shot location as a
|
||||
\*(y), and \*(z) coordinate.
|
||||
When the
|
||||
.Co execute
|
||||
command is given,
|
||||
that one shot will be run.
|
||||
No queueing of shots occurs in this mode,
|
||||
the last set of grid offsets entered will be used.
|
||||
.Ce
|
||||
.Cs "/shotlines/shotline location/discrete shots/shotline coordinate system/read-2d-shot-file"
|
||||
A number of shots can be input from a file;
|
||||
this option will,
|
||||
after submission of an
|
||||
.Co execute
|
||||
directive,
|
||||
loop through every set of grid offsets in the named file.
|
||||
The file should contain three floating-point numbers on each line separated by
|
||||
white space (blanks or tabs).
|
||||
.Ce
|
||||
.H 1 "Bursting Options"
|
||||
.Cs "/burst points"
|
||||
\fIBursting\fR is a technique for sampling a target's geometry with the use
|
||||
of ray tracing.
|
||||
As opposed to \fIshotlining\fR involving parallel rays,
|
||||
\fIbursting\fR employs a distribution of rays that emanate from a single
|
||||
point.
|
||||
The \*(b) program generates rays that approximate a uniform distribution
|
||||
over a user-specified solid angle (see \fBSampling Cone Half Angle\fR)
|
||||
and having a density (see \fBNumber of Sampling Rays\fR) that is also under
|
||||
control of the user.
|
||||
The user also has a choice between several mechanisms for setting up
|
||||
burst point locations depending on the particular threat he is attempting
|
||||
to emulate.
|
||||
.Ce
|
||||
.H 2 "Method of Locating Burst Point"
|
||||
.Cs "/burst points/bursting method"
|
||||
Depending on threat type,
|
||||
burst points may be located using two basic techniques.
|
||||
The first technique is simply to input the burst point coordinates.
|
||||
This method can be used to compare vulnerability analysis results with
|
||||
empirical results from the firing range or combat field.
|
||||
The second technique available to the user is to burst along a shotline.
|
||||
This option is used more for predicting the burst point location based
|
||||
on target geometry,
|
||||
given certain parameters that describe the target/threat interactions.
|
||||
.Ce
|
||||
.H 3 "Input Discrete Burst Points"
|
||||
.Cs "/burst points/bursting method/burst point coordinates"
|
||||
The input of explicit burst point coordinates can be accomplished
|
||||
either by typing them in one at a time or by reading a file
|
||||
of target \*(X), \*(Y), and \*(Z) coordinates.
|
||||
.Ce
|
||||
.Cs "/burst points/bursting method/burst point coordinates/burst-coordinates"
|
||||
This option allows the user to type in a single burst point location as an
|
||||
\*(X), \*(Y), and \*(Z) coordinate.
|
||||
When the
|
||||
.Co execute
|
||||
command is given,
|
||||
that one burst point will be run.
|
||||
No queueing of burst points occurs in this mode,
|
||||
the last set of coordinates entered will be used.
|
||||
.Ce
|
||||
.Cs "/burst points/bursting method/burst point coordinates/read-burst-file"
|
||||
A number of burst points can be input from a file;
|
||||
this option will,
|
||||
after submission of an
|
||||
.Co execute
|
||||
directive,
|
||||
loop through every set of target coordinates in the named file.
|
||||
The file should contain three numbers on each line separated by
|
||||
white space (blanks or tabs).
|
||||
.Ce
|
||||
.H 3 "Burst on Contact"
|
||||
.Cs "/burst points/bursting method/burst point coordinates/shotline-burst"
|
||||
The
|
||||
.Co shotline-burst
|
||||
directive can be given a \fIyes\fR or \fIno\fR argument to either enable
|
||||
or disable this method of generating burst points.
|
||||
When a \fIyes\fR argument is given,
|
||||
a second \fIyes\fR or \fIno\fR argument is also required
|
||||
(see \fBBurst on Armor\fR).
|
||||
Bursting along a shotline can be done different ways depending on the
|
||||
combination of several options.
|
||||
The location of the burst point is based on the triggering
|
||||
mechanism that is selected with the \fIburst distance\fR parameter.
|
||||
.Ce
|
||||
.H 4 "Burst on Armor"
|
||||
.sp
|
||||
If the \fIburst distance\fR parameter is set to a negative or zero value,
|
||||
then interior burst points will be generated (see \fBBurst Distance\fR).
|
||||
This method of bursting requires the input of \fIburst armor\fR idents and,
|
||||
by default, \fIburst air\fR idents are also required.
|
||||
If the user does not want to require that certain air be present to trigger
|
||||
a burst point,
|
||||
the
|
||||
.Co shotline-burst
|
||||
command has a second argument.
|
||||
When this second argument is set to \fIno\fR,
|
||||
bursting will occur as long as
|
||||
\fIburst armor\fR is followed by any air or void (empty space),
|
||||
and the \fIburst air\fR file is not required.
|
||||
For more information see \fBBurst Armor File\fR and \fBBurst Air File\fR.
|
||||
.Ce
|
||||
.H 4 "Ground Plane Bursting"
|
||||
.Cs "/burst points/bursting method/burst point coordinates/ground-plane"
|
||||
Ground plane bursting is a vehicle for evaluating the effect of
|
||||
fragmenting warheads on light-armored vehicles when they strike the ground
|
||||
in close proximity to the target.
|
||||
The
|
||||
.Co ground-plane
|
||||
command is only relevant when bursting along a shotline is selected.
|
||||
The ground is modeled as a rectangle lying in a plane parallel
|
||||
to the target \fIX-Y\fR plane with edges parallel to the \*(X) and \*(Y)
|
||||
axes.
|
||||
The grid will be enlarged to include the ground plane;
|
||||
it is important for efficiency to limit the size of the ground plane to
|
||||
match the range of the fragments that may be generated by the particular
|
||||
threat being modeled.
|
||||
When enabling this option,
|
||||
the
|
||||
.Co ground-plane
|
||||
command is given a \fIyes\fR argument
|
||||
followed by the height of the target above the ground,
|
||||
and the distances that the ground rectangle extends out positive \*(X),
|
||||
negative \*(X),
|
||||
positive \*(Y),
|
||||
and negative \*(Y) axes.
|
||||
.Ce
|
||||
.H 2 "Bursting Parameters"
|
||||
.Cs "/burst points/bursting parameters"
|
||||
The following parameters influence both the triggering mechanism for burst
|
||||
points,
|
||||
as well as the characteristics of the cone of rays generated from each
|
||||
point.
|
||||
.Ce
|
||||
.H 3 "Burst Distance"
|
||||
.Cs "/burst points/bursting parameters/burst-distance"
|
||||
The \fIburst distance\fR parameter is modeled after the \fBBDIST\fR parameter
|
||||
used by the Air Force's \*(G)\*F code.
|
||||
.FS
|
||||
The Air Force currently uses \*(G) to produce burst point libraries
|
||||
for \*(P) from \*(F) descriptions.
|
||||
.FE
|
||||
The role of this parameter is overloaded,
|
||||
however it was retained to aid \*(G) users in transitioning to the \*(b)
|
||||
program.
|
||||
If it is zero or negative,
|
||||
then \fIinterior bursting\fR is enabled,
|
||||
otherwise,
|
||||
if it is greater than zero, \fIexterior bursting\fR will occur,
|
||||
subject to certain conditions (see below).
|
||||
The magnitude of this parameter is used to offset the burst point location
|
||||
along the shotline relative to the geometry that triggered the burst.
|
||||
.Ce
|
||||
.H 4 "Interior Bursting"
|
||||
.sp
|
||||
\fIBurst armor\fR refers to a component whose ident code is found in
|
||||
the list input by the
|
||||
.Co burst-armor-file
|
||||
command.
|
||||
Similarly,
|
||||
\fIburst air\fR refers to a component whose ident code is found in the
|
||||
list input by the
|
||||
.Co burst-air-file
|
||||
directive.
|
||||
If \fIinterior bursting\fR is enabled
|
||||
and a \fIburst armor\fR component is encountered along a shotline
|
||||
that is immediately followed by \fIburst air\fR,
|
||||
then a burst point will be located the absolute value of \fIburst distance\fR
|
||||
beyond the exit of the shotline from the component.
|
||||
This means that if \fIburst distance\fR is zero,
|
||||
the burst point will lie at the \fIburst armor/air\fR interface,
|
||||
and if it's -5.5,
|
||||
the burst point will lie 5.5 units inside the air compartment from the
|
||||
back surface of the armor.
|
||||
.Ce
|
||||
.H 4 "Exterior Bursting"
|
||||
.sp
|
||||
If \fIburst distance\fR is greater than zero,
|
||||
the first component encountered along the shotline will trigger a
|
||||
burst point,
|
||||
regardless of its ident code,
|
||||
that will be located \fIburst distance\fR
|
||||
in front of the shotline \fIentry\fR point.
|
||||
This technique simulates the behavior of a fragmenting munition with
|
||||
a \fIstandoff\fR fuzing such that detonation is triggered before
|
||||
the collision of the warhead with the target.
|
||||
The \fIburst distance\fR is set to imitate the built in \fIstandoff\fR
|
||||
of the warhead.
|
||||
When employing \fIexterior bursting\fR methods,
|
||||
\fIburst armor\fR and \fIburst air\fR are not used.
|
||||
.sp
|
||||
.H 3 "Sampling Cone Half Angle"
|
||||
.Cs "/burst points/bursting parameters/cone-half-angle"
|
||||
To limit the solid angle within which burst rays will be generated,
|
||||
the user may specify a \fIcone half angle\fR.
|
||||
This angle represents the degrees (in floating point) from the \fIaxis\fR of
|
||||
the cone to its limiting surface.
|
||||
The default value for the \fIcone half angle\fR is 45 degrees.
|
||||
.Ce
|
||||
.H 3 "Deflected Sampling Cone"
|
||||
.Cs "/burst points/bursting parameters/deflect-spall-cone"
|
||||
The spall cone axis is,
|
||||
by default,
|
||||
aligned with the shotline.
|
||||
In reality,
|
||||
the center of mass of the spall cloud would be between the shotline direction
|
||||
and the exit normal of the shotline from the spalling component.
|
||||
By aligning the spall cone axis with a vector halfway between the shotline
|
||||
and the exit normal,
|
||||
a narrower cone half angle can be used and still sample within the solid
|
||||
angle of interest.
|
||||
This technique can therefore be used to cut down on the number of rays
|
||||
calculated without lowering the sampling density.
|
||||
The
|
||||
.Co deflect-spall-cone
|
||||
command takes a \fIyes\fR or \fIno\fR argument about whether or not
|
||||
to divert the cone axis.
|
||||
.Ce
|
||||
.H 3 "Number of Sampling Rays"
|
||||
.Cs "/burst points/bursting parameters/max-spall-rays"
|
||||
The sampling ray density within the spall cone is controlled by specifying
|
||||
the maximum number of rays desired.
|
||||
Due to the uniform distribution algorithm employed,
|
||||
the number of rays calculated will be slightly less.
|
||||
.Ce
|
||||
.H 3 "Maximum Barriers"
|
||||
.Cs "/burst points/bursting parameters/max-barriers"
|
||||
For munitions known to have limited penetration capability,
|
||||
the user may set a limit on the number of burst ray intersections reported.
|
||||
The effect of setting this parameter is to reduce the size of the
|
||||
burst point library (see \fBBurst Point Library\fR) by limiting the
|
||||
number of components that will be reported per burst ray.
|
||||
By default,
|
||||
up to 100 components are reported,
|
||||
as it is not expected that this number will be reached under normal
|
||||
circumstances.
|
||||
.Ce
|
||||
.H 1 "Input File Options"
|
||||
.H 2 "Target-Related Input Files"
|
||||
.Cs "/target files"
|
||||
This group of commands is for specification of target-specific input files.
|
||||
.Ce
|
||||
.H 3 "Target Data Base File"
|
||||
.Cs "/target files/target-file"
|
||||
The input of the target's \*(m) file is accomplished with this command.
|
||||
Note that only one data base may be read in during a given \fIsession\fR.
|
||||
If the user wishes to change the target once the
|
||||
.Co execute
|
||||
command has been given,
|
||||
he must exit the \*(b) program and start a new \fIsession\fR.
|
||||
.Ce
|
||||
.Cs "/target files/target-objects"
|
||||
After specifying the \*(m) file,
|
||||
the user must list all of the objects in the \*(m) hierarchy that he
|
||||
wishes to be included in his analysis.
|
||||
The objects must be listed as arguments to one
|
||||
.Co target-objects
|
||||
command with spaces or tabs as separators.
|
||||
Note that only one list of objects may be loaded per \fIsession\fR,
|
||||
however,
|
||||
they do not get loaded until the
|
||||
.Co execute
|
||||
command is given.
|
||||
.Ce
|
||||
.H 3 "Ident List Input Files"
|
||||
.sp
|
||||
\fIIdents\fR refer to the \fIregion ident\fR code from the \*(m) file.
|
||||
Lists of \fIidents\fR may be specified singly or as ranges.
|
||||
Individual \fIidents\fR must appear as one per line,
|
||||
but ranges are specified by two numbers on a line that are
|
||||
separated by one or more of the following characters: comma, hyphen, colon,
|
||||
semicolon, space, or tab.
|
||||
Figure 6 shows an example of such a file.
|
||||
.DS
|
||||
.sp
|
||||
.so ids.mm
|
||||
.FG "Ident List File Format"
|
||||
.sp
|
||||
.DE
|
||||
.Ce
|
||||
.H 4 "Burst-Armor and Burst-Air Ident Files"
|
||||
.sp
|
||||
.Cs "/target files/burst-armor-file"
|
||||
.Cs "/target files/burst-air-file"
|
||||
When interior burst points are to be generated along a shotline
|
||||
(see \fBInterior Bursting\fR) a file of \fIburst armor\fR idents and
|
||||
\fIburst air\fR idents must be input.
|
||||
If a shotline intersects a component whose \fIident\fR has been input
|
||||
as a \fIburst armor\fR and it is immediately followed by \fIburst air\fR
|
||||
a burst point will be triggered.
|
||||
.Ce
|
||||
.H 4 "Critical Component Idents"
|
||||
.Cs "/target files/critical-comp-file"
|
||||
Whether interior or exterior bursting is being employed,
|
||||
information about components hit by burst rays will only be output
|
||||
for rays that hit \fIcritical components\fR.
|
||||
The file name containing a list of \fIcritical component\fR idents must
|
||||
therefore be input by this command if burst points are to be generated.
|
||||
.Ce
|
||||
.H 3 "Color Mapping Input File"
|
||||
.Cs "/target files/color-file"
|
||||
This command allows users to assign colors to component idents for graphics
|
||||
options,
|
||||
in particular,
|
||||
the
|
||||
.Co image-file
|
||||
and
|
||||
.Co plot-file
|
||||
commands.
|
||||
The format of this file is 5 numbers per line separated by blanks or tabs.
|
||||
The first number is the low end of an ident range and the second number is
|
||||
the high end of the range (both numbers are inclusive).
|
||||
This range is mapped to the color specified by the last 3 numbers on the
|
||||
line that are red, green, and blue components of the color (values for
|
||||
these components must be between 0 and 255 inclusive).
|
||||
Figure 7 shows an example of such a file.
|
||||
.DS
|
||||
.sp
|
||||
.so cmap.mm
|
||||
.FG "Color Mapping File Format"
|
||||
.sp
|
||||
.DE
|
||||
.Ce
|
||||
.H 2 "Project-Related Input Files"
|
||||
.H 3 "Reading Session Files"
|
||||
.Cs "/project files/read-input-file"
|
||||
This command reads an \fIinput\fR file of commands.
|
||||
These files can be generated manually by using a text editor or
|
||||
saved from a \fIsession\fR file with the
|
||||
.Co write-input-file
|
||||
command.
|
||||
See the section called \fBCommand Input\fR for the format of this
|
||||
file.
|
||||
.Ce
|
||||
.H 3 "Shotline and Burst Point Input Files"
|
||||
.sp
|
||||
For an explanation of commands for reading in files of shotline or burst
|
||||
point coordinates,
|
||||
see the sections called \fBInput Discrete Shots\fR and
|
||||
\fBInput Discrete Burst Points\fR.
|
||||
.Ce
|
||||
.H 1 "Output File Options"
|
||||
.Cs "/project files"
|
||||
The following commands will turn on optional output.
|
||||
By default,
|
||||
no output is produced except error logging (see \fBError Log\fR),
|
||||
unless an output file is specified with the appropriate command.
|
||||
Any combination of output options may be specified for a particular run.
|
||||
Note that specifying an output file will cause an existing file with that
|
||||
name to be truncated to zero length.
|
||||
Therefore,
|
||||
only one such command should be entered per \fIsession\fR for a particular file
|
||||
name.
|
||||
Multiple runs during a \fIsession\fR will append to the same files if
|
||||
intervening commands to change the output file name are not given,
|
||||
except for the graphics files as explained below.
|
||||
Note that there is no way to append to a file created by a previous
|
||||
\fIsession\fR of the \*(b) program,
|
||||
but these files may be concatenated after the fact by using the
|
||||
\*(U)
|
||||
.Ud cat 1
|
||||
utility.
|
||||
.Ce
|
||||
.H 2 "Burst Point Library File"
|
||||
.Cs "/project files/burst-file"
|
||||
This command will open the named file for creating a burst point library.
|
||||
If the file exists,
|
||||
it will be truncated by this command.
|
||||
\fBAppendix A\fR describes the format for these files.
|
||||
.Ce
|
||||
.H 2 "Shotline File"
|
||||
.Cs "/project files/shotline-file"
|
||||
This command will open the named file for creating a shotline file.
|
||||
If the file exists,
|
||||
it will be truncated by this command.
|
||||
\fBAppendix B\fR describes the format for these files.
|
||||
.Ce
|
||||
.H 2 "\*(U) Plot File"
|
||||
.Cs "/project files/plot-file"
|
||||
This command generates a \*(U) plot file,
|
||||
using \*(B) extensions to the standard format.
|
||||
This option is useful for examining the shotline and burst ray information
|
||||
graphically as a three-dimensional vector plot.
|
||||
Due to constraints inherent in the \*(U) plot format,
|
||||
these plots must be displayed as a post-process step by using
|
||||
a \*(B) plotting utility such as \fBpl-sgi\fR or \fBpl-fb\fR.
|
||||
Because some of these display programs do not support multiple plots
|
||||
per file,
|
||||
the file name should be changed between runs.
|
||||
Table 3 describes the color mapping associated with these plots.
|
||||
.DF
|
||||
.sp
|
||||
.TB "Color Key for \s-1UNIX\s0 \*(Tm Plots"
|
||||
.so plot.mm
|
||||
.sp
|
||||
.DE
|
||||
.P
|
||||
If the user has specified a color mapping file with the
|
||||
.Co color-file
|
||||
command,
|
||||
then those colors will be used rather than the above colors for
|
||||
all shotline/ray intersections.
|
||||
.Ce
|
||||
.H 2 "Frame Buffer Image"
|
||||
.Cs "/project files/image-file"
|
||||
This option will generate a color image that provides the user with
|
||||
immediate feedback about a run.
|
||||
The grid is displayed graphically and each cell location is dynamically
|
||||
color coded to show its current status.
|
||||
Table 4 describes the color mapping associated with the grid.
|
||||
.DF
|
||||
.sp
|
||||
.TB "Color Key for Frame Buffer Image"
|
||||
.so fb.mm
|
||||
.sp
|
||||
.DE
|
||||
.P
|
||||
In addition to the above cell colors, hits on critical components by burst
|
||||
rays are depicted as a colored pixel projected into grid
|
||||
space from the intersection point where the ray enters the component.
|
||||
Colors for the components are mapped from ident numbers according to the
|
||||
table specified by the user with the
|
||||
.Co "/target files/color-file"
|
||||
directive and shaded using a lighting model illuminated from the viewing
|
||||
direction.
|
||||
.H 2 "Grid File"
|
||||
.Cs "/project files/grid-file"
|
||||
This command will store each shotline coordinate generated during the run
|
||||
as grid offsets.
|
||||
These files can later be read in to replicate a previous run's grid or discrete
|
||||
shots by using the
|
||||
.Co read-2d-shot-file
|
||||
command.
|
||||
This capability is especially useful when \fIdithered\fR shotlines have been
|
||||
used and it is desired that the same shotlines be used in another run.
|
||||
Note that the shotline intersection information is not saved,
|
||||
just the grid offsets for each shotline.
|
||||
.Ce
|
||||
.H 2 "Script File"
|
||||
.Cs "/project files/write-input-file"
|
||||
During a \fIsession\fR,
|
||||
all commands are saved in a temporary file.
|
||||
The
|
||||
.Co write-input-file
|
||||
command will create a \fIsnapshot\fR of this \fIsession\fR file,
|
||||
that can later be used to recreate the current \fIsession\fR
|
||||
up to the point when the file was written.
|
||||
The \fIsession\fR or \fIinput\fR files
|
||||
can later be used in one of two ways: either read in with the
|
||||
.Co read-input-file
|
||||
command,
|
||||
or supplied on the standard input of the \*(b) program.
|
||||
Note that the
|
||||
.Co write-input-file
|
||||
and
|
||||
.Co read-input-file
|
||||
commands will not be included in the \fIinput\fR files,
|
||||
but the commands read in by the latter \fIwill\fR.
|
||||
.Ce
|
||||
.H 2 "Error Log"
|
||||
.Cs "/project files/error-file"
|
||||
This command is useful to save errors in a log file and prevent copious
|
||||
ray tracer diagnostics from scrolling by on the screen.
|
||||
This option is especially useful if using the batch mode of execution
|
||||
so that the terminal is not tied up by program output.
|
||||
If no error log is specified,
|
||||
diagnostic messages will appear in the scrolling window or,
|
||||
if in batch mode,
|
||||
on the \*(b) program's standard error output.
|
||||
.Ce
|
||||
.H 2 "Histogram File"
|
||||
.Cs "/project files/histogram-file"
|
||||
This command generates a frequency histogram to the named file.
|
||||
The file format is simply one number per line; each number is a count
|
||||
of critical components hit by an individual burst ray.
|
||||
This file can easily be post-processed to display a histogram,
|
||||
for instance,
|
||||
how many rays hit zero, one, two, three, etc. components.
|
||||
.Ce
|
||||
.H 1 Conclusion
|
||||
There is a large, and rapidly growing, collection of highly detailed \*(m)
|
||||
models due to the widespread use of the highly portable \*(B) package.
|
||||
The \*(b) program gives the \*(F) community the option of analyzing \*(m)
|
||||
models.
|
||||
This, along with the \*(F) to \*(m) translator will permit an easy transition
|
||||
of the Air Force to the \*(B) system.
|
||||
Then,
|
||||
productivity in the target description arena,
|
||||
that has long been a bottleneck to the vulnerability and lethality analyst,
|
||||
will increase dramatically.
|
||||
Another benefit will be increased accuracy of results due to the superior
|
||||
detail and accuracy afforded by a true combinatorial solid geometry modeler.
|
||||
.H 1 Acknowledgments
|
||||
The author would like to thank Leonard E. Bruenning, Jr. of Sverdrup
|
||||
Technology, Inc. for his thorough, concise and well-illustrated
|
||||
documentation\*F of the requirements to be met by the \*(b) program
|
||||
and for his courteous and professional manner in fielding related questions.
|
||||
.FS
|
||||
Leonard E. Bruenning,
|
||||
"Interface Control Document for BURST Ray Generator Computer Program",
|
||||
\fBTechnical Report\fR,
|
||||
prepared for: Department of the Air Force,
|
||||
Armament Division,
|
||||
Eglin AFB,
|
||||
FL 32542-5000,
|
||||
14 December 1988.
|
||||
.FE
|
||||
.H 1 Appendices
|
||||
Both burst point library files and shotline files are composed
|
||||
of single-line records.
|
||||
Each line begins with a digit that identifies the type of record it represents.
|
||||
Both file formats are composed of one or more \fIruns\fR that begin with a
|
||||
\fIrun header\fR.
|
||||
Each shotline that intersects the target will result in a
|
||||
\fIshotline header\fR that is followed by one or
|
||||
more \fIshotline intersection\fR records.
|
||||
These record types exist for both file formats,
|
||||
but they do not contain the same information.
|
||||
Burst point library files have two additional record types,
|
||||
\fIburst ray headers\fR and \fIburst ray intersections\fR.
|
||||
If a burst point occurs along a shotline,
|
||||
the \fIburst ray header\fR will immediately follow that shotline's last
|
||||
intersection record.
|
||||
Each \fIburst ray header\fR records will be immediately followed by
|
||||
\fIburst ray intersection\fR records,
|
||||
one for each ray that strikes a \fIcritical component\fR.
|
||||
.bp
|
||||
.H 2 "Appendix A: Burst Point Library File Format"
|
||||
Below is a description of the format of the burst point library files that
|
||||
are generated if the
|
||||
.Co burst-file
|
||||
command is used.
|
||||
.DS
|
||||
.so bpl.mm
|
||||
.DE
|
||||
.bp
|
||||
.H 2 "Appendix B: Shotline File Format"
|
||||
Below is a description of the format of the shotline files that are
|
||||
generated if the
|
||||
.Co shotline-file
|
||||
command is used.
|
||||
.DS
|
||||
.so shotlines.mm
|
||||
.DE
|
||||
.de TX
|
||||
.ce
|
||||
TABLE OF CONTENTS \" define header for TOC page
|
||||
..
|
||||
.de TY \" suppress default TOC header
|
||||
..
|
||||
.TC
|
||||
.\" .CS
|
||||
@@ -0,0 +1,12 @@
|
||||
.TS
|
||||
center,box;
|
||||
l.
|
||||
4001 4003 255 255 0 # Fuel
|
||||
4050 4050 255 255 0 # Fuel
|
||||
8000 8001 255 100 255 # Ammo
|
||||
100 165 150 255 100 # Hull armor
|
||||
610 619 220 150 100 # Commander
|
||||
720 729 220 150 100 # Gunner
|
||||
830 839 220 150 100 # Loader
|
||||
940 949 220 150 100 # Driver
|
||||
.TE
|
||||
@@ -0,0 +1,55 @@
|
||||
.so defs.mm
|
||||
.ps -2
|
||||
.vs -2
|
||||
.TS
|
||||
center,allbox,tab(@);
|
||||
cb cb cb
|
||||
_ _ _
|
||||
cb ci c.
|
||||
COMMAND@ARGUMENTS@DESCRIPTION
|
||||
attack-direction@azim_angle elev_angle@specify azimuth and elevation of attack relative to target
|
||||
burst-air-file@file@input burst air idents from \fIfile\fR
|
||||
burst-armor-file@file@input burst armor idents from \fIfile\fR
|
||||
burst-coordinates@X Y Z@input single burst point location in target coordinates
|
||||
burst-distance@distance@offset burst point along shotline (see \fBBurst Distance\fR)
|
||||
burst-file@file@output burst point library to \fIfile\fR
|
||||
cell-size@distance@specify shotline separation (equidistant horizontal and vertical)
|
||||
color-file@file@input ident to color mapping from \fIfile\fR (for graphics)
|
||||
cone-half-angle@angle@specify limiting angle for spall ray generation
|
||||
critical-comp-file@file@input critical component idents from \fIfile\fR
|
||||
deflect-spall-cone@flag@deflect axis of spall cone half way towards exit normal
|
||||
dither-cells@flag@if \fIyes\fR, randomly offset shotline within grid cell
|
||||
enclose-target@@generate rectangular grid of shotlines for full target envelope
|
||||
enclose-portion@left right bottom top@T{
|
||||
generate partial envelope by specifying grid boundaries
|
||||
T}
|
||||
error-file@file@divert all diagnostics to \fIfile\fR
|
||||
execute@@initiate a run (no output produced without this command)
|
||||
grid-file@file@save shotline locations (Y' Z') in \fIfile\fR
|
||||
ground-plane@flag [Z +X -X +Y -Y]@T{
|
||||
if \fIyes\fR, burst on ground (see \fBGround Plane Bursting\fR).
|
||||
T}
|
||||
histogram-file@file@write hit frequency histogram to \fIfile\fR
|
||||
image-file@file@generate frame buffer image on specified \fIfile\fR or device
|
||||
input-2d-shot@Y' Z'@input single shotline location as grid offsets
|
||||
input-3d-shot@X Y Z@input single shotline location in target coordinates
|
||||
max-barriers@count@specify the maximum number of components to report along spall ray
|
||||
max-spall-rays@count@specify the desired number of spall rays generated per burst point
|
||||
plot-file@file@generate \*(U) plot in \fIfile\fR
|
||||
read-2d-shot-file@file@read shot locations from \fIfile\fR as grid offsets (see \fBinput-2d-shot\fR)
|
||||
read-3d-shot-file@file@read shot locations from \fIfile\fR in target coords. (see \fBinput-3d-shot\fR)
|
||||
read-burst-file@file@read burst point locations from \fIfile\fR (see \fBburst-coordinates\fR)
|
||||
read-input-file@file@read key word commands from \fIfile\fR
|
||||
report-overlaps@flag@if \fIyes\fR, log overlap diagnostics
|
||||
shotline-burst@flag [flag]@T{
|
||||
if \fIyes\fR, generate burst points along shotlines (see \fBBurst on Contact\fR).
|
||||
T}
|
||||
shotline-file@file@output shot line data to \fIfile\fR
|
||||
target-file@file@read \*(m) data base from \fIfile\fR
|
||||
target-objects@object0 [object1 object2 ...]@list objects from \*(m) data base to interrogate
|
||||
units@name@linear units (\fIinches,feet,millimeters,centimeters,meters\fR)
|
||||
write-input-file@file@save script of commands in \fIfile\fR
|
||||
#@@any line beginning with the `\fB#\fR' character is a comment
|
||||
.TE
|
||||
.ps +2
|
||||
.vs +2
|
||||
@@ -0,0 +1,21 @@
|
||||
.ds A) \fI axis\fR
|
||||
.ds a) \fI axes\fR
|
||||
.ds B) \fB\s-1BRL-CAD\s0\fR
|
||||
.ds b) \fBburst\fR
|
||||
.ds f) \fBlibfb\fR
|
||||
.ds F) \fB\s-1FASTGEN\s0\fR
|
||||
.ds G) \fB\s-1PGEN\s0\fR
|
||||
.ds l) \fBlibrt\fR
|
||||
.ds m) \fBmged\fR
|
||||
.ds p) \fBlibplot3\fR
|
||||
.ds P) \fB\s-1PDAM\s0\fR
|
||||
.ds S) \fB\s-1SHOTGEN\s0\fR
|
||||
.ds U) \s-1UNIX\s0 \*(Tm
|
||||
.ds X) \fIX\fR
|
||||
.ds Y) \fIY\fR
|
||||
.ds Z) \fIZ\fR
|
||||
.ds x) \fIX'\fR
|
||||
.ds y) \fIY'\fR
|
||||
.ds z) \fIZ'\fR
|
||||
.ds HF 3 3 3 3 3 3 3
|
||||
.ds HP +2 +2 +2 +2 +2 +2 +2
|
||||
@@ -0,0 +1,15 @@
|
||||
.TS
|
||||
center,allbox,tab(@);
|
||||
cb cb cb cb cb
|
||||
_ _ _ _ _
|
||||
lb ci ci ci l.
|
||||
COLOR@R@G@B@REPRESENTATION
|
||||
red@255@0@0@axis of grid
|
||||
black@0@0@0@grid cell boundaries
|
||||
blue@150@100@255@outside of grid
|
||||
lt grey@200@200@200@shot missed target
|
||||
white@255@255@255@shot hit target
|
||||
lt green@200@255@200@burst occurred but hit no critical components
|
||||
pink@255@200@200@burst occurred and hit some critical components
|
||||
purple@255@0@255@a ground burst occurred
|
||||
.TE
|
||||
@@ -0,0 +1,12 @@
|
||||
.TS
|
||||
center,allbox;
|
||||
cb cb
|
||||
_ _
|
||||
ci c.
|
||||
KEY FUNCTION
|
||||
u or ^P move cursor to item above the current item
|
||||
d or ^N move cursor to item below the current item
|
||||
h or ? print help message about the current item
|
||||
q exit the current menu without making a selection
|
||||
space select the current item
|
||||
.TE
|
||||
@@ -0,0 +1,11 @@
|
||||
.TS
|
||||
center,box;
|
||||
l.
|
||||
600-999
|
||||
1011
|
||||
4002-4050
|
||||
8000
|
||||
9001
|
||||
9004
|
||||
9005
|
||||
.TE
|
||||
@@ -0,0 +1,53 @@
|
||||
A joint-services sponsored program is currently establishing a Ballistic
|
||||
Research Laboratory-Computer Aided Design (\*(B))
|
||||
modeling capability at Eglin Air Force Base, Florida.
|
||||
Currently, the Air Force uses \*(F) to model target geometries using
|
||||
polygonal facets, two-dimensional plates, and some solid primitives.
|
||||
They also maintain compatibility with \*(S), a precursor to \*(F).
|
||||
These modelers are cumbersome to use by today's standards and the resultant
|
||||
descriptions,
|
||||
while taking an extremely long time to build,
|
||||
fall far short of the accuracy and information content of true
|
||||
combinatorial solid geometry models such as produced by
|
||||
the \fBM\fRultiple-device \fBG\fRraphics \fBED\fRitor (\*(m)),
|
||||
the \*(B) modeler.
|
||||
Along with this capability comes several key requirements,
|
||||
one of which will be addressed in this paper;
|
||||
an interface to Eglin AFB's Point Burst Damage Assessment Model (\*(P))
|
||||
from \*(B) solid models.
|
||||
.P
|
||||
The \*(b) program enables the user to direct ray tracing
|
||||
of the \*(m) models to prepare inputs to the
|
||||
\*(P) code in the form of shotline files and burst point library files.
|
||||
The program is capable of supporting analyses of varied threat
|
||||
mechanisms on \*(m) targets.
|
||||
The shotline and burst point library files are written in
|
||||
.SM ASCII
|
||||
and are supplemented with both shaded, color images
|
||||
and 3-d vector plots using the \*(B) frame buffer (\*(f)) and extended
|
||||
\*(U)
|
||||
.FS \*(Tm
|
||||
UNIX is a registered trademark of AT&T.
|
||||
.FE
|
||||
plot (\*(p)) libraries for portability to virtually all hardware
|
||||
platforms running the \*(U) operating system.
|
||||
The terminal-independent user interface employs hierarchical menus
|
||||
coupled with optional graphics displays facilitating ease of use and
|
||||
maximizing information feed back to the operator while permitting full
|
||||
featured use from any video terminal or window system.
|
||||
The menu-driven interface is coupled with an interpreter that
|
||||
accepts key word commands for batch input if the user wishes to
|
||||
detach the job to run unattended.
|
||||
These key word command files can either be prepared automatically from
|
||||
the user-selected parameters orchestrated by the menu system,
|
||||
typed in by hand with an editor,
|
||||
or perhaps generated from another process in a pipeline configuration.
|
||||
.P
|
||||
This paper is intended to serve a dual function,
|
||||
both as a technical memorandum,
|
||||
and as a user manual.
|
||||
Hopefully,
|
||||
not only will it help one appreciate why \*(b) was developed in the first place
|
||||
but will help readers decide whether they need to acquire it,
|
||||
and if so,
|
||||
how to use it.
|
||||
@@ -0,0 +1,28 @@
|
||||
'\" define macro for program usage examples
|
||||
.de Ex
|
||||
.sp
|
||||
.in +0.5i
|
||||
\fI$\ \\$1\fR
|
||||
.in -0.5i
|
||||
.sp
|
||||
..
|
||||
'\" define macro for naming coordinate axes
|
||||
.de Ax
|
||||
\\$1, \\$2, and \\$3\fI axes\fR
|
||||
..
|
||||
'\" define macro for naming commands
|
||||
.de Co
|
||||
\fB\\$1\fR
|
||||
..
|
||||
'\" define macros for command descriptions.
|
||||
.de Cs \" Start command description.
|
||||
.br
|
||||
\s-1\fB[menu reference:\\$1]\fR\s0
|
||||
.P
|
||||
..
|
||||
.de Ce \" End command description.
|
||||
.sp
|
||||
..
|
||||
.de Ud
|
||||
.BI \\$1 (\\$2)\^
|
||||
..
|
||||
@@ -0,0 +1,48 @@
|
||||
.so defs.mm
|
||||
.H 1 Introduction
|
||||
.H 1 "User Interface"
|
||||
.H 2 "Program Invocation"
|
||||
.H 2 "Command Input"
|
||||
.H 2 "Screen Layout"
|
||||
.H 2 "Hierarchical Menus"
|
||||
.H 2 "Scrolling Region"
|
||||
.H 1 "Shotlining Options"
|
||||
.H 2 "Attack Direction"
|
||||
.H 2 "Cell Size"
|
||||
.H 2 "Dithering"
|
||||
.H 2 "Gridding"
|
||||
.H 3 "Envelope"
|
||||
.H 4 "Enclose target"
|
||||
.H 4 "Enclose portion of target"
|
||||
.H 3 "Input shot coordinates"
|
||||
.H 4 "Target coordinate system"
|
||||
.H 5 "Type in 3-D coordinates"
|
||||
.H 5 "Read file of 3-D coordinates"
|
||||
.H 4 "Shotline coordinate system"
|
||||
.H 5 "Type in 2-D coordinates"
|
||||
.H 5 "Read file of 2-D coordinates"
|
||||
.H 1 "Bursting Options"
|
||||
.H 2 "Method of Locating Burst Point"
|
||||
.H 3 "Input burst point coordinates"
|
||||
.H 4 "Type in 3-D coordinates"
|
||||
.H 4 "Read file of 3-D coordinates"
|
||||
.H 3 "Burst on contact"
|
||||
.H 4 "Ground plane bursting"
|
||||
.H 4 "Burst on armor"
|
||||
.H 2 "Bursting Parameters"
|
||||
.H 3 "Burst distance"
|
||||
.H 3 "Sampling cone half angle"
|
||||
.H 3 "Deflected sampling cone"
|
||||
.H 3 "Number of sampling rays"
|
||||
.H 3 "Maximum barriers"
|
||||
.H 1 "Output Options"
|
||||
.H 2 "UNIX Plot File"
|
||||
.H 2 "Frame Buffer Image"
|
||||
.H 2 "Burst Point Library"
|
||||
.H 2 "Shotline File"
|
||||
.H 2 "Grid File"
|
||||
.H 2 "Script File"
|
||||
.H 2 "Error Log"
|
||||
.H 1 Conclusion
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
.TS
|
||||
center,box,tab(@);
|
||||
l.
|
||||
OVERLAP:
|
||||
reg=/component/turret/tur.ext/tur.armor/tur.bot{{0}} isol=s2,
|
||||
reg=/component/hull/hull.ext/hull.armor/r1.top{{0}} osol=ss4,
|
||||
depth 544.21mm at (-471.784,812.8,0) x-2 y1 lvl0 purpose=shotline
|
||||
_
|
||||
OVERLAP:
|
||||
reg=/component/turret/tur.ext/tur.ring{{0}} isol=ss2,
|
||||
reg=/component/turret/tur.ext/tur.armor/tur.bot{{0}} osol=s2,
|
||||
depth 25.39mm at (-418.907,812.8,0) x-2 y1 lvl1 purpose=normal thickness
|
||||
_
|
||||
OVERLAP:
|
||||
reg=/component/turret/tur.ext/tur.ring{{0}} isol=ss2,
|
||||
reg=/component/turret/tur.ext/tur.armor/tur.bot{{0}} osol=s2,
|
||||
depth 52.88mm at (-418.907,-812.8,0) x-2 y1 lvl1 purpose=spall ray
|
||||
.TE
|
||||
@@ -0,0 +1,13 @@
|
||||
.TS
|
||||
center,allbox,tab(@);
|
||||
cb cb cb cb cb
|
||||
_ _ _ _ _
|
||||
lb ci ci ci l.
|
||||
COLOR@R@G@B@REPRESENTATION
|
||||
yellow@255@255@0@grid cell centers
|
||||
red@255@0@0@burst cone
|
||||
blue@0@0@255@default component intersection
|
||||
lt blue@100@100@255@default outside air intersection
|
||||
lt green@100@255@100@default inside air intersection
|
||||
purple@255@0@255@default critical component intersection
|
||||
.TE
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
MASTER=burst
|
||||
#MASTER=debug
|
||||
|
||||
doclifter -h hints.txt -x -vvvv $MASTER.mm #2>t
|
||||
|
||||
STATUS=$?
|
||||
|
||||
echo "doclifter return value for '$MASTER' was '$STATUS'"
|
||||
@@ -0,0 +1,54 @@
|
||||
.TS
|
||||
center,box,tab(@);
|
||||
c0 l s s s.
|
||||
@0.97 user + 1.21 sys in 6 elapsed secs (16.1667%)
|
||||
.T&
|
||||
c0 c c c c
|
||||
c0 | c | c | c | c
|
||||
c0 | c | c | c | c
|
||||
c0 | c | _ | c | c
|
||||
c0 | c | c | c | c
|
||||
c0 | c | c | c | c
|
||||
c0 | c | c _ c
|
||||
c0 | c | c c c .
|
||||
@_@_@_@
|
||||
@units@bursting method@burst-distance
|
||||
@project files@\fBbursting parameters\fR@\fBcone-half-angle\fR
|
||||
@target files@@deflect-spall-cone
|
||||
@shotlines@@max-spall-rays
|
||||
@\fBburst points\fR@@max-barriers
|
||||
@comment
|
||||
@execute
|
||||
@preferences
|
||||
@_@
|
||||
.sp 2
|
||||
.T&
|
||||
c0 lb s s c
|
||||
c0 lb s s c
|
||||
c0 l s s s .
|
||||
@degrees from spall cone axis to limit burst rays
|
||||
@Cone angle ? (degrees)[45.000000]
|
||||
@___BURST (2.2)_______________________________________________
|
||||
.T&
|
||||
c0 l l.
|
||||
@error-file@tfiles/ktank.log
|
||||
@plot-file@tfiles/ktank.plot
|
||||
@image-file@/dev/sgi
|
||||
@units@inches
|
||||
@shotline-file@tfiles/ktank.shotlines
|
||||
@burst-file@tfiles/ktank.burst
|
||||
@burst-air-file@tfiles/ktank,air.ids
|
||||
@burst-armor-file@tfiles/ktank,armor.ids
|
||||
@critical-comp-file@tfiles/ktank,crit.ids
|
||||
@color-file@tfiles/ktank,colors
|
||||
@burst-distance@0
|
||||
@cell-size@16
|
||||
@attack-direction@0 0
|
||||
@max-spall-rays@50
|
||||
@cone-half-angle@45
|
||||
@target-file@/vld/moss/g/ktank.g
|
||||
@target-objects@component
|
||||
@report-overlaps@no
|
||||
@shotline-burst@yes yes
|
||||
@#ground-plane@yes 66 200 200 200 200
|
||||
.TE
|
||||
@@ -0,0 +1,12 @@
|
||||
.TS
|
||||
center;
|
||||
c c c.
|
||||
\d\s+6\s+4^\s-4\s-6\u _ \d\s+6\s+4^\s-4\s-6\u
|
||||
| target files |
|
||||
| shotlines |
|
||||
| burst points |
|
||||
| comment |
|
||||
| \fBexecute\fR |
|
||||
| preferences |
|
||||
\s+2+\s0 _ \s+2+\s0
|
||||
.TE
|
||||
@@ -0,0 +1,29 @@
|
||||
.TS
|
||||
center,allbox,tab(@);
|
||||
lb lb lb
|
||||
_ _ _
|
||||
l l l.
|
||||
record description@field format@field description
|
||||
run header@'1'@record number 1
|
||||
@1x,f9.4@attack azimuth in degrees
|
||||
@1x,f8.4@attack elevation in degrees
|
||||
@1x,f7.2@shotline separation
|
||||
@1x,f7.2@maximum Y' coordinate of target
|
||||
@1x,f7.2@minimum Y' coordinate of target
|
||||
@1x,f7.2@maximum Z' coordinate of target
|
||||
@1x,f7.2@minimum Z' coordinate of target
|
||||
@1x,6a@units (\fImm,cm,inches,feet,meters\fR)
|
||||
shotline header@'2'@record number 2
|
||||
@1x,f8.3@Y' coordinate of shotline
|
||||
@1x,f8.3@Z' coordinate of shotline
|
||||
shotline intersections@'3'@record number 3
|
||||
@1x,f8.2@X' coordinate of intersection
|
||||
@1x,f7.3@sine of fallback angle of exit normal
|
||||
@1x,f7.2@rotation angle of exit normal in degrees
|
||||
@1x,i4@component code number
|
||||
@1x,f8.2@normal thickness of component
|
||||
@1x,f8.2@line-of-sight thickness of component
|
||||
@1x,i2@space code following component
|
||||
@1x,f7.2@obliquity angle at entry to component in degrees
|
||||
@1x,f7.2@obliquity angle at exit from component in degrees
|
||||
.TE
|
||||
@@ -0,0 +1,12 @@
|
||||
.TS
|
||||
center,tab(@);
|
||||
c c c c c.
|
||||
\s+2+\s0@_@\s+2+\s0@_@\s+2+\s0
|
||||
|@units@|@\fBtarget-file\fR@|
|
||||
|@project files@|@target-objects@|
|
||||
|@\fBtarget files\fR@|@burst-air-file@|
|
||||
|@shotlines@|@burst-armor-file@|
|
||||
|@burst points@|@critical-comp-file@|
|
||||
|@comment@|@color-file@|
|
||||
\s+2v\s0@_@\s+2+\s0@_@\s+2+\s0
|
||||
.TE
|
||||
@@ -0,0 +1,10 @@
|
||||
.ce
|
||||
\fB``burst''; Air Force Vulnerability Analyses from BRL-CAD Models\fR
|
||||
.ce
|
||||
"\fIGary S. Moss"
|
||||
.sp
|
||||
.ce 4
|
||||
"\fRBRL-CAD Open Source"
|
||||
.sp
|
||||
.ce
|
||||
"moss@vmb.brl.mil"
|
||||
@@ -0,0 +1,12 @@
|
||||
.TS
|
||||
center;
|
||||
c c c.
|
||||
\s+2+\s0 _ \s+2+\s0
|
||||
| \fBunits\fR |
|
||||
| project files |
|
||||
| target files |
|
||||
| shotlines |
|
||||
| burst points |
|
||||
| comment |
|
||||
\s+2v\s0 _ \s+2v\s0
|
||||
.TE
|
||||
@@ -5465,11 +5465,20 @@ x delete character
|
||||
<entry>
|
||||
<link linkend="permute">permute</link>
|
||||
</entry>
|
||||
<entry>
|
||||
<link linkend="pl">pl</link>
|
||||
</entry>
|
||||
<entry>
|
||||
<link linkend="plot">plot</link>
|
||||
</entry>
|
||||
<entry>
|
||||
<link linkend="polybinout">polybinout</link>
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>
|
||||
<link linkend="pov">pov</link>
|
||||
</entry>
|
||||
<entry>
|
||||
<link linkend="prcolor">prcolor</link>
|
||||
</entry>
|
||||
@@ -11722,12 +11731,12 @@ foo.r_xpand/R
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
extrude
|
||||
extrude – experimental.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
sketch
|
||||
sketch – experimental.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
@@ -12681,6 +12690,53 @@ foo.r_xpand/R
|
||||
<para>
|
||||
<emphasis role="strong"></emphasis>
|
||||
</para>
|
||||
<variablelist xml:id="pl">
|
||||
<varlistentry>
|
||||
<term>
|
||||
pl [<emphasis>-float</emphasis>] [<emphasis>-zclip</emphasis>]
|
||||
[<emphasis>-2d</emphasis>] [<emphasis>-grid</emphasis>]
|
||||
<emphasis>out_file</emphasis> | <quote>|</quote> filter
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote>pl</quote> command creates a UNIX plot of the
|
||||
current MGED display. If an <emphasis>output_file</emphasis>
|
||||
is specified, the plot is stored in that file. If a
|
||||
<emphasis>filter</emphasis> is specified, the output is sent
|
||||
to that <emphasis>filter</emphasis>. The
|
||||
<emphasis>-float</emphasis> option requests a plot file with
|
||||
real numbers rather than integers. The
|
||||
<emphasis>-zclip</emphasis> option requests that the plot be
|
||||
clipped to the viewing cube in the Z-direction. The
|
||||
<emphasis>-2d</emphasis> option requests a two-dimensional
|
||||
plot (the default is 3D). The <emphasis>-grid</emphasis>
|
||||
option is intended to include a grid in the plot, but is
|
||||
currently not implemented. This command uses the
|
||||
<emphasis>dm-plot</emphasis> display manager. The
|
||||
<link linkend="plot">plot</link> command performs the same
|
||||
function, but does not use the <emphasis>dm-plot</emphasis>
|
||||
display manager.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Examples:
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
mged> pl -float | pldebug
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>
|
||||
– Create a UNIX plot of the current MGED display and pipe the
|
||||
results to the <emphasis>pldebug</emphasis> command.
|
||||
</para>
|
||||
<para>
|
||||
<emphasis role="strong"></emphasis>
|
||||
</para>
|
||||
<variablelist xml:id="plot">
|
||||
<varlistentry>
|
||||
<term>
|
||||
@@ -12702,7 +12758,11 @@ foo.r_xpand/R
|
||||
<emphasis>-2d</emphasis> option requests a two-dimensional
|
||||
plot (the default is 3D). The <emphasis>-grid</emphasis>
|
||||
option is intended to include a grid in the plot, but is
|
||||
currently not implemented.
|
||||
currently not implemented. This command does not use the
|
||||
<emphasis>dm-plot</emphasis> display manager. The
|
||||
<link linkend="pl">pl</link> command performs the same
|
||||
function, but does use the <emphasis>dm-plot</emphasis>
|
||||
display manager.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -12724,6 +12784,36 @@ foo.r_xpand/R
|
||||
<para>
|
||||
<emphasis role="strong"></emphasis>
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term xml:id="polybinout">
|
||||
polybinout file
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Store vlist polygons into polygon file (experimental).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>
|
||||
<emphasis role="strong"></emphasis>
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term xml:id="pov">
|
||||
pov args
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Set the point-of-view (experimental).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>
|
||||
<emphasis role="strong"></emphasis>
|
||||
</para>
|
||||
<variablelist xml:id="prcolor">
|
||||
<varlistentry>
|
||||
<term>
|
||||
|
||||
@@ -904,7 +904,7 @@ Engineering Company, 2002):</para>
|
||||
<para><option>-R refset_name</option> - specifies a desired reference set (which Unigraphics uses to provide additional control over assembly components), overriding the reference set specified in the Unigraphics model.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><option>-f</option> - facetizes all the geometry. If this option is not specified, the converter will attempt to create CSG equivalent geometry wherever possible.</para>
|
||||
<para><option>-f</option> - facetizes all the geometry. If this option is not specified, the converter will attempt to create CSG equivalent geometry wherever possible. (Note that this option is experimental.)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><option>-s</option> - lists all features that were attempted to convert to CSG. (This option and the <option>-f</option> option are mutually exclusive.)</para>
|
||||
|
||||
@@ -92,8 +92,8 @@
|
||||
are combined using boolean operations to form regions of homogeneous material.
|
||||
</para>
|
||||
<para>
|
||||
The database is organized as a <emphasis>directed acyclic graph</emphasis> (DAG), which is
|
||||
comprised of:
|
||||
The database is organized as a <emphasis>directed acyclic graph</emphasis> (DAG), which
|
||||
comprises
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@@ -107,7 +107,7 @@
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis>arcs</emphasis> - containing boolean operators and 4x4 homogeneous transformation matrices.</para>
|
||||
<para><emphasis>arcs</emphasis> - contain boolean operators and 4x4 homogeneous transformation matrices.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
@@ -1600,6 +1600,14 @@
|
||||
place of anameN+1 signals the end of the ASCII attribute data.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
PROPOSED: A second type of attribute has an ASCII key but a binary value.
|
||||
Such attributes follow the ASCII-valued ones after the double NULLs:
|
||||
<literallayout class="normal">anameN+1 NULL uintN <uintN binary bytes> [...0 or more binary attribute pairs]</literallayout>
|
||||
where, for each binary attribute pair, the uintN is of size AWid and is
|
||||
the length of the binary value for its ASCII key.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Every object in the database may have zero or more attributes
|
||||
attached to it; the meaning of these attributes will vary
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -18,7 +18,6 @@ set(man1_EN
|
||||
brlcad-config.xml
|
||||
brlcad.xml
|
||||
buffer.xml
|
||||
burst.xml
|
||||
bw-fb.xml
|
||||
bw-imp.xml
|
||||
bw-pix.xml
|
||||
@@ -94,7 +93,6 @@ set(man1_EN
|
||||
g-nff.xml
|
||||
g-nmg.xml
|
||||
g-obj.xml
|
||||
g-ply.xml
|
||||
g-raw.xml
|
||||
g-shell-rect.xml
|
||||
g-step.xml
|
||||
@@ -115,7 +113,6 @@ set(man1_EN
|
||||
gqa.xml
|
||||
halftone.xml
|
||||
hex.xml
|
||||
icv.xml
|
||||
iges-g.xml
|
||||
imgdims.xml
|
||||
ir-X.xml
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,143 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<refentry xmlns='http://docbook.org/ns/docbook' version='5.0' xml:lang='en' xml:id='gstl1'>
|
||||
<refmeta>
|
||||
<refentrytitle>G-PLY
|
||||
</refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
<refmiscinfo class='source'>BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class='software'>BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class='manual'>User Commands</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>g-ply</refname>
|
||||
<refpurpose> Stanford PLY exporter (BRL-CAD to PLY)</refpurpose>
|
||||
</refnamediv>
|
||||
<!-- body begins here -->
|
||||
<refsynopsisdiv xml:id='synopsis'>
|
||||
<cmdsynopsis>
|
||||
<command>g-ply</command>
|
||||
<arg choice='opt'>-v</arg>
|
||||
<arg choice='opt'>-xX <replaceable>lvl</replaceable></arg>
|
||||
<arg choice='opt'>-a <replaceable>abs_tess_tol</replaceable></arg>
|
||||
<arg choice='opt'>-r <replaceable>rel_tess_tol</replaceable></arg>
|
||||
<arg choice='opt'>-n <replaceable>norm_tess_tol</replaceable></arg>
|
||||
<arg choice='opt'>-t <replaceable>type</replaceable></arg>
|
||||
<arg choice='opt'>-s</arg>
|
||||
<arg choice='opt'>-D <replaceable>dist_calc_tol</replaceable></arg>
|
||||
<arg choice='plain'>-o <replaceable>output_file_name</replaceable></arg>
|
||||
<arg choice='plain'><replaceable>database.g</replaceable></arg>
|
||||
<arg choice='plain' rep='repeat'><replaceable>object(s)</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
|
||||
<refsect1 xml:id='description'><title>DESCRIPTION</title>
|
||||
<para>
|
||||
<command>g-ply</command> converts the specified<emphasis remap='I'>object(s)</emphasis>
|
||||
from a BRL-CAD <emphasis remap='I'>database.g</emphasis> file to the
|
||||
<emphasis remap='I'>Stanfort PLY</emphasis> file format.
|
||||
</para>
|
||||
|
||||
<para>The following options are recognized.</para>
|
||||
<variablelist remap='TP'>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-o filename</option></term>
|
||||
<listitem><para>Specify output file name.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-s</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Write out one object per file, instead of merging individual objects into a single ply file.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-t</option> type (asc: ascii), (le: little endian), (be: big endian)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specify the type of PLY file to write.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-D#</option></term>
|
||||
<listitem>
|
||||
<para>Specify a calculational distance tolerance (mm). Any two vertices that are
|
||||
less than this distance apart will be treated as the same vertex.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-a#</option></term>
|
||||
<listitem><para>Specify the absolute tesselation tolerance.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-r#</option></term>
|
||||
<listitem><para>Specify the relative tesselation tolerance.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-n#</option></term>
|
||||
<listitem><para>Specify the surface-normal tesselation tolerance.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-x#</option></term>
|
||||
<listitem><para>Specify an RT debug flag.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-X#</option></term>
|
||||
<listitem><para>Specify an NMG debug flag.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-v</option></term>
|
||||
<listitem><para>Enable verbose output.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 xml:id='example'>
|
||||
<title>EXAMPLE</title>
|
||||
<synopsis>
|
||||
$ g-ply -o <emphasis remap='I'>sample.ply sample.g sample_object</emphasis>
|
||||
</synopsis>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 xml:id='diagnostics'>
|
||||
<title>DIAGNOSTICS</title>
|
||||
<para>Error messages are intended to be self-explanatory.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 xml:id='author'>
|
||||
<title>AUTHOR</title>
|
||||
<para>BRL-CAD Team</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 xml:id='copyright'>
|
||||
<title>COPYRIGHT</title>
|
||||
<para>
|
||||
This software is Copyright (c) 2003-2016 by the United States
|
||||
Government as represented by U.S. Army Research Laboratory.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 xml:id='bug_reports'>
|
||||
<title>BUG REPORTS</title>
|
||||
<para>
|
||||
Reports of bugs or problems should be submitted via electronic
|
||||
mail to <devs@brlcad.org>.
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
@@ -1,187 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<refentry xmlns='http://docbook.org/ns/docbook' version='5.0' xml:lang='en' xml:id='icv1'>
|
||||
<refmeta>
|
||||
<refentrytitle>ICV</refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
<refmiscinfo class='source'>BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class='manual'>BRL-CAD</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>icv</refname>
|
||||
<refpurpose>Convert images to and from various formats</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv xml:id='synopsis'>
|
||||
<cmdsynopsis>
|
||||
<command>icv</command>
|
||||
<arg choice='opt'>-h</arg>
|
||||
<arg choice='opt'>-i <replaceable>file</replaceable></arg>
|
||||
<arg choice='opt'>--input-format <replaceable>fmt</replaceable></arg>
|
||||
<arg choice='opt'>-o <replaceable>file</replaceable></arg>
|
||||
<arg choice='opt'>--output-format <replaceable>fmt</replaceable></arg>
|
||||
<arg choice='opt'>-w <replaceable>width</replaceable></arg>
|
||||
<arg choice='opt'><replaceable>input_file</replaceable></arg>
|
||||
<arg choice='opt'><replaceable>output_file</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
|
||||
<refsection xml:id='description'>
|
||||
<title>DESCRIPTION</title>
|
||||
<para>
|
||||
<command>icv</command> is a tool to convert images to and from a variety of
|
||||
image formats. Currently support formats include:
|
||||
|
||||
<table>
|
||||
<title>Supported ICV Image Formats</title>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Format</entry>
|
||||
<entry>Extension</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>PIX - pixel sequence of R/G/B values stored as unsigned chars.</entry>
|
||||
<entry>pix</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Double PIX - double precision pixel sequence</entry>
|
||||
<entry>dpix</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Portable Network Graphics</entry>
|
||||
<entry>png</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>PPM - "lowest common denominator" Netbpm color iamge format</entry>
|
||||
<entry>ppm</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>BW - black and white image data</entry>
|
||||
<entry>bw</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>(TODO) Utah Raster Toolkit Run-Length Encoded (RLE)</entry>
|
||||
<entry>rle</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='options'>
|
||||
<title>OPTIONS</title>
|
||||
<para>
|
||||
File types will be deduced unless explicitly specfied with the <option>input-format</option>
|
||||
and/or <option>output-format</option> options.
|
||||
|
||||
For file types like PIX that do not encode dimensional information, <command>icv</command>
|
||||
will attempt to guess the image size based on various assumptions (a square image, known sizes
|
||||
for image displays, paper sizes at various dots-per-inch, etc.). If the users does know
|
||||
the correct image width and height, they may be specified with the <option>w</option> and
|
||||
<option>n</option> options.
|
||||
</para>
|
||||
|
||||
<variablelist remap='TP'>
|
||||
<varlistentry>
|
||||
<term><option>-h</option>, <option>--help</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Print help and exit.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-i</option> <replaceable>file</replaceable>, <option>--input</option> <replaceable>file</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specify an input file. If none is specified, the first non-option-related argument will be used as the input file name.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-o</option> <replaceable>file</replaceable>, <option>--output</option> <replaceable>file</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specify an input file. If none is specified, the second non-option-related argument will be used as the output file name.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-w</option> <replaceable>#</replaceable>, <option>--width</option> <replaceable>#</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specify the width of the input image. Useful for file types such as PIX that do not encode explicit size information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-n</option> <replaceable>#</replaceable>, <option>--height</option> <replaceable>#</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specify the height of the input image. Useful for file types such as PIX that do not encode explicit size information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--input-format</option> <replaceable>fmt</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Explicitly specify input file format.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--output-format</option> <replaceable>fmt</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Explicitly specify output file format.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='example'>
|
||||
<title>EXAMPLE</title>
|
||||
<literallayout remap='RS'>
|
||||
icv -w 1024 -n 512 tank.pix tank.png
|
||||
</literallayout>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='see_also'>
|
||||
<title>SEE ALSO</title>
|
||||
<para>
|
||||
<citerefentry><refentrytitle>pix</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
<citerefentry><refentrytitle>bw</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='author'>
|
||||
<title>AUTHOR</title>
|
||||
<para>
|
||||
Clifford Yapp
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='copyright'>
|
||||
<title>COPYRIGHT</title>
|
||||
<para>
|
||||
This software is Copyright (c) 1989-2016 by the United States
|
||||
Government as represented by U.S. Army Research Laboratory.
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='bug_reports'>
|
||||
<title>BUG REPORTS</title>
|
||||
<para>
|
||||
Reports of bugs or problems should be submitted via electronic
|
||||
mail to <devs@brlcad.org>.
|
||||
</para>
|
||||
</refsection>
|
||||
</refentry>
|
||||
|
||||
@@ -365,13 +365,6 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-z</option></term>
|
||||
<listitem>
|
||||
<para>Enables OpenCL accelerated raytracing (OpenCL must be enabled at compilation time for this option to be present.)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-A #</option></term>
|
||||
<listitem>
|
||||
|
||||
@@ -348,7 +348,8 @@ as a region.
|
||||
"matname" is either a NULL pointer, or a pointer to a string
|
||||
containing the material property name.
|
||||
"matparm" is either a NULL pointer, or a pointer to a string
|
||||
containing the material property parameter information specific to that material.
|
||||
containing the material property parameter information,
|
||||
which is material-specific (and still experimental).
|
||||
Color is passed as an array of three unsigned chars in "rgb".
|
||||
Color "inherit" is a boolean, and if true, the color and material
|
||||
properties will be passed from upper-level objects to lower-level
|
||||
|
||||
@@ -22,8 +22,6 @@ set_target_properties(attr_std_list_xml PROPERTIES FOLDER "DocBook")
|
||||
set(man5_EN
|
||||
dsp.xml
|
||||
${CMAKE_CURRENT_BINARY_DIR}/attributes.xml
|
||||
burst_point_library.xml
|
||||
burst_shotline_files.xml
|
||||
bw.xml
|
||||
cmap.xml
|
||||
pix.xml
|
||||
|
||||
@@ -1,251 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<refentry xmlns='http://docbook.org/ns/docbook' version='5.0' xml:lang='en' xml:id='burst_point_library'>
|
||||
<refmeta>
|
||||
<refentrytitle>Burst Point Library File Format</refentrytitle>
|
||||
<manvolnum>5</manvolnum>
|
||||
<refmiscinfo class='source'>BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class='manual'>BRL-CAD</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>burst_point_library</refname>
|
||||
<refpurpose>Data output by the <command>burst-file</command> command from the burst tool.</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsection xml:id='format'>
|
||||
<title>FORMAT</title>
|
||||
<para>
|
||||
|
||||
Burst point library files are composed of single-line records. Each line begins with a
|
||||
digit that identifies the type of record it represents. The file is composed of one or more runs that
|
||||
begin with a run header. Each shotline that intersects the target will result in a shotline header that is
|
||||
followed by one or more shotline intersection records. If a burst point occurs along a shotline, the burst ray header will
|
||||
immediately follow that shotline's last intersection record. Each burst ray header records will be
|
||||
immediately followed by burst ray intersection records, one for each ray that strikes a critical component.
|
||||
|
||||
<table>
|
||||
<title>Burst Point Library File Format</title>
|
||||
<tgroup cols="3">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Record Description</entry>
|
||||
<entry>Field Format</entry>
|
||||
<entry>Field Description</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
<entry>run header</entry>
|
||||
<entry>'1'</entry>
|
||||
<entry>record number 1</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f9.4</entry>
|
||||
<entry>attack azimuth (degrees)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.4</entry>
|
||||
<entry>attack elevation (degrees)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f5.2</entry>
|
||||
<entry>burst distance</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f10.2</entry>
|
||||
<entry>projected area associated with burst point</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,6a</entry>
|
||||
<entry>units (mm,cm,inches,feet,meters)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f9.6</entry>
|
||||
<entry>ray solid angle (steradians)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>shotline header</entry>
|
||||
<entry>'2'</entry>
|
||||
<entry>record number 2</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.3</entry>
|
||||
<entry>Y' coordinate of shotline</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.3</entry>
|
||||
<entry>Z' coordinate of shotline</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>shotline intersections</entry>
|
||||
<entry>'3'</entry>
|
||||
<entry>record number 3</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.2</entry>
|
||||
<entry>X' coordinate of component intersection</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.2</entry>
|
||||
<entry>line-of-sight thickness of component</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,i4</entry>
|
||||
<entry>component code number</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,i2</entry>
|
||||
<entry>space code</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.3</entry>
|
||||
<entry>sine of fallback angle of exit normal</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>rotation angle of exit normal (degrees)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.3</entry>
|
||||
<entry>cosine of obliquity angle at entry</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,a1</entry>
|
||||
<entry>burst flag ('1' for yes, '0' for no)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>burst ray header</entry>
|
||||
<entry>'4'</entry>
|
||||
<entry>record number 4</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.3</entry>
|
||||
<entry>azimuth angle WRT shotline (radians)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.3</entry>
|
||||
<entry>sine of elevation angle WRT shotline</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,i6</entry>
|
||||
<entry>sequential ray number for this burst point</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>burst ray intersections</entry>
|
||||
<entry>'5'</entry>
|
||||
<entry>record number 5</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f10.3</entry>
|
||||
<entry>distance to first contact with component</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f9.3</entry>
|
||||
<entry>line-of-sight thickness of component</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f9.3</entry>
|
||||
<entry>normal thickness of component</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,i4</entry>
|
||||
<entry>space code</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>ix,i4</entry>
|
||||
<entry>component code number</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>ix,f6.3</entry>
|
||||
<entry>cosine of obliquity angle at entry</entry>
|
||||
</row>
|
||||
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</para>
|
||||
</refsection>
|
||||
<refsection xml:id='see_also'>
|
||||
<title>SEE ALSO</title>
|
||||
<para>
|
||||
<citerefentry><refentrytitle>burst</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='author'>
|
||||
<title>AUTHOR</title>
|
||||
<para>BRL-CAD Team</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='copyright'>
|
||||
<title>COPYRIGHT</title>
|
||||
<para>
|
||||
This software is Copyright (c) 1989-2016 by the United States
|
||||
Government as represented by U.S. Army Research Laboratory.
|
||||
</para>
|
||||
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='bug_reports'>
|
||||
<title>BUG REPORTS</title>
|
||||
<para>
|
||||
Reports of bugs or problems should be submitted via electronic
|
||||
mail to <devs@brlcad.org>.
|
||||
</para>
|
||||
</refsection>
|
||||
</refentry>
|
||||
@@ -1,198 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<refentry xmlns='http://docbook.org/ns/docbook' version='5.0' xml:lang='en' xml:id='burst_shotline_5'>
|
||||
<refmeta>
|
||||
<refentrytitle>Burst Shotline File Format</refentrytitle>
|
||||
<manvolnum>5</manvolnum>
|
||||
<refmiscinfo class='source'>BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class='manual'>BRL-CAD</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>burst_shotline_files</refname>
|
||||
<refpurpose>Data output by the <command>shotline-file</command> command from the burst tool.</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsection xml:id='format'>
|
||||
<title>FORMAT</title>
|
||||
<para>
|
||||
|
||||
Burst shotline files are composed of single-line records. Each line begins with a
|
||||
digit that identifies the type of record it represents. The file is composed of one or more runs that
|
||||
begin with a run header. Each shotline that intersects the target will result in a shotline header that is
|
||||
followed by one or more shotline intersection records.
|
||||
|
||||
<table>
|
||||
<title>Shotline File Format</title>
|
||||
<tgroup cols="3">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Record Description</entry>
|
||||
<entry>Field Format</entry>
|
||||
<entry>Field Description</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
<entry>run header</entry>
|
||||
<entry>'1'</entry>
|
||||
<entry>record number 1</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f9.4</entry>
|
||||
<entry>attack azimuth (degrees)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.4</entry>
|
||||
<entry>attack elevation (degrees)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>shotline separation</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>maximum Y' coordinate of target</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>minimum Y' coordinate of target</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>maximum Z' coordinate of target</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>minimum Z' coordinate of target</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,6a</entry>
|
||||
<entry>units (mm,cm,inches,feet,meters)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>shotline header</entry>
|
||||
<entry>'2'</entry>
|
||||
<entry>record number 2</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.3</entry>
|
||||
<entry>Y' coordinate of shotline</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.3</entry>
|
||||
<entry>Z' coordinate of shotline</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>shotline intersections</entry>
|
||||
<entry>'3'</entry>
|
||||
<entry>record number 3</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.2</entry>
|
||||
<entry>X' coordinate of component intersection</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.3</entry>
|
||||
<entry>sine of fallback angle of exit normal</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>rotation angle of exit normal in degrees</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,i4</entry>
|
||||
<entry>component code number</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.2</entry>
|
||||
<entry>normal thickness of component</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f8.2</entry>
|
||||
<entry>line-of-sight thickness of component</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,i2</entry>
|
||||
<entry>space code following component</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>obliquity angle at entry to component in degrees</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>1x,f7.2</entry>
|
||||
<entry>obliquity angle at exit from component in degrees</entry>
|
||||
</row>
|
||||
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</para>
|
||||
</refsection>
|
||||
<refsection xml:id='see_also'>
|
||||
<title>SEE ALSO</title>
|
||||
<para>
|
||||
<citerefentry><refentrytitle>burst</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='author'>
|
||||
<title>AUTHOR</title>
|
||||
<para>BRL-CAD Team</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='copyright'>
|
||||
<title>COPYRIGHT</title>
|
||||
<para>
|
||||
This software is Copyright (c) 1989-2016 by the United States
|
||||
Government as represented by U.S. Army Research Laboratory.
|
||||
</para>
|
||||
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='bug_reports'>
|
||||
<title>BUG REPORTS</title>
|
||||
<para>
|
||||
Reports of bugs or problems should be submitted via electronic
|
||||
mail to <devs@brlcad.org>.
|
||||
</para>
|
||||
</refsection>
|
||||
</refentry>
|
||||
@@ -130,7 +130,6 @@ set(mann_EN
|
||||
loadtk.xml
|
||||
lookat.xml
|
||||
ls.xml
|
||||
lt.xml
|
||||
make.xml
|
||||
make_pnts.xml
|
||||
mater.xml
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
<article xmlns="http://docbook.org/ns/docbook" version="5.0">
|
||||
<title>BRL-CAD Manual Pages</title>
|
||||
<title>MGED Commands - Manual Pages</title>
|
||||
|
||||
|
||||
|
||||
<para>
|
||||
This is BRL-CAD's tool for viewing manual pages for commands. To bring up
|
||||
the manual page for a specific command select it from the list to the
|
||||
left of this welcome message.
|
||||
</para>
|
||||
<para>
|
||||
By default, the list will itemize GED commands if the man viewer is
|
||||
launched from MGED or Archer, and command line commands if the brlman
|
||||
program is run directly from the command line. To specify a specific
|
||||
section of manual pages to list with brlman, use the -S option on the
|
||||
command line to specify 1, 3, 5 or n (with n being GED commands.)
|
||||
</para>
|
||||
This is MGED's help system for commands available at the MGED
|
||||
prompt. To bring up the manual page for a specific command
|
||||
select it from the list to the left of this welcome message.
|
||||
</para>
|
||||
<para>
|
||||
These manual pages are written in Docbook format and displayed
|
||||
as HTML.
|
||||
|
||||
@@ -683,21 +683,6 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<variablelist>
|
||||
<cmdsynopsis>
|
||||
<command>csg</command>
|
||||
</cmdsynopsis>
|
||||
<varlistentry>
|
||||
<term></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Take the specified B-Rep and attempt to generate a CSG
|
||||
implicit boolean tree that will define the same solid
|
||||
shape.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id='examples'>
|
||||
|
||||
+103
-126
@@ -1,157 +1,134 @@
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="draw">
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle>DRAW</refentrytitle>
|
||||
<manvolnum>nged</manvolnum>
|
||||
<refmiscinfo class="source">BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class="manual">BRL-CAD User Commands</refmiscinfo>
|
||||
</refmeta>
|
||||
<refmeta>
|
||||
<refentrytitle>DRAW</refentrytitle>
|
||||
<manvolnum>nged</manvolnum>
|
||||
<refmiscinfo class="source">BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class="manual">BRL-CAD User Commands</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv xml:id="name">
|
||||
<refname>draw</refname>
|
||||
<refpurpose>Adds <emphasis>objects</emphasis>> to the display list so that they will appear on the
|
||||
<emphasis>MGED</emphasis> display. The <command>e</command> command is a synonym for <command>draw</command>.
|
||||
</refpurpose>
|
||||
</refnamediv>
|
||||
<refnamediv xml:id="name">
|
||||
<refname>draw</refname>
|
||||
<refpurpose>Adds <emphasis>objects</emphasis>> to the display list so that they will appear on the
|
||||
<emphasis>MGED</emphasis> display. The <command>e</command> command is a synonym for <command>draw</command>.
|
||||
</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<!-- body begins here -->
|
||||
<refsynopsisdiv xml:id="synopsis">
|
||||
<cmdsynopsis sepchar=" ">
|
||||
<command>draw</command>
|
||||
<!-- body begins here -->
|
||||
<refsynopsisdiv xml:id="synopsis">
|
||||
<cmdsynopsis sepchar=" ">
|
||||
<command>draw</command>
|
||||
|
||||
<arg choice="opt" rep="norepeat">-A <replaceable>attribute name/value pairs</replaceable></arg>
|
||||
<arg choice="opt" rep="norepeat">-s</arg>
|
||||
<arg choice="opt" rep="norepeat">-A -o<replaceable>attribute name/value pairs</replaceable></arg>
|
||||
<arg choice="opt" rep="norepeat">-C#/#/#</arg>
|
||||
<arg choice="opt" rep="norepeat">-L #</arg>
|
||||
<arg choice="opt" rep="norepeat">-R</arg>
|
||||
<arg choice="opt" rep="norepeat">-S</arg>
|
||||
<arg choice="opt" rep="norepeat"><replaceable>-m1</replaceable></arg>
|
||||
<arg choice="req" rep="norepeat"><replaceable>objects</replaceable></arg>
|
||||
<arg choice="opt" rep="norepeat">-A <replaceable>attribute name/value pairs</replaceable></arg>
|
||||
<arg choice="opt" rep="norepeat">-s</arg>
|
||||
<arg choice="opt" rep="norepeat">-A -o<replaceable>attribute name/value pairs</replaceable></arg>
|
||||
<arg choice="opt" rep="norepeat">-C#/#/#</arg>
|
||||
<arg choice="opt" rep="norepeat">-L #</arg>
|
||||
<arg choice="opt" rep="norepeat"><replaceable>-m1</replaceable></arg>
|
||||
<arg choice="req" rep="norepeat"><replaceable>objects</replaceable></arg>
|
||||
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsection xml:id="description"><title>DESCRIPTION</title>
|
||||
<refsection xml:id="description"><title>DESCRIPTION</title>
|
||||
|
||||
<para>
|
||||
Adds <emphasis>objects</emphasis> to the display list so that they will appear on the
|
||||
MGED display. The <command>e</command> command is a synonym for draw.
|
||||
<para>Adds <emphasis>objects</emphasis>> to the display list so that they will appear on the MGED display. The <command>e</command> command is a synonym for draw.
|
||||
</para>
|
||||
<itemizedlist mark="bullet">
|
||||
<listitem>
|
||||
<para>
|
||||
<itemizedlist mark="bullet">
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-C</emphasis> option provides the user a way to specify a color that overrides all other
|
||||
color specifications including combination colors and region-id-based colors.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-s</emphasis> option specifies that subtracted and intersected objects should be drawn
|
||||
with shape lines rather than dot-dash lines.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-A</emphasis> option specifies that the arguments provided to this command are attribute
|
||||
name/value pairs, and only objects having the specified attributes and values are
|
||||
to be displayed. The default (without <emphasis>-o</emphasis>) is that only objects having all the
|
||||
specified attribute name/value pairs will be displayed.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-m1</emphasis> option will display BOTs shaded if the display manager is OpenGL and the
|
||||
zbuffer and lighting is enabled. To enable these settings, from the MGED GUI, choose
|
||||
"Modes/Display Manager/OpenGL", "Misc/Z-buffer" and "Misc/Lighting". If the zbuffer and lighting is
|
||||
already enabled, toggle them off then back on to ensure they are enabled.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-m1</emphasis> option will display BOTs shaded if the display manager is OpenGL and the
|
||||
zbuffer and lighting is enabled. To enable these settings, from the MGED GUI, choose
|
||||
"Modes/Display Manager/OpenGL", "Misc/Z-buffer" and "Misc/Lighting". If the zbuffer and lighting is
|
||||
already enabled, toggle them off then back on to ensure they are enabled.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-L</emphasis> option allows the user to specify a face count. BoT primitives with more
|
||||
faces than the user set threshold will be represented in wireframe drawing by their bounding boxes rather
|
||||
than the full BoT wireframe.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-R</emphasis> option tells draw to not change the view size when drawing new objects.
|
||||
Without this flag, <command>draw</command> will automatically size the view to make the new object(s)
|
||||
visible when the view was previously empty.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-S</emphasis> option tells draw to be
|
||||
"simplified" by skipping subtraction objects when drawing, not
|
||||
drawing NMG interior surfaces, and potentially more. Skipping
|
||||
subtractions is useful in situations where an object has many
|
||||
large objects subtracted from it but those objects have
|
||||
relatively minimal impact on the shape. This results in the
|
||||
default wireframe bearing little resemablance to the evaluated
|
||||
shape.
|
||||
</para>
|
||||
</listitem>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <emphasis>-M</emphasis> option tells draw to be "minimalist" by skipping subtraction objects when drawing.
|
||||
This is useful in situations where an object has many large objects subtracted from it but those objects have
|
||||
relatively minimal impact on the shape - this results in the wireframe bearing little resemablance to the
|
||||
evaluated shape.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</refsection>
|
||||
|
||||
</itemizedlist>
|
||||
</refsection>
|
||||
<refsection xml:id="examples"><title>EXAMPLES</title>
|
||||
|
||||
<refsection xml:id="examples">
|
||||
<title>EXAMPLES</title>
|
||||
<para>The following examples show the use of the <command>draw</command> command to draw particular objects,
|
||||
to specify color, to draw with shape lines rather than dot-dash lines, and to limit the objects to be drawn
|
||||
to those having specific attribute names and value pairs.
|
||||
</para>
|
||||
<example><title>Draw specific objects in the <emphasis>MGED</emphasis> display.</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><prompt>mged></prompt> <userinput>draw object1 object2</userinput></term>
|
||||
<listitem>
|
||||
<para><emphasis>Object1</emphasis> and <emphasis>object2</emphasis> are drawn in the <emphasis>MGED</emphasis> display.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</example>
|
||||
|
||||
<example><title>Specify the color used to draw the object.</title>
|
||||
|
||||
<para>
|
||||
The following examples show the use of the <command>draw</command> command to draw
|
||||
particular objects,
|
||||
to specify color, to draw with shape lines rather than dot-dash lines, and to limit the objects to be drawn
|
||||
to those having specific attribute names and value pairs.
|
||||
<prompt>mged></prompt><userinput>draw -C 255/255/255 object2</userinput>
|
||||
</para>
|
||||
<para>Object2 is drawn in white.
|
||||
</para>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>Draw specific objects in the <emphasis>MGED</emphasis> display.</title>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><prompt>mged></prompt> <userinput>draw object1 object2</userinput></term>
|
||||
<listitem>
|
||||
<para><emphasis>Object1</emphasis> and <emphasis>object2</emphasis> are drawn in the <emphasis>MGED</emphasis> display.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</example>
|
||||
<example><title>Limit the objects to be drawn to those having specific attribute names and value pairs.
|
||||
</title>
|
||||
|
||||
<example>
|
||||
<title>Specify the color used to draw the object.</title>
|
||||
<para>
|
||||
<prompt>mged></prompt><userinput>draw -C 255/255/255 object2</userinput>
|
||||
</para>
|
||||
<para>Object2 is drawn in white.
|
||||
</para>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>Limit the objects to be drawn to those having specific attribute names and value pairs.</title>
|
||||
<para>
|
||||
<prompt>mged></prompt><userinput>draw -A -o Comment {First comment} Comment {Second comment}</userinput>
|
||||
</para>
|
||||
<para>
|
||||
Objects having a Comment attribute with a value of either "First comment" or "Second comment" are drawn.
|
||||
</para>
|
||||
</example>
|
||||
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id="author">
|
||||
<title>AUTHOR</title>
|
||||
<para>BRL-CAD Team</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id="bug_reports">
|
||||
<title>BUG REPORTS</title>
|
||||
<para>
|
||||
Reports of bugs or problems should be submitted via electronic
|
||||
mail to <devs@brlcad.org>, or via the "cadbug.sh" script.
|
||||
<prompt>mged></prompt><userinput>draw -A -o Comment {First comment} Comment {Second comment}</userinput>
|
||||
</para>
|
||||
</refsection>
|
||||
<para>Objects having a Comment attribute with a value of either "First comment" or "Second comment" are drawn.
|
||||
</para>
|
||||
</example>
|
||||
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id="author"><title>AUTHOR</title><para>BRL-CAD Team</para></refsection>
|
||||
|
||||
<refsection xml:id="bug_reports"><title>BUG REPORTS</title>
|
||||
|
||||
<para>
|
||||
Reports of bugs or problems should be submitted via electronic
|
||||
mail to <devs@brlcad.org>, or via the "cadbug.sh" script.
|
||||
</para>
|
||||
</refsection>
|
||||
</refentry>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<refnamediv xml:id="name">
|
||||
<refname>expand</refname>
|
||||
<refpurpose>Performs matching of the <emphasis>shell globbing pattern</emphasis> with the names
|
||||
<refpurpose>Performs matching of the <emphasis>regular_expression</emphasis> with the names
|
||||
of all the objects in the database. It returns all those that successfully match.
|
||||
</refpurpose>
|
||||
</refnamediv>
|
||||
@@ -19,14 +19,14 @@ of all the objects in the database. It returns all those that successfully match
|
||||
<cmdsynopsis sepchar=" ">
|
||||
<command>expand</command>
|
||||
|
||||
<arg choice="req" rep="norepeat"><replaceable>globbing_expression</replaceable></arg>
|
||||
<arg choice="req" rep="norepeat"><replaceable>regular_expression</replaceable></arg>
|
||||
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsection xml:id="description"><title>DESCRIPTION</title>
|
||||
|
||||
<para>Performs matching of the <emphasis>globbing_expression</emphasis> with the names
|
||||
<para>Performs matching of the <emphasis>regular_expression</emphasis> with the names
|
||||
of all the objects in the database. It returns all those that successfully match.
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
<command>lc</command>
|
||||
<group choice="opt" rep="norepeat">
|
||||
<arg choice="plain" rep="norepeat">-d</arg>
|
||||
<arg choice="plain" rep="norepeat">-m</arg>
|
||||
<arg choice="plain" rep="norepeat">-s</arg>
|
||||
</group>
|
||||
<arg choice="opt" rep="norepeat">-r</arg>
|
||||
@@ -70,18 +69,6 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-m</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies to list only regions with shared 'region_id' values where one
|
||||
or more of the objects in the set of objects defined by shared 'region_id'
|
||||
value reports a different 'material_id' and/or 'los'. Essentially, this
|
||||
allows users to quickly find and resolve inconsistent 'material_id' and
|
||||
'los' settings within a 'region_id' group.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-r</option></term>
|
||||
<listitem>
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="lt">
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle>LT</refentrytitle>
|
||||
<manvolnum>nged</manvolnum>
|
||||
<refmiscinfo class="source">BRL-CAD</refmiscinfo>
|
||||
<refmiscinfo class="manual">BRL-CAD User Commands</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv xml:id="name">
|
||||
<refname>lt</refname>
|
||||
<refpurpose>Generates a list of the child objects of a combination.</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<!-- body begins here -->
|
||||
<refsynopsisdiv xml:id="synopsis">
|
||||
<cmdsynopsis sepchar=" ">
|
||||
<command>lt</command>
|
||||
<arg choice="opt" rep="norepeat"><replaceable>char</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsection xml:id="description"><title>DESCRIPTION</title>
|
||||
|
||||
<para>
|
||||
The <command>lt</command> command generates a list of the children found
|
||||
in a combination object specified by the user. By default it will print
|
||||
a curly bracket bound set of objects and their boolean flags. If the <option>-c</option>
|
||||
option is specified, it will instead use the character supplied to the <option>-c</option>
|
||||
option as the separator in the list of objects. In the latter mode the
|
||||
boolean flags will not be printed.
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id="examples"><title>EXAMPLES</title>
|
||||
|
||||
<example><title>Tcl Output</title>
|
||||
<literallayout class="normal">
|
||||
mged> lt component
|
||||
{u bed} {u frame} {u cab} {u suspension} {u misc} {u power.train}
|
||||
</literallayout>
|
||||
</example>
|
||||
|
||||
<example><title>CSV Output</title>
|
||||
<literallayout class="normal">
|
||||
mged> lt -c , component
|
||||
bed,frame,cab,suspension,misc,power.train
|
||||
</literallayout>
|
||||
</example>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id="author"><title>AUTHOR</title>
|
||||
<para>BRL-CAD Team</para>
|
||||
</refsection>
|
||||
|
||||
<refsection xml:id="bug_reports"><title>BUG REPORTS</title>
|
||||
|
||||
<para>
|
||||
Reports of bugs or problems should be submitted via electronic
|
||||
mail to <devs@brlcad.org>, or via the "cadbug.sh" script.
|
||||
</para>
|
||||
</refsection>
|
||||
</refentry>
|
||||
@@ -550,10 +550,14 @@
|
||||
<listitem>
|
||||
<para>
|
||||
The below operator applies the expression to every
|
||||
object below the matching object in the tree
|
||||
hierarchy. E.g. searching with -below -name start\*
|
||||
on /component/region.r/start_comb.c/prim1.s would
|
||||
return prim1.s, as the object below start_comb.c
|
||||
object above the current full path to that object,
|
||||
and returns TRUE if one or more of them satisfies
|
||||
the expression. E.g., searching with -below -name
|
||||
s\* on /component/region.r/start_comb.c/prim1.s
|
||||
would return TRUE for /component and
|
||||
/component/region.r as start_comb.c is below both of
|
||||
them, but would return FALSE for any deeper objects
|
||||
(i.e., prim1.s in this example).
|
||||
</para>
|
||||
<para>
|
||||
Optionally, inequality and equality constraints on
|
||||
@@ -577,14 +581,12 @@
|
||||
<listitem>
|
||||
<para>
|
||||
The above operator applies the expression to every
|
||||
object above the current full path to that object,
|
||||
and returns TRUE if one or more of them satisfies
|
||||
the expression. E.g., searching with -above -name
|
||||
s\* on /component/region.r/start_comb.c/prim1.s
|
||||
would return TRUE for /component and
|
||||
/component/region.r as start_comb.c is below both of
|
||||
them, but would return FALSE for any deeper objects
|
||||
(i.e., prim1.s in this example).
|
||||
object below the current object in the tree
|
||||
hierarchy. It finds objects that are above a given
|
||||
expression. In effect, it does a "mini-search" up
|
||||
the tree using the current object path as a starting
|
||||
point and returns TRUE if the expression is
|
||||
satisfied by one or more objects in the sub-tree.
|
||||
</para>
|
||||
<para>
|
||||
Optionally, inequality and equality constraints on
|
||||
@@ -848,17 +850,6 @@
|
||||
</para>
|
||||
</example>
|
||||
|
||||
<example><title>Find All Combs Containing At Least One of Two Objects (dbfind)</title>
|
||||
|
||||
<para>
|
||||
<userinput>search |. ( -depth 0 -above=1 -name obj1 ) -or ( -depth 0 -above=1 -name obj2 ) </userinput>
|
||||
</para>
|
||||
<para>
|
||||
Prints all combs immediately above either obj1 or obj2. This more or less mimics the results of
|
||||
the dbfind command, although it will be somewhat slower (noticably so on large databases.)
|
||||
</para>
|
||||
</example>
|
||||
|
||||
<example><title>Finding all Plate-Mode BoT Objects</title>
|
||||
|
||||
<para>
|
||||
|
||||
@@ -129,6 +129,9 @@ on the command line.
|
||||
to view coordinates with perspective.
|
||||
</DD>
|
||||
<P>
|
||||
<DT><I>viewName</I> <A NAME="pov"><B>pov</B></A></DT>
|
||||
<DD>Set the point of view (experimental).</DD>
|
||||
<P>
|
||||
<DT><I>viewName</I> <A NAME="rmat"><B>rmat</B></A> [<I>matrix</I>]</DT>
|
||||
<DD>Set/get the rotation matrix.</DD>
|
||||
<P>
|
||||
|
||||
@@ -307,9 +307,15 @@
|
||||
<TD WIDTH="19%" VALIGN="MIDDLE">
|
||||
<FONT SIZE=2><P></FONT><A HREF="#permute"><FONT SIZE=2>permute</FONT></A></TD>
|
||||
<TD WIDTH="20%" VALIGN="MIDDLE">
|
||||
<FONT SIZE=2><P></FONT><A HREF="#pl"><FONT SIZE=2>pl</FONT></A></TD>
|
||||
<TD WIDTH="22%" VALIGN="MIDDLE">
|
||||
<FONT SIZE=2><P></FONT><A HREF="#plot"><FONT SIZE=2>plot</FONT></A></TD>
|
||||
<TD WIDTH="21%" VALIGN="MIDDLE">
|
||||
<FONT SIZE=2><P></FONT><A HREF="#polybinout"><FONT SIZE=2>polybinout</FONT></A></TD>
|
||||
</TR>
|
||||
<TR><TD WIDTH="19%" VALIGN="MIDDLE">
|
||||
<TR><TD WIDTH="18%" VALIGN="MIDDLE">
|
||||
<FONT SIZE=2><P></FONT><A HREF="#pov"><FONT SIZE=2>pov</FONT></A></TD>
|
||||
<TD WIDTH="19%" VALIGN="MIDDLE">
|
||||
<FONT SIZE=2><P></FONT><A HREF="#prcolor"><FONT SIZE=2>prcolor</FONT></A></TD>
|
||||
<TD WIDTH="20%" VALIGN="MIDDLE">
|
||||
<FONT SIZE=2><P></FONT><A HREF="#prefix"><FONT SIZE=2>prefix</FONT></A></TD>
|
||||
@@ -2379,6 +2385,16 @@ foo.r_xpand/R
|
||||
|
||||
</B><FONT SIZE=2><P>-- Rearrange the vertices of the currently edited <I>ARB</I> such that vertex #3 becomes vertex #1, vertex #2 remains #2, and vertex #1 becomes #3. </P></DIR>
|
||||
|
||||
<P><HR ALIGN="RIGHT"></P>
|
||||
</FONT><B><DL>
|
||||
<DT><A NAME="pl"></A>pl</B> [<I>-float</I>] [<I>-zclip</I>] [<I>-2d</I>] [<I>-grid</I>] <I>out_file</I> | "|" <I>filter</DT>
|
||||
</I><DD>The "pl" command creates a UNIX plot of the current MGED display. If an <I>output_file</I> is specified, the plot is stored in that file. If a <I>filter</I> is specified, the output is sent to that <I>filter</I>. The <I>-float</I> option requests a plot file with real numbers rather than integers. The <I>-zclip</I> option requests that the plot be clipped to the viewing cube in the Z-direction. The <I>-2d</I> option requests a two-dimensional plot (the default is 3D). The <I>-grid</I> option is intended to include a grid in the plot, but is currently not implemented. This command uses the <I>dm-plot</I> display manager. The <A HREF="#plot">plot</A> command performs the same function, but does not use the <I>dm-plot</I> display manager.</DD>
|
||||
<FONT SIZE=4><DT>Examples:</DT>
|
||||
</FONT><TT><DD>mged></TT> <B>pl -float | pldebug</DD>
|
||||
</DL><DIR>
|
||||
|
||||
</B><FONT SIZE=2><P>-- Create a UNIX plot of the current MGED display and pipe the results to the <I>pldebug</I> command.</P></DIR>
|
||||
|
||||
<P><HR ALIGN="RIGHT"></P>
|
||||
</FONT><B><DL>
|
||||
<DT><A NAME="plot"></A>plot</B> [<I>-float</I>] [<I>-zclip</I>] [<I>-2d</I>] [<I>-grid</I>] <I>out_file</I> | "|" <I>filter</DT>
|
||||
@@ -2389,6 +2405,15 @@ foo.r_xpand/R
|
||||
|
||||
</B><FONT SIZE=2><P>-- Create a UNIX plot of the current MGED display and pipe the results to the <I>pldebug</I> command. </P></DIR>
|
||||
|
||||
<P><HR ALIGN="RIGHT"></P>
|
||||
</FONT><B><DL>
|
||||
<DT><A NAME="polybinout"></A>polybinout</B> <I>file</DT>
|
||||
</I><DD>Store vlist polygons into polygon file (experimental).</DD>
|
||||
</DL>
|
||||
<FONT SIZE=2><P><HR ALIGN="RIGHT"></P>
|
||||
</FONT><B><DL>
|
||||
<DT><A NAME="pov"></A>pov</B> <I>args</DT>
|
||||
</I><DD>Set the point-of-view (experimental).</DD>
|
||||
</DL>
|
||||
<FONT SIZE=2><P><HR ALIGN="RIGHT"></P>
|
||||
</FONT><B><DL>
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
joint
|
||||
polybinout
|
||||
pov
|
||||
solids_on_ray
|
||||
|
||||
@@ -3827,6 +3827,7 @@
|
||||
*** [[file:../src/libged/comb_std.c][comb_std.c]]
|
||||
*** [[file:../src/libged/mater.c][mater.c]]
|
||||
*** [[file:../src/libged/prcolor.c][prcolor.c]]
|
||||
*** [[file:../src/libged/pov.c][pov.c]]
|
||||
*** [[file:../src/libged/inside.c][inside.c]]
|
||||
*** [[file:../src/libged/rot.c][rot.c]]
|
||||
*** [[file:../src/libged/bot_face_sort.c][bot_face_sort.c]]
|
||||
@@ -4096,6 +4097,7 @@
|
||||
*** [[file:../src/libged/nmg_mm.c][nmg_mm.c]]
|
||||
*** [[file:../src/libged/red.c][red.c]]
|
||||
*** [[file:../src/libged/nmg_kill_f.c][nmg_kill_f.c]]
|
||||
*** [[file:../src/libged/polybinout.c][polybinout.c]]
|
||||
*** [[file:../src/libged/zoom][zoom]]
|
||||
**** [[file:../src/libged/zoom/zoom.c][zoom.c]]
|
||||
*** [[file:../src/libged/pmodel2view.c][pmodel2view.c]]
|
||||
|
||||
+4
-4
@@ -57,13 +57,13 @@ BN_EXPORT extern int bn_decode_vect(vect_t v,
|
||||
BN_EXPORT extern int bn_decode_hvect(hvect_t v,
|
||||
const char *str);
|
||||
BN_EXPORT extern void bn_encode_mat(struct bu_vls *vp,
|
||||
const mat_t m, int clamp);
|
||||
const mat_t m);
|
||||
BN_EXPORT extern void bn_encode_quat(struct bu_vls *vp,
|
||||
const quat_t q, int clamp);
|
||||
const quat_t q);
|
||||
BN_EXPORT extern void bn_encode_vect(struct bu_vls *vp,
|
||||
const vect_t v, int clamp);
|
||||
const vect_t v);
|
||||
BN_EXPORT extern void bn_encode_hvect(struct bu_vls *vp,
|
||||
const hvect_t v, int clamp);
|
||||
const hvect_t v);
|
||||
|
||||
|
||||
__END_DECLS
|
||||
|
||||
+102
-85
@@ -67,27 +67,41 @@ extern "C++" {
|
||||
*/
|
||||
class BREP_EXPORT BBNode {
|
||||
public:
|
||||
explicit BBNode(const ON_BoundingBox &node, const CurveTree *ct = NULL);
|
||||
BBNode(const CurveTree *ct,
|
||||
BBNode();
|
||||
BBNode(const ON_BoundingBox &node);
|
||||
BBNode(CurveTree *ct);
|
||||
BBNode(CurveTree *ct, const ON_BoundingBox &node);
|
||||
BBNode(CurveTree *ct,
|
||||
const ON_BoundingBox &node,
|
||||
const ON_BrepFace *face,
|
||||
const ON_Interval &u,
|
||||
const ON_Interval &v,
|
||||
bool checkTrim,
|
||||
bool trimmed);
|
||||
bool checkTrim = false,
|
||||
bool trimmed = false);
|
||||
~BBNode();
|
||||
|
||||
/** List of all children of a given node */
|
||||
std::vector<BBNode *> *m_children;
|
||||
|
||||
/** Curve Tree associated with the parent Surface Tree */
|
||||
CurveTree *m_ctree;
|
||||
|
||||
/** Bounding Box */
|
||||
ON_BoundingBox m_node;
|
||||
|
||||
/** Test if this node is a leaf node in the hierarchy */
|
||||
bool isLeaf() const;
|
||||
bool isLeaf();
|
||||
|
||||
/** Return all leaves below this node that are leaf nodes */
|
||||
void getLeaves(std::list<const BBNode *> &out_leaves) const;
|
||||
void getLeaves(std::list<BBNode *> &out_leaves);
|
||||
|
||||
/** Functions to add and remove child nodes from this node. */
|
||||
void addChild(const ON_BoundingBox &child);
|
||||
void addChild(BBNode *child);
|
||||
void removeChild(BBNode *child);
|
||||
|
||||
/** Report the depth of this node in the hierarchy */
|
||||
int depth() const;
|
||||
int depth();
|
||||
|
||||
/** Get 2 points defining a bounding box
|
||||
*
|
||||
@@ -105,28 +119,8 @@ extern "C++" {
|
||||
* min
|
||||
* @endverbatim
|
||||
*/
|
||||
void GetBBox(float *min, float *max) const;
|
||||
void GetBBox(double *min, double *max) const;
|
||||
|
||||
/** Test whether a ray intersects the 3D bounding volume of the
|
||||
* node - if so, and node is not a leaf node, query children. If
|
||||
* leaf node, and intersects, add to list.
|
||||
*/
|
||||
bool intersectsHierarchy(const ON_Ray &ray, std::list<const BBNode *> &results) const;
|
||||
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt) const;
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v) const;
|
||||
int getLeavesBoundingPoint(const ON_3dPoint &pt, std::list<const BBNode *> &out) const;
|
||||
bool isTrimmed(const ON_2dPoint &uv, const BRNode **closest, double &closesttrim, double within_distance_tol) const;
|
||||
|
||||
void BuildBBox();
|
||||
bool prepTrims();
|
||||
|
||||
/** List of all children of a given node */
|
||||
std::vector<BBNode *> * const m_children;
|
||||
|
||||
/** Bounding Box */
|
||||
ON_BoundingBox m_node;
|
||||
void GetBBox(float *min, float *max);
|
||||
void GetBBox(double *min, double *max);
|
||||
|
||||
/** Surface Information */
|
||||
const ON_BrepFace *m_face;
|
||||
@@ -145,74 +139,91 @@ extern "C++" {
|
||||
/* Normal at the m_estimate point */
|
||||
ON_3dVector m_normal;
|
||||
|
||||
private:
|
||||
BBNode(const BBNode &source);
|
||||
BBNode &operator=(const BBNode &source);
|
||||
|
||||
void removeChild(BBNode *child);
|
||||
|
||||
bool intersectedBy(const ON_Ray &ray, double *tnear = NULL, double *tfar = NULL) const;
|
||||
/** Test whether a ray intersects the 3D bounding volume of the
|
||||
* node - if so, and node is not a leaf node, query children. If
|
||||
* leaf node, and intersects, add to list.
|
||||
*/
|
||||
bool intersectedBy(ON_Ray &ray, double *tnear = NULL, double *tfar = NULL);
|
||||
bool intersectsHierarchy(ON_Ray &ray, std::list<BBNode *> &results);
|
||||
|
||||
/** Report if a given uv point is within the uv boundaries defined
|
||||
* by a node.
|
||||
*/
|
||||
bool containsUV(const ON_2dPoint &uv) const;
|
||||
bool containsUV(const ON_2dPoint &uv);
|
||||
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt);
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v);
|
||||
int getLeavesBoundingPoint(const ON_3dPoint &pt, std::list<BBNode *> &out);
|
||||
bool isTrimmed(const ON_2dPoint &uv, BRNode **closest, double &closesttrim, double within_distance_tol) const;
|
||||
bool doTrimming() const;
|
||||
void getTrimsAbove(const ON_2dPoint &uv, std::list<const BRNode *> &out_leaves) const;
|
||||
|
||||
const BBNode *closer(const ON_3dPoint &pt, const BBNode *left, const BBNode *right) const;
|
||||
void getTrimsAbove(const ON_2dPoint &uv, std::list<BRNode *> &out_leaves) const;
|
||||
void BuildBBox();
|
||||
bool prepTrims();
|
||||
|
||||
/** Curve Tree associated with the parent Surface Tree */
|
||||
const CurveTree * const m_ctree;
|
||||
|
||||
std::list<const BRNode *> * const m_trims_above;
|
||||
private:
|
||||
BBNode *closer(const ON_3dPoint &pt, BBNode *left, BBNode *right);
|
||||
std::list<BRNode *> *m_trims_above;
|
||||
};
|
||||
|
||||
inline
|
||||
BBNode::BBNode(const ON_BoundingBox &node, const CurveTree *ct) :
|
||||
m_children(new std::vector<BBNode *>),
|
||||
m_node(node),
|
||||
m_face(NULL),
|
||||
m_u(),
|
||||
m_v(),
|
||||
m_checkTrim(true),
|
||||
m_trimmed(false),
|
||||
m_estimate(),
|
||||
m_normal(),
|
||||
m_ctree(ct),
|
||||
m_trims_above(new std::list<const BRNode *>)
|
||||
{
|
||||
for (int i = 0; i < 3; i++) {
|
||||
double d = m_node.m_max[i] - m_node.m_min[i];
|
||||
if (ON_NearZero(d, ON_ZERO_TOLERANCE)) {
|
||||
m_node.m_min[i] -= 0.001;
|
||||
m_node.m_max[i] += 0.001;
|
||||
BBNode::BBNode()
|
||||
: m_ctree(NULL), m_face(NULL), m_checkTrim(true), m_trimmed(false)
|
||||
{
|
||||
m_children = new std::vector<BBNode *>();
|
||||
m_trims_above = new std::list<BRNode *>();
|
||||
}
|
||||
|
||||
inline
|
||||
BBNode::BBNode(const ON_BoundingBox &node)
|
||||
: m_ctree(NULL), m_node(node), m_face(NULL), m_checkTrim(true), m_trimmed(false)
|
||||
{
|
||||
for (int i = 0; i < 3; i++) {
|
||||
double d = m_node.m_max[i] - m_node.m_min[i];
|
||||
if (ON_NearZero(d, ON_ZERO_TOLERANCE)) {
|
||||
m_node.m_min[i] -= 0.001;
|
||||
m_node.m_max[i] += 0.001;
|
||||
}
|
||||
}
|
||||
m_children = new std::vector<BBNode *>();
|
||||
m_trims_above = new std::list<BRNode *>();
|
||||
}
|
||||
|
||||
inline
|
||||
BBNode::BBNode(CurveTree *ct)
|
||||
: m_ctree(ct), m_face(NULL), m_checkTrim(true), m_trimmed(false)
|
||||
{
|
||||
m_children = new std::vector<BBNode *>();
|
||||
m_trims_above = new std::list<BRNode *>();
|
||||
}
|
||||
|
||||
inline
|
||||
BBNode::BBNode(CurveTree *ct, const ON_BoundingBox &node)
|
||||
: m_ctree(ct), m_node(node), m_face(NULL), m_checkTrim(true), m_trimmed(false)
|
||||
{
|
||||
for (int i = 0; i < 3; i++) {
|
||||
double d = m_node.m_max[i] - m_node.m_min[i];
|
||||
if (ON_NearZero(d, ON_ZERO_TOLERANCE)) {
|
||||
m_node.m_min[i] -= 0.001;
|
||||
m_node.m_max[i] += 0.001;
|
||||
}
|
||||
}
|
||||
m_children = new std::vector<BBNode *>();
|
||||
m_trims_above = new std::list<BRNode *>();
|
||||
}
|
||||
}
|
||||
|
||||
inline
|
||||
_BU_ATTR_ALWAYS_INLINE
|
||||
BBNode::BBNode(
|
||||
const CurveTree *ct,
|
||||
CurveTree *ct,
|
||||
const ON_BoundingBox &node,
|
||||
const ON_BrepFace *face,
|
||||
const ON_Interval &u,
|
||||
const ON_Interval &v,
|
||||
bool checkTrim,
|
||||
bool trimmed):
|
||||
m_children(new std::vector<BBNode *>),
|
||||
m_node(node),
|
||||
m_face(face),
|
||||
m_u(u),
|
||||
m_v(v),
|
||||
m_checkTrim(checkTrim),
|
||||
m_trimmed(trimmed),
|
||||
m_estimate(),
|
||||
m_normal(),
|
||||
m_ctree(ct),
|
||||
m_trims_above(new std::list<const BRNode *>)
|
||||
bool checkTrim /* = false */,
|
||||
bool trimmed /* = false */)
|
||||
: m_ctree(ct), m_node(node), m_face(face), m_u(u), m_v(v),
|
||||
m_checkTrim(checkTrim), m_trimmed(trimmed)
|
||||
{
|
||||
for (int i = 0; i < 3; i++) {
|
||||
double d = m_node.m_max[i] - m_node.m_min[i];
|
||||
@@ -221,8 +232,16 @@ extern "C++" {
|
||||
m_node.m_max[i] += 0.001;
|
||||
}
|
||||
}
|
||||
m_children = new std::vector<BBNode *>();
|
||||
m_trims_above = new std::list<BRNode *>();
|
||||
}
|
||||
|
||||
inline void
|
||||
BBNode::addChild(const ON_BoundingBox &child)
|
||||
{
|
||||
m_children->push_back(new BBNode(child));
|
||||
}
|
||||
|
||||
inline void
|
||||
BBNode::addChild(BBNode *child)
|
||||
{
|
||||
@@ -235,27 +254,25 @@ extern "C++" {
|
||||
BBNode::removeChild(BBNode *child)
|
||||
{
|
||||
std::vector<BBNode *>::iterator i;
|
||||
for (i = m_children->begin(); i != m_children->end();) {
|
||||
for (i = m_children->begin(); i < m_children->end(); ++i) {
|
||||
if (*i == child) {
|
||||
delete *i;
|
||||
i = m_children->erase(i);
|
||||
} else {
|
||||
++i;
|
||||
m_children->erase(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline bool
|
||||
BBNode::isLeaf() const
|
||||
BBNode::isLeaf()
|
||||
{
|
||||
if (m_children->empty()) {
|
||||
if (m_children->size() == 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline void
|
||||
BBNode::GetBBox(float *min, float *max) const
|
||||
BBNode::GetBBox(float *min, float *max)
|
||||
{
|
||||
min[0] = m_node.m_min[0];
|
||||
min[1] = m_node.m_min[1];
|
||||
@@ -266,7 +283,7 @@ extern "C++" {
|
||||
}
|
||||
|
||||
inline void
|
||||
BBNode::GetBBox(double *min, double *max) const
|
||||
BBNode::GetBBox(double *min, double *max)
|
||||
{
|
||||
min[0] = m_node.m_min[0];
|
||||
min[1] = m_node.m_min[1];
|
||||
@@ -277,7 +294,7 @@ extern "C++" {
|
||||
}
|
||||
|
||||
inline bool
|
||||
BBNode::intersectedBy(const ON_Ray &ray, double *tnear_opt /* = NULL */, double *tfar_opt /* = NULL */) const
|
||||
BBNode::intersectedBy(ON_Ray &ray, double *tnear_opt /* = NULL */, double *tfar_opt /* = NULL */)
|
||||
{
|
||||
double tnear = -DBL_MAX;
|
||||
double tfar = DBL_MAX;
|
||||
|
||||
+84
-96
@@ -53,25 +53,37 @@ extern "C++" {
|
||||
*/
|
||||
class BREP_EXPORT BRNode {
|
||||
public:
|
||||
explicit BRNode(const ON_BoundingBox &node);
|
||||
BRNode();
|
||||
BRNode(const ON_BoundingBox &node);
|
||||
BRNode(const ON_Curve *curve,
|
||||
int adj_face_index,
|
||||
int m_adj_face_index,
|
||||
const ON_BoundingBox &node,
|
||||
const ON_BrepFace *face,
|
||||
const ON_Interval &t,
|
||||
bool innerTrim,
|
||||
bool checkTrim,
|
||||
bool trimmed);
|
||||
bool innerTrim = false,
|
||||
bool checkTrim = true,
|
||||
bool trimmed = false);
|
||||
~BRNode();
|
||||
|
||||
/** List of all children of a given node */
|
||||
std::vector<BRNode *> *m_children;
|
||||
|
||||
/** Bounding Box */
|
||||
ON_BoundingBox m_node;
|
||||
|
||||
/** Node management functions */
|
||||
void addChild(const ON_BoundingBox &child);
|
||||
void addChild(BRNode *child);
|
||||
void removeChild(BRNode *child);
|
||||
|
||||
/** Test if this node is a leaf node (i.e. m_children is empty) */
|
||||
bool isLeaf();
|
||||
|
||||
/** Return a list of all nodes below this node that are leaf nodes */
|
||||
void getLeaves(std::list<const BRNode *> &out_leaves) const;
|
||||
void getLeaves(std::list<BRNode *> &out_leaves);
|
||||
|
||||
/** Report the depth of this node in the hierarchy */
|
||||
int depth() const;
|
||||
int depth();
|
||||
|
||||
/**
|
||||
* Get 2 points defining bounding box:
|
||||
@@ -87,63 +99,51 @@ extern "C++" {
|
||||
*/
|
||||
void GetBBox(fastf_t *min, fastf_t *max) const;
|
||||
|
||||
bool isTrimmed(const ON_2dPoint &uv, double &trimdist) const;
|
||||
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt) const;
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v) const;
|
||||
fastf_t getCurveEstimateOfV(fastf_t u, fastf_t tol) const;
|
||||
fastf_t getCurveEstimateOfU(fastf_t v, fastf_t tol) const;
|
||||
|
||||
/** Bounding Box */
|
||||
ON_BoundingBox m_node;
|
||||
|
||||
/** Surface Information */
|
||||
const ON_BrepFace *m_face;
|
||||
ON_Interval m_u;
|
||||
ON_Interval m_v;
|
||||
|
||||
/** Trim Curve Information */
|
||||
const ON_Curve *m_trim;
|
||||
ON_Interval m_t;
|
||||
int m_adj_face_index;
|
||||
|
||||
/** Trimming Flags */
|
||||
bool m_checkTrim;
|
||||
bool m_trimmed;
|
||||
bool m_XIncreasing;
|
||||
bool m_Horizontal;
|
||||
bool m_Vertical;
|
||||
const bool m_innerTrim;
|
||||
bool m_innerTrim;
|
||||
|
||||
private:
|
||||
BRNode(const BRNode &source);
|
||||
BRNode &operator=(const BRNode &source);
|
||||
|
||||
void removeChild(BRNode *child);
|
||||
|
||||
/** Test if this node is a leaf node (i.e. m_children is empty) */
|
||||
bool isLeaf() const;
|
||||
ON_3dPoint m_estimate;
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt);
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v);
|
||||
fastf_t getLinearEstimateOfV(fastf_t u);
|
||||
fastf_t getCurveEstimateOfV(fastf_t u, fastf_t tol) const;
|
||||
fastf_t getCurveEstimateOfU(fastf_t v, fastf_t tol) const;
|
||||
|
||||
bool isTrimmed(const ON_2dPoint &uv, double &trimdist) const;
|
||||
bool doTrimming() const;
|
||||
|
||||
fastf_t getLinearEstimateOfV(fastf_t u) const;
|
||||
|
||||
const BRNode *closer(const ON_3dPoint &pt, const BRNode *left, const BRNode *right) const;
|
||||
|
||||
/** List of all children of a given node */
|
||||
std::vector<const BRNode *> * const m_children;
|
||||
|
||||
const ON_BrepFace * const m_face;
|
||||
ON_Interval m_u;
|
||||
|
||||
const ON_Curve * const m_trim;
|
||||
ON_Interval m_t;
|
||||
|
||||
const bool m_checkTrim;
|
||||
const bool m_trimmed;
|
||||
|
||||
const ON_3dPoint m_estimate;
|
||||
|
||||
private:
|
||||
BRNode *closer(const ON_3dPoint &pt, BRNode *left, BRNode *right);
|
||||
fastf_t m_slope;
|
||||
fastf_t m_vdot;
|
||||
fastf_t m_bb_diag;
|
||||
ON_3dPoint m_start;
|
||||
ON_3dPoint m_end;
|
||||
};
|
||||
|
||||
inline
|
||||
BRNode::BRNode()
|
||||
{
|
||||
m_start = ON_3dPoint::UnsetPoint;
|
||||
m_end = ON_3dPoint::UnsetPoint;
|
||||
m_children = new std::vector<BRNode *>();
|
||||
}
|
||||
|
||||
inline
|
||||
_BU_ATTR_ALWAYS_INLINE
|
||||
BRNode::BRNode(
|
||||
@@ -152,29 +152,15 @@ extern "C++" {
|
||||
const ON_BoundingBox &node,
|
||||
const ON_BrepFace *face,
|
||||
const ON_Interval &t,
|
||||
bool innerTrim,
|
||||
bool checkTrim,
|
||||
bool trimmed) :
|
||||
m_node(node),
|
||||
m_v(),
|
||||
m_adj_face_index(adj_face_index),
|
||||
m_XIncreasing(false),
|
||||
m_Horizontal(false),
|
||||
m_Vertical(false),
|
||||
m_innerTrim(innerTrim),
|
||||
m_children(new std::vector<const BRNode *>),
|
||||
m_face(face),
|
||||
m_u(),
|
||||
m_trim(curve),
|
||||
m_t(t),
|
||||
m_checkTrim(checkTrim),
|
||||
m_trimmed(trimmed),
|
||||
m_estimate(),
|
||||
m_slope(0.0),
|
||||
m_bb_diag(0.0),
|
||||
m_start(curve->PointAt(m_t[0])),
|
||||
m_end(curve->PointAt(m_t[1]))
|
||||
bool innerTrim /* = false */,
|
||||
bool checkTrim /* = true */,
|
||||
bool trimmed /* = false */)
|
||||
: m_node(node), m_face(face), m_trim(curve), m_t(t),
|
||||
m_adj_face_index(adj_face_index), m_checkTrim(checkTrim),
|
||||
m_trimmed(trimmed), m_innerTrim(innerTrim), m_slope(0.0), m_vdot(0.0)
|
||||
{
|
||||
m_start = curve->PointAt(m_t[0]);
|
||||
m_end = curve->PointAt(m_t[1]);
|
||||
/* check for vertical segments they can be removed from trims
|
||||
* above (can't tell direction and don't need
|
||||
*/
|
||||
@@ -223,31 +209,28 @@ extern "C++" {
|
||||
m_slope = (m_end[Y] - m_start[Y]) / (m_end[X] - m_start[X]);
|
||||
}
|
||||
m_bb_diag = DIST_PT_PT(m_start, m_end);
|
||||
m_children = new std::vector<BRNode *>();
|
||||
}
|
||||
|
||||
inline
|
||||
_BU_ATTR_ALWAYS_INLINE
|
||||
BRNode::BRNode(const ON_BoundingBox &node) :
|
||||
m_node(node),
|
||||
m_v(),
|
||||
m_adj_face_index(-99),
|
||||
m_XIncreasing(false),
|
||||
m_Horizontal(false),
|
||||
m_Vertical(false),
|
||||
m_innerTrim(false),
|
||||
m_children(new std::vector<const BRNode *>),
|
||||
m_face(NULL),
|
||||
m_u(),
|
||||
m_trim(NULL),
|
||||
m_t(),
|
||||
m_checkTrim(true),
|
||||
m_trimmed(false),
|
||||
m_estimate(),
|
||||
m_slope(0.0),
|
||||
m_bb_diag(0.0),
|
||||
m_start(ON_3dPoint::UnsetPoint),
|
||||
m_end(ON_3dPoint::UnsetPoint)
|
||||
{
|
||||
BRNode::BRNode(const ON_BoundingBox &node)
|
||||
: m_node(node)
|
||||
{
|
||||
m_adj_face_index = -99;
|
||||
m_checkTrim = true;
|
||||
m_trimmed = false;
|
||||
m_Horizontal = false;
|
||||
m_Vertical = false;
|
||||
m_XIncreasing = false;
|
||||
m_innerTrim = false;
|
||||
m_bb_diag = 0.0;
|
||||
m_slope = 0.0;
|
||||
m_vdot = 0.0;
|
||||
m_face = NULL;
|
||||
m_trim = NULL;
|
||||
m_start = ON_3dPoint::UnsetPoint;
|
||||
m_end = ON_3dPoint::UnsetPoint;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
double d = m_node.m_max[i] - m_node.m_min[i];
|
||||
if (NEAR_ZERO(d, ON_ZERO_TOLERANCE)) {
|
||||
@@ -257,6 +240,13 @@ extern "C++" {
|
||||
}
|
||||
m_start = m_node.m_min;
|
||||
m_end = m_node.m_max;
|
||||
m_children = new std::vector<BRNode *>();
|
||||
}
|
||||
|
||||
inline void
|
||||
BRNode::addChild(const ON_BoundingBox &child)
|
||||
{
|
||||
m_children->push_back(new BRNode(child));
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -270,21 +260,19 @@ extern "C++" {
|
||||
inline void
|
||||
BRNode::removeChild(BRNode *child)
|
||||
{
|
||||
std::vector<const BRNode *>::iterator i;
|
||||
for (i = m_children->begin(); i != m_children->end();) {
|
||||
std::vector<BRNode *>::iterator i;
|
||||
for (i = m_children->begin(); i < m_children->end(); ++i) {
|
||||
if (*i == child) {
|
||||
delete *i;
|
||||
i = m_children->erase(i);
|
||||
} else {
|
||||
++i;
|
||||
m_children->erase(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline bool
|
||||
BRNode::isLeaf() const
|
||||
BRNode::isLeaf()
|
||||
{
|
||||
if (m_children->empty()) {
|
||||
if (m_children->size() == 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -310,8 +298,8 @@ extern "C++" {
|
||||
return m_checkTrim;
|
||||
}
|
||||
|
||||
extern bool sortX(const BRNode *first, const BRNode *second);
|
||||
extern bool sortY(const BRNode *first, const BRNode *second);
|
||||
extern bool sortX(BRNode *first, BRNode *second);
|
||||
extern bool sortY(BRNode *first, BRNode *second);
|
||||
|
||||
|
||||
} /* namespace brlcad */
|
||||
|
||||
+22
-27
@@ -46,44 +46,39 @@ extern "C++" {
|
||||
*/
|
||||
class BREP_EXPORT CurveTree {
|
||||
public:
|
||||
explicit CurveTree(const ON_BrepFace *face);
|
||||
CurveTree(const ON_BrepFace *face);
|
||||
~CurveTree();
|
||||
|
||||
/**
|
||||
* Return just the leaves of the surface tree
|
||||
*/
|
||||
void getLeaves(std::list<const BRNode *> &out_leaves) const;
|
||||
void getLeavesAbove(std::list<const BRNode *> &out_leaves, const ON_Interval &u, const ON_Interval &v) const;
|
||||
void getLeavesAbove(std::list<const BRNode *> &out_leaves, const ON_2dPoint &pt, fastf_t tol) const;
|
||||
void getLeavesRight(std::list<const BRNode *> &out_leaves, const ON_2dPoint &pt, fastf_t tol) const;
|
||||
|
||||
private:
|
||||
CurveTree(const CurveTree &source);
|
||||
CurveTree &operator=(const CurveTree &source);
|
||||
|
||||
const BRNode *getRootNode() const;
|
||||
BRNode *getRootNode() const;
|
||||
|
||||
/**
|
||||
* Calculate, using the surface bounding volume hierarchy, a uv
|
||||
* estimate for the closest point on the surface to the point in
|
||||
* 3-space.
|
||||
*/
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt) const;
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v) const;
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt);
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v);
|
||||
|
||||
void getLeavesRight(std::list<const BRNode *> &out_leaves, const ON_Interval &u, const ON_Interval &v) const;
|
||||
/**
|
||||
* Return just the leaves of the surface tree
|
||||
*/
|
||||
void getLeaves(std::list<BRNode *> &out_leaves);
|
||||
void getLeavesAbove(std::list<BRNode *> &out_leaves, const ON_Interval &u, const ON_Interval &v);
|
||||
void getLeavesAbove(std::list<BRNode *> &out_leaves, const ON_2dPoint &pt, fastf_t tol);
|
||||
void getLeavesRight(std::list<BRNode *> &out_leaves, const ON_Interval &u, const ON_Interval &v);
|
||||
void getLeavesRight(std::list<BRNode *> &out_leaves, const ON_2dPoint &pt, fastf_t tol);
|
||||
int depth();
|
||||
|
||||
int depth() const;
|
||||
private:
|
||||
bool getHVTangents(const ON_Curve *curve, ON_Interval &t, std::list<fastf_t> &list);
|
||||
bool isLinear(const ON_Curve *curve, double min, double max);
|
||||
BRNode *subdivideCurve(const ON_Curve *curve, int adj_face_index, double min, double max, bool innerTrim, int depth);
|
||||
BRNode *curveBBox(const ON_Curve *curve, int adj_face_index, ON_Interval &t, bool leaf, bool innerTrim, const ON_BoundingBox &bb);
|
||||
BRNode *initialLoopBBox();
|
||||
|
||||
bool getHVTangents(const ON_Curve *curve, const ON_Interval &t, std::list<fastf_t> &list) const;
|
||||
bool isLinear(const ON_Curve *curve, double min, double max) const;
|
||||
BRNode *subdivideCurve(const ON_Curve *curve, int adj_face_index, double min, double max, bool innerTrim, int depth) const;
|
||||
BRNode *curveBBox(const ON_Curve *curve, int adj_face_index, const ON_Interval &t, bool isLeaf, bool innerTrim, const ON_BoundingBox &bb) const;
|
||||
BRNode *initialLoopBBox() const;
|
||||
|
||||
const ON_BrepFace * const m_face;
|
||||
BRNode * const m_root;
|
||||
std::list<const BRNode *> * const m_sortedX;
|
||||
const ON_BrepFace *m_face;
|
||||
BRNode *m_root;
|
||||
std::list<BRNode *> *m_sortedX;
|
||||
};
|
||||
|
||||
|
||||
|
||||
+3
-3
@@ -145,9 +145,9 @@ __BEGIN_DECLS
|
||||
return true;
|
||||
}
|
||||
|
||||
BREP_EXPORT void brep_get_plane_ray(const ON_Ray &r, plane_ray &pr);
|
||||
BREP_EXPORT void brep_r(const ON_Surface* surf, const plane_ray& pr, pt2d_t uv, ON_3dPoint& pt, ON_3dVector& su, ON_3dVector& sv, pt2d_t R);
|
||||
BREP_EXPORT void brep_newton_iterate(const plane_ray& pr, pt2d_t R, const ON_3dVector& su, const ON_3dVector& sv, pt2d_t uv, pt2d_t out_uv);
|
||||
BREP_EXPORT void brep_get_plane_ray(ON_Ray &r, plane_ray &pr);
|
||||
BREP_EXPORT void brep_r(const ON_Surface *surf, plane_ray &pr, pt2d_t uv, ON_3dPoint &pt, ON_3dVector &su, ON_3dVector &sv, pt2d_t R);
|
||||
BREP_EXPORT void brep_newton_iterate(plane_ray &pr, pt2d_t R, ON_3dVector &su, ON_3dVector &sv, pt2d_t uv, pt2d_t out_uv);
|
||||
BREP_EXPORT void utah_ray_planes(const ON_Ray &r, ON_3dVector &p1, double &p1d, ON_3dVector &p2, double &p2d);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
+20
-20
@@ -54,10 +54,16 @@ extern "C++" {
|
||||
* SurfaceTree declaration
|
||||
*/
|
||||
class BREP_EXPORT SurfaceTree {
|
||||
private:
|
||||
bool m_removeTrimmed;
|
||||
|
||||
public:
|
||||
explicit SurfaceTree(const ON_BrepFace *face, bool removeTrimmed = true, int depthLimit = BREP_MAX_FT_DEPTH, double within_distance_tol = BREP_EDGE_MISS_TOLERANCE);
|
||||
SurfaceTree();
|
||||
SurfaceTree(const ON_BrepFace *face, bool removeTrimmed = true, int depthLimit = BREP_MAX_FT_DEPTH, double within_distance_tol = BREP_EDGE_MISS_TOLERANCE);
|
||||
~SurfaceTree();
|
||||
|
||||
CurveTree *ctree;
|
||||
|
||||
BBNode *getRootNode() const;
|
||||
|
||||
/**
|
||||
@@ -65,38 +71,32 @@ extern "C++" {
|
||||
* estimate for the closest point on the surface to the point in
|
||||
* 3-space.
|
||||
*/
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt) const;
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v) const;
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt);
|
||||
ON_2dPoint getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v);
|
||||
|
||||
/**
|
||||
* Return surface
|
||||
*/
|
||||
const ON_Surface *getSurface() const;
|
||||
const ON_Surface *getSurface();
|
||||
int getSurfacePoint(const ON_3dPoint &pt, ON_2dPoint &uv, const ON_3dPoint &from, double tolerance = BREP_SAME_POINT_TOLERANCE) const;
|
||||
|
||||
/**
|
||||
* Return just the leaves of the surface tree
|
||||
*/
|
||||
void getLeaves(std::list<const BBNode *> &out_leaves) const;
|
||||
|
||||
const CurveTree *m_ctree;
|
||||
void getLeaves(std::list<BBNode *> &out_leaves);
|
||||
int depth();
|
||||
|
||||
private:
|
||||
SurfaceTree(const SurfaceTree &source);
|
||||
SurfaceTree &operator=(const SurfaceTree &source);
|
||||
bool isFlat(ON_Plane frames[]);
|
||||
bool isStraight(ON_Plane frames[]);
|
||||
bool isFlatU(ON_Plane frames[]);
|
||||
bool isFlatV(ON_Plane frames[]);
|
||||
BBNode *subdivideSurface(const ON_Surface *localsurf, const ON_Interval &u, const ON_Interval &v, ON_Plane frames[], int depth, int depthLimit, int prev_knot, double within_distance_tol);
|
||||
BBNode *surfaceBBox(const ON_Surface *localsurf, bool leaf, ON_Plane frames[], const ON_Interval &u, const ON_Interval &v, double within_distance_tol);
|
||||
|
||||
int depth() const;
|
||||
bool isFlat(const ON_Plane frames[9]) const;
|
||||
bool isStraight(const ON_Plane frames[9]) const;
|
||||
bool isFlatU(const ON_Plane frames[9]) const;
|
||||
bool isFlatV(const ON_Plane frames[9]) const;
|
||||
BBNode *subdivideSurface(const ON_Surface *localsurf, const ON_Interval &u, const ON_Interval &v, ON_Plane frames[9], int depth, int depthLimit, int prev_knot, double within_distance_tol) const;
|
||||
BBNode *surfaceBBox(const ON_Surface *localsurf, bool leaf, const ON_Plane frames[9], const ON_Interval &u, const ON_Interval &v, double within_distance_tol) const;
|
||||
|
||||
const bool m_removeTrimmed;
|
||||
const ON_BrepFace * const m_face;
|
||||
const ON_BrepFace *m_face;
|
||||
BBNode *m_root;
|
||||
std::queue<ON_Plane *> * const m_f_queue;
|
||||
std::queue<ON_Plane *> *f_queue;
|
||||
};
|
||||
|
||||
} /* namespace brlcad */
|
||||
|
||||
@@ -29,10 +29,6 @@
|
||||
#include "bu/magic.h"
|
||||
#include "bu/vls.h"
|
||||
|
||||
#if defined(USE_BINARY_ATTRIBUTES)
|
||||
#include "bson.h"
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
+24
-4
@@ -98,6 +98,19 @@
|
||||
#endif /* PATH_SEPARATOR */
|
||||
|
||||
|
||||
/**
|
||||
* @def BU_FLSTR
|
||||
*
|
||||
* Macro for getting a concatenated string of the current file and
|
||||
* line number. Produces something of the form: "filename.c"":""1234"
|
||||
*/
|
||||
#define bu_cpp_str(s) # s
|
||||
#define bu_cpp_xstr(s) bu_cpp_str(s)
|
||||
#define bu_cpp_glue(a, b) a ## b
|
||||
#define bu_cpp_xglue(a, b) bu_cpp_glue(a, b)
|
||||
#define BU_FLSTR __FILE__ ":" bu_cpp_xstr(__LINE__)
|
||||
|
||||
|
||||
/**
|
||||
* shorthand declaration of a printf-style functions
|
||||
*/
|
||||
@@ -120,15 +133,22 @@
|
||||
/**
|
||||
* shorthand declaration of a function that doesn't return
|
||||
*/
|
||||
#if defined(HAVE_NORETURN_ATTRIBUTE) && defined(HAVE_ANALYZER_NORETURN_ATTRIBUTE)
|
||||
/* clang static analyzer is needing an additional flag set */
|
||||
# define _BU_ATTR_NORETURN __attribute__((__noreturn__)) __attribute__((analyzer_noreturn))
|
||||
#elif defined(HAVE_NORETURN_ATTRIBUTE)
|
||||
#ifdef HAVE_NORETURN_ATTRIBUTE
|
||||
# define _BU_ATTR_NORETURN __attribute__((__noreturn__))
|
||||
#else
|
||||
# define _BU_ATTR_NORETURN
|
||||
#endif
|
||||
|
||||
/* For the moment, we need to specially flag some functions
|
||||
* for clang. It's not clear if we will always need to do
|
||||
* this, but for now this suppresses a lot of noise in the
|
||||
* reports */
|
||||
#ifdef HAVE_ANALYZER_NORETURN_ATTRIBUTE
|
||||
# define _BU_ATTR_ANALYZE_NORETURN __attribute__((analyzer_noreturn))
|
||||
#else
|
||||
# define _BU_ATTR_ANALYZE_NORETURN
|
||||
#endif
|
||||
|
||||
/**
|
||||
* shorthand declaration of a function that should always be inline
|
||||
*/
|
||||
|
||||
+6
-7
@@ -133,7 +133,7 @@ BU_EXPORT extern int bu_file_delete(const char *path);
|
||||
* 'matches' array, and followed by a terminating NULL entry.
|
||||
*
|
||||
* If '*matches' is NULL, the caller is expected to free the matches
|
||||
* array with bu_argv_free() If '*matches' is non-NULL (i.e., string
|
||||
* array with bu_free_argv() If '*matches' is non-NULL (i.e., string
|
||||
* array is already allocated or on the stack), the caller is expected
|
||||
* to ensure adequate entries are allocated and call bu_free_array()
|
||||
* to clean up. If 'matches' is NULL, no entries will be allocated or
|
||||
@@ -219,14 +219,13 @@ BU_EXPORT extern int bu_file_mime_int(const char *str);
|
||||
/**
|
||||
* Returns the number of directory entries for a given path matching
|
||||
* an optional glob pattern. If the caller provides a pointer to an
|
||||
* argv-style 'files' array, this function will dynamically allocate
|
||||
* an array of strings, filled with the sorted listing of matching
|
||||
* file(s).
|
||||
* argv-style 'files' array, this function will allocate the array
|
||||
* with dynamically allocated strings for any matching file(s).
|
||||
*
|
||||
* It is the caller's responsibility to free a non-NULL array with
|
||||
* bu_argv_free().
|
||||
* It is the caller's responsibility to free a non-NULL 'files' array
|
||||
* with bu_free_argv().
|
||||
*/
|
||||
BU_EXPORT extern size_t bu_file_list(const char *path, const char *pattern, char ***files);
|
||||
BU_EXPORT extern size_t bu_dir_list(const char *path, const char *pattern, char ***files);
|
||||
|
||||
/**
|
||||
* Call canonicalization routines to both expand and validate
|
||||
|
||||
@@ -46,7 +46,6 @@ __BEGIN_DECLS
|
||||
typedef struct bu_hash_entry bu_hash_entry;
|
||||
typedef struct bu_hash_tbl bu_hash_tbl;
|
||||
|
||||
|
||||
/**
|
||||
* Create and initialize a hash table. The input is the number of desired hash
|
||||
* bins. This number will be rounded up to the nearest power of two, or a
|
||||
@@ -54,7 +53,6 @@ typedef struct bu_hash_tbl bu_hash_tbl;
|
||||
*/
|
||||
BU_EXPORT extern bu_hash_tbl *bu_hash_create(unsigned long tbl_size);
|
||||
|
||||
|
||||
/**
|
||||
* Free all the memory associated with the specified hash table.
|
||||
*
|
||||
@@ -63,7 +61,6 @@ BU_EXPORT extern bu_hash_tbl *bu_hash_create(unsigned long tbl_size);
|
||||
*/
|
||||
BU_EXPORT extern void bu_hash_destroy(bu_hash_tbl *t);
|
||||
|
||||
|
||||
/**
|
||||
* Get the value stored in the hash table entry corresponding to the provided key
|
||||
*
|
||||
@@ -77,7 +74,6 @@ BU_EXPORT extern void bu_hash_destroy(bu_hash_tbl *t);
|
||||
*/
|
||||
BU_EXPORT extern void *bu_hash_get(const bu_hash_tbl *t, const uint8_t *key, size_t key_len);
|
||||
|
||||
|
||||
/**
|
||||
* Set the value stored in the hash table entry corresponding to the provided
|
||||
* key to val, or if no entry corresponding to the provided key exists create a
|
||||
@@ -103,7 +99,6 @@ BU_EXPORT extern void *bu_hash_get(const bu_hash_tbl *t, const uint8_t *key, siz
|
||||
*/
|
||||
BU_EXPORT extern int bu_hash_set(bu_hash_tbl *t, const uint8_t *key, size_t key_len, void *val);
|
||||
|
||||
|
||||
/**
|
||||
* Remove the hash table entry associated with key from the table.
|
||||
*
|
||||
@@ -113,7 +108,6 @@ BU_EXPORT extern int bu_hash_set(bu_hash_tbl *t, const uint8_t *key, size_t key_
|
||||
*/
|
||||
BU_EXPORT extern void bu_hash_rm(bu_hash_tbl *t, const uint8_t *key, size_t key_len);
|
||||
|
||||
|
||||
/**
|
||||
* Supports iteration of all the contents in a hash table.
|
||||
*
|
||||
@@ -137,7 +131,6 @@ BU_EXPORT extern void bu_hash_rm(bu_hash_tbl *t, const uint8_t *key, size_t key_
|
||||
*/
|
||||
BU_EXPORT extern bu_hash_entry *bu_hash_next(bu_hash_tbl *t, bu_hash_entry *p);
|
||||
|
||||
|
||||
/**
|
||||
* Supports iteration of all the contents in a hash table.
|
||||
*
|
||||
|
||||
+2
-2
@@ -177,7 +177,7 @@ BU_EXPORT extern void bu_bomb_add_hook(bu_hook_t func, void *clientdata);
|
||||
* This routine should never return unless there is a BU_SETJUMP()
|
||||
* handler registered.
|
||||
*/
|
||||
BU_EXPORT extern void bu_bomb(const char *str) _BU_ATTR_NORETURN;
|
||||
BU_EXPORT extern void bu_bomb(const char *str)_BU_ATTR_ANALYZE_NORETURN _BU_ATTR_NORETURN;
|
||||
|
||||
/**
|
||||
* Semi-graceful termination of the application that doesn't cause a
|
||||
@@ -191,7 +191,7 @@ BU_EXPORT extern void bu_bomb(const char *str) _BU_ATTR_NORETURN;
|
||||
*
|
||||
* This routine should never return.
|
||||
*/
|
||||
BU_EXPORT extern void bu_exit(int status, const char *fmt, ...) _BU_ATTR_NORETURN _BU_ATTR_PRINTF23;
|
||||
BU_EXPORT extern void bu_exit(int status, const char *fmt, ...) _BU_ATTR_ANALYZE_NORETURN _BU_ATTR_NORETURN _BU_ATTR_PRINTF23;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
|
||||
+1
-1
@@ -247,7 +247,7 @@ __BEGIN_DECLS
|
||||
/**
|
||||
* Support routine for BU_CKMAG macro.
|
||||
*/
|
||||
BU_EXPORT extern void bu_badmagic(const uint32_t *ptr, uint32_t magic, const char *str, const char *file, int line) _BU_ATTR_NORETURN;
|
||||
BU_EXPORT extern void bu_badmagic(const uint32_t *ptr, uint32_t magic, const char *str, const char *file, int line) _BU_ATTR_ANALYZE_NORETURN;
|
||||
|
||||
|
||||
/** @brief Routines involved with handling "magic numbers" used to identify various in-memory data structures. */
|
||||
|
||||
+13
-4
@@ -84,6 +84,15 @@ BU_EXPORT extern void *bu_realloc(void *ptr,
|
||||
size_t siz,
|
||||
const char *str);
|
||||
|
||||
/**
|
||||
* overflow checking version of realloc for arrays, based on OpenBSD's
|
||||
* reallocarray.
|
||||
*/
|
||||
BU_EXPORT extern void *bu_reallocarray(void *optr,
|
||||
size_t nmemb,
|
||||
size_t size,
|
||||
const char *str);
|
||||
|
||||
/**
|
||||
* Print map of memory currently in use.
|
||||
*/
|
||||
@@ -213,7 +222,7 @@ BU_EXPORT extern int bu_shmget(int *shmid, char **shared_memory, int key, size_t
|
||||
#if 0
|
||||
#define BU_GET(_ptr, _type) _ptr = (_type *)bu_heap_get(sizeof(_type))
|
||||
#else
|
||||
#define BU_GET(_ptr, _type) _ptr = (_type *)bu_calloc(1, sizeof(_type), #_type " (BU_GET) " CPP_FILELINE)
|
||||
#define BU_GET(_ptr, _type) _ptr = (_type *)bu_calloc(1, sizeof(_type), #_type " (BU_GET) " BU_FLSTR)
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -227,7 +236,7 @@ BU_EXPORT extern int bu_shmget(int *shmid, char **shared_memory, int key, size_t
|
||||
#if 0
|
||||
#define BU_PUT(_ptr, _type) *(uint8_t *)(_type *)(_ptr) = /*zap*/ 0; bu_heap_put(_ptr, sizeof(_type)); _ptr = NULL
|
||||
#else
|
||||
#define BU_PUT(_ptr, _type) do { *(uint8_t *)(_type *)(_ptr) = /*zap*/ 0; bu_free(_ptr, #_type " (BU_PUT) " CPP_FILELINE); _ptr = NULL; } while (0)
|
||||
#define BU_PUT(_ptr, _type) do { *(uint8_t *)(_type *)(_ptr) = /*zap*/ 0; bu_free(_ptr, #_type " (BU_PUT) " BU_FLSTR); _ptr = NULL; } while (0)
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -235,13 +244,13 @@ BU_EXPORT extern int bu_shmget(int *shmid, char **shared_memory, int key, size_t
|
||||
* Not intended for performance-critical code. Release memory
|
||||
* acquired with bu_free() or BU_FREE() to dealloc and set NULL.
|
||||
*/
|
||||
#define BU_ALLOC(_ptr, _type) _ptr = (_type *)bu_calloc(1, sizeof(_type), #_type " (BU_ALLOC) " CPP_FILELINE)
|
||||
#define BU_ALLOC(_ptr, _type) _ptr = (_type *)bu_calloc(1, sizeof(_type), #_type " (BU_ALLOC) " BU_FLSTR)
|
||||
|
||||
/**
|
||||
* Convenience macro for deallocating a single structure allocated on
|
||||
* the heap (with bu_malloc(), bu_calloc(), BU_ALLOC()).
|
||||
*/
|
||||
#define BU_FREE(_ptr, _type) do { bu_free(_ptr, #_type " (BU_FREE) " CPP_FILELINE); _ptr = (_type *)NULL; } while (0)
|
||||
#define BU_FREE(_ptr, _type) do { bu_free(_ptr, #_type " (BU_FREE) " BU_FLSTR); _ptr = (_type *)NULL; } while (0)
|
||||
|
||||
|
||||
/** @} */
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ BU_EXPORT extern int bu_path_component(struct bu_vls *component,
|
||||
* Given a path string, separate the path elements into a dynamically
|
||||
* allocated argv array with the path separators removed. It is the
|
||||
* caller's responsibility to free the array that is returned as well
|
||||
* as all elements in the array using bu_argv_free() or manually
|
||||
* as all elements in the array using bu_free_argv() or manually
|
||||
* calling bu_free().
|
||||
*/
|
||||
BU_EXPORT extern char **bu_argv_from_path(const char *path, int *ac);
|
||||
|
||||
+10
-12
@@ -93,17 +93,14 @@ typedef struct bu_ptbl bu_ptbl_t;
|
||||
/*
|
||||
* For those routines that have to "peek" into the ptbl a little bit.
|
||||
*/
|
||||
#define BU_PTBL_LEN(ptbl) (((uintptr_t)(ptbl) != (uintptr_t)NULL)?(size_t)(ptbl)->end:0)
|
||||
#define BU_PTBL_TEST(ptbl) (((uintptr_t)(ptbl) != (uintptr_t)NULL)?(ptbl)->l.magic == BU_PTBL_MAGIC:0)
|
||||
#define BU_PTBL_GET(ptbl, i) ((ptbl)->buffer[(i)])
|
||||
#define BU_PTBL_SET(ptbl, i, val) ((ptbl)->buffer[(i)] = (long*)(val))
|
||||
|
||||
/** DEPRECATED */
|
||||
#define BU_PTBL_BASEADDR(ptbl) ((ptbl)->buffer)
|
||||
#define BU_PTBL_LASTADDR(ptbl) ((ptbl)->buffer + (ptbl)->end - 1)
|
||||
#define BU_PTBL_END(ptbl) ((ptbl)->end)
|
||||
/** DEPRECATED */
|
||||
#define BU_PTBL_BASEADDR(ptbl) (((uintptr_t)(ptbl) != (uintptr_t)NULL)?(ptbl)->buffer:NULL)
|
||||
/** DEPRECATED */
|
||||
#define BU_PTBL_LASTADDR(ptbl) (((uintptr_t)(ptbl) != (uintptr_t)NULL)?(ptbl)->buffer + (ptbl)->end - 1:NULL)
|
||||
#define BU_PTBL_LEN(ptbl) ((size_t)(ptbl)->end)
|
||||
#define BU_PTBL_GET(ptbl, i) ((ptbl)->buffer[(i)])
|
||||
#define BU_PTBL_SET(ptbl, i, val) ((ptbl)->buffer[(i)] = (long*)(val))
|
||||
#define BU_PTBL_TEST(ptbl) ((ptbl)->l.magic == BU_PTBL_MAGIC)
|
||||
#define BU_PTBL_CLEAR_I(_ptbl, _i) ((_ptbl)->buffer[(_i)] = (long *)0)
|
||||
|
||||
/**
|
||||
* A handy way to visit all the elements of the table is:
|
||||
@@ -230,9 +227,10 @@ BU_EXPORT extern void bu_pr_ptbl(const char *title,
|
||||
int verbose);
|
||||
|
||||
/**
|
||||
* truncate a bu_ptbl to the specified size.
|
||||
* truncate a bu_ptbl
|
||||
*/
|
||||
BU_EXPORT extern void bu_ptbl_trunc(struct bu_ptbl *tbl, size_t end);
|
||||
BU_EXPORT extern void bu_ptbl_trunc(struct bu_ptbl *tbl,
|
||||
int end);
|
||||
|
||||
/** @} */
|
||||
|
||||
|
||||
+8
-8
@@ -44,7 +44,7 @@ __BEGIN_DECLS
|
||||
* file name and line number of any erroneous callers.
|
||||
*/
|
||||
BU_EXPORT extern size_t bu_strlcatm(char *dst, const char *src, size_t size, const char *label);
|
||||
#define bu_strlcat(dst, src, size) bu_strlcatm(dst, src, size, CPP_FILELINE)
|
||||
#define bu_strlcat(dst, src, size) bu_strlcatm(dst, src, size, BU_FLSTR)
|
||||
|
||||
/**
|
||||
* copies one string into another, returning the length of the dst
|
||||
@@ -54,7 +54,7 @@ BU_EXPORT extern size_t bu_strlcatm(char *dst, const char *src, size_t size, con
|
||||
* file name and line number of any erroneous callers.
|
||||
*/
|
||||
BU_EXPORT extern size_t bu_strlcpym(char *dst, const char *src, size_t size, const char *label);
|
||||
#define bu_strlcpy(dst, src, size) bu_strlcpym(dst, src, size, CPP_FILELINE)
|
||||
#define bu_strlcpy(dst, src, size) bu_strlcpym(dst, src, size, BU_FLSTR)
|
||||
|
||||
/**
|
||||
* Given a string, allocate enough memory to hold it using
|
||||
@@ -65,7 +65,7 @@ BU_EXPORT extern size_t bu_strlcpym(char *dst, const char *src, size_t size, con
|
||||
* number that can be used when bu debugging is enabled.
|
||||
*/
|
||||
BU_EXPORT extern char *bu_strdupm(const char *cp, const char *label);
|
||||
#define bu_strdup(s) bu_strdupm(s, CPP_FILELINE)
|
||||
#define bu_strdup(s) bu_strdupm(s, BU_FLSTR)
|
||||
|
||||
/**
|
||||
* Compares two strings for equality. It performs the comparison more
|
||||
@@ -304,10 +304,10 @@ BU_EXPORT extern int bu_argv_from_tcl_list(const char *list_str,
|
||||
/**
|
||||
* Deallocate all strings in a given argv array and the array itself
|
||||
*
|
||||
* This call presumes the array has been allocated with bu_argv_dup()
|
||||
* This call presumes the array has been allocated with bu_dup_argv()
|
||||
* or bu_argv_from_path().
|
||||
*/
|
||||
BU_EXPORT extern void bu_argv_free(size_t argc, char *argv[]);
|
||||
BU_EXPORT extern void bu_free_argv(size_t argc, char *argv[]);
|
||||
|
||||
/**
|
||||
* free up to argc elements of memory allocated to an array without
|
||||
@@ -321,9 +321,9 @@ BU_EXPORT extern void bu_free_array(size_t argc, char *argv[], const char *str);
|
||||
* Duplicate an argv array by duplicating all strings and the array
|
||||
* itself. It is the caller's responsibility to free the array
|
||||
* returned including all elements in the array by calling bu_free()
|
||||
* or bu_argv_free().
|
||||
* or bu_free_argv().
|
||||
*/
|
||||
BU_EXPORT extern char **bu_argv_dup(size_t argc, const char *argv[]);
|
||||
BU_EXPORT extern char **bu_dup_argv(size_t argc, const char *argv[]);
|
||||
|
||||
/**
|
||||
* Combine two argv arrays into one new (duplicated) argv array.
|
||||
@@ -335,7 +335,7 @@ BU_EXPORT extern char **bu_argv_dup(size_t argc, const char *argv[]);
|
||||
* the insert argument is the position where the insertArgv array
|
||||
* elements will be merged with the specified argv array.
|
||||
*/
|
||||
BU_EXPORT extern char **bu_argv_dupinsert(int insert, size_t insertArgc, const char *insertArgv[], size_t argc, const char *argv[]);
|
||||
BU_EXPORT extern char **bu_dupinsert_argv(int insert, size_t insertArgc, const char *insertArgv[], size_t argc, const char *argv[]);
|
||||
|
||||
|
||||
__END_DECLS
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ bu_uuid_create(uint8_t uuid[STATIC_ARRAY(16)], size_t nbytes, uint8_t *bytes);
|
||||
|
||||
/**
|
||||
* This is a convenience UUID comparison routine compatible with
|
||||
* stdlib sorting functions (e.g., bu_sort()). The function expects
|
||||
* stdlib sorting functions (e.g., qsort()). The function expects
|
||||
* both left and right UUIDs to be uint8_t[16] arrays.
|
||||
*
|
||||
* Returns:
|
||||
|
||||
+8
-65
@@ -59,7 +59,7 @@
|
||||
|
||||
/* make sure lrint() is provided */
|
||||
# if !defined(__cplusplus) && !defined(HAVE_LRINT) && defined(HAVE_WORKING_LRINT_MACRO)
|
||||
# define lrint(_x) (((_x) < 0.0) ? (long int)ceil((_x)-0.5) : (long int)floor((_x)+0.5))
|
||||
# define lrint(_x) (((_x) < 0.0) ? ceil((_x)-0.5) : floor((_x)+0.5))
|
||||
# define HAVE_LRINT 1
|
||||
# elif !defined(__cplusplus) && defined(HAVE_LRINT) && !defined(HAVE_DECL_LRINT)
|
||||
long int lrint(double x);
|
||||
@@ -69,14 +69,12 @@ long int lrint(double x);
|
||||
#endif /* BRLCADBUILD & HAVE_CONFIG_H */
|
||||
|
||||
/* provide declaration markers for header externals */
|
||||
#ifndef __BEGIN_DECLS
|
||||
# ifdef __cplusplus
|
||||
# define __BEGIN_DECLS extern "C" { /**< if C++, set to extern "C" { */
|
||||
# define __END_DECLS } /**< if C++, set to } */
|
||||
# else
|
||||
# define __BEGIN_DECLS /**< if C++, set to extern "C" { */
|
||||
# define __END_DECLS /**< if C++, set to } */
|
||||
# endif
|
||||
#ifdef __cplusplus
|
||||
# define __BEGIN_DECLS extern "C" { /**< if C++, set to extern "C" { */
|
||||
# define __END_DECLS } /**< if C++, set to } */
|
||||
#else
|
||||
# define __BEGIN_DECLS /**< if C++, set to extern "C" { */
|
||||
# define __END_DECLS /**< if C++, set to } */
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -313,7 +311,7 @@ typedef ptrdiff_t ssize_t;
|
||||
* have to add it for them
|
||||
*/
|
||||
#if defined(_MSC_VER) && defined(__STDC__)
|
||||
# include <tchar.h>
|
||||
#include <tchar.h>
|
||||
/* MSVC++ misses this. */
|
||||
typedef _TCHAR TCHAR;
|
||||
#endif
|
||||
@@ -394,61 +392,6 @@ typedef ptrdiff_t ssize_t;
|
||||
#define EXTERNVARINIT
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Provide canonical preprocessor stringification.
|
||||
*
|
||||
* #define abc 123
|
||||
* CPP_STR(abc) => "abc"
|
||||
*/
|
||||
#ifndef CPP_STR
|
||||
# define CPP_STR(x) # x
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Provide canonical preprocessor expanded stringification.
|
||||
*
|
||||
* #define abc 123
|
||||
* CPP_XSTR(abc) => "123"
|
||||
*/
|
||||
#ifndef CPP_XSTR
|
||||
# define CPP_XSTR(x) CPP_STR(x)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Provide canonical preprocessor concatenation.
|
||||
*
|
||||
* #define abc 123
|
||||
* CPP_GLUE(abc, 123) => abc123
|
||||
* CPP_STR(CPP_GLUE(abc, 123)) => "CPP_GLUE(abc, 123)"
|
||||
* CPP_XSTR(CPP_GLUE(abc, 123)) => "abc123"
|
||||
* #define abc123 "xyz"
|
||||
* CPP_GLUE(abc, 123) => abc123 => "xyz"
|
||||
*/
|
||||
#ifndef CPP_GLUE
|
||||
# define CPP_GLUE(a, b) a ## b
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Provide canonical preprocessor expanded concatenation.
|
||||
*
|
||||
* #define abc 123
|
||||
* CPP_XGLUE(abc, 123) => 123123
|
||||
* CPP_STR(CPP_XGLUE(abc, 123)) => "CPP_XGLUE(abc, 123)"
|
||||
* CPP_XSTR(CPP_XGLUE(abc, 123)) => "123123"
|
||||
*/
|
||||
#ifndef CPP_XGLUE
|
||||
# define CPP_XGLUE(a, b) CPP_GLUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Provide the current filename and linenumber as a static
|
||||
* preprocessor string in "file"":""line" format (e.g., "file:123").
|
||||
*/
|
||||
#ifndef CPP_FILELINE
|
||||
# define CPP_FILELINE __FILE__ ":" CPP_XSTR(__LINE__)
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* COMMON_H */
|
||||
|
||||
/** @} */
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
26
|
||||
25
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
1
|
||||
0
|
||||
|
||||
+1
-3
@@ -118,8 +118,7 @@ struct gcv_opts
|
||||
/**
|
||||
* Assign default option values.
|
||||
*/
|
||||
GCV_EXPORT void
|
||||
gcv_opts_default(struct gcv_opts *gcv_options);
|
||||
void gcv_opts_default(struct gcv_opts *gcv_options);
|
||||
|
||||
|
||||
/**
|
||||
@@ -183,7 +182,6 @@ struct gcv_plugin {
|
||||
*/
|
||||
GCV_EXPORT const struct bu_ptbl *gcv_list_filters(void);
|
||||
|
||||
GCV_EXPORT const struct gcv_plugin *gcv_plugin_info();
|
||||
|
||||
/**
|
||||
* Perform a filtering operation on a gcv_context.
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@ GED_EXPORT extern int ged_rtwizard(struct ged *gedp, int argc, const char *argv[
|
||||
GED_EXPORT extern int ged_preview(struct ged *gedp, int argc, const char *argv[]);
|
||||
|
||||
/**
|
||||
* Save keyframe in file
|
||||
* Save keyframe in file (experimental)
|
||||
*/
|
||||
GED_EXPORT extern int ged_savekey(struct ged *gedp, int argc, const char *argv[]);
|
||||
|
||||
|
||||
@@ -70,6 +70,17 @@ GED_EXPORT extern void dl_erasePathFromDisplay(struct bu_list *hdlp,
|
||||
int allow_split,
|
||||
struct solid *freesolid);
|
||||
GED_EXPORT extern struct display_list *dl_addToDisplay(struct bu_list *hdlp, struct db_i *dbip, const char *name);
|
||||
/* When finalized, this stuff belongs in a header file of its own */
|
||||
struct polygon_header {
|
||||
uint32_t magic; /* magic number */
|
||||
int ident; /* identification number */
|
||||
int interior; /* >0 => interior loop, gives ident # of exterior loop */
|
||||
vect_t normal; /* surface normal */
|
||||
unsigned char color[3]; /* Color from containing region */
|
||||
int npts; /* number of points */
|
||||
};
|
||||
#define POLYGON_HEADER_MAGIC 0x8623bad2
|
||||
GED_EXPORT extern void dl_polybinout(struct bu_list *hdlp, struct polygon_header *ph, FILE *fp);
|
||||
|
||||
GED_EXPORT extern int invent_solid(struct bu_list *hdlp, struct db_i *dbip, void (*callback_create)(struct solid *), void (*callback_free)(unsigned int, int), char *name, struct bu_list *vhead, long int rgb, int copy, fastf_t transparency, int dmode, struct solid *freesolid, int csoltab);
|
||||
|
||||
@@ -110,6 +121,11 @@ GED_EXPORT extern int ged_plot(struct ged *gedp, int argc, const char *argv[]);
|
||||
GED_EXPORT extern int ged_png(struct ged *gedp, int argc, const char *argv[]);
|
||||
GED_EXPORT extern int ged_screen_grab(struct ged *gedp, int argc, const char *argv[]);
|
||||
|
||||
/**
|
||||
* Write out polygons (binary) of the currently displayed geometry.
|
||||
*/
|
||||
GED_EXPORT extern int ged_polybinout(struct ged *gedp, int argc, const char *argv[]);
|
||||
|
||||
/**
|
||||
* Create a postscript file of the view.
|
||||
*/
|
||||
|
||||
@@ -161,6 +161,11 @@ GED_EXPORT extern int ged_pmat(struct ged *gedp, int argc, const char *argv[]);
|
||||
*/
|
||||
GED_EXPORT extern int ged_pmodel2view(struct ged *gedp, int argc, const char *argv[]);
|
||||
|
||||
/**
|
||||
* Set point of view
|
||||
*/
|
||||
GED_EXPORT extern int ged_pov(struct ged *gedp, int argc, const char *argv[]);
|
||||
|
||||
/**
|
||||
* Get/set the view orientation using a quaternion
|
||||
*/
|
||||
|
||||
@@ -68,6 +68,25 @@ struct shadework {
|
||||
fastf_t sw_frametime; /**< @brief frame time delta off 1st frame */
|
||||
fastf_t sw_pixeltime; /**< @brief pixel time delta off 1st pixel of 1st frame */
|
||||
struct seg * sw_segs; /**< @brief segs which made partition */
|
||||
/*
|
||||
* The following is experimental. DO NOT USE
|
||||
*/
|
||||
#define SW_SET_TRANSMIT 0x01
|
||||
#define SW_SET_REFLECT 0x02
|
||||
#define SW_SET_REFRAC_INDEX 0x04
|
||||
#define SW_SET_EXTINCTION 0x10
|
||||
#define SW_SET_AMBIENT 0x20
|
||||
#define SW_SET_EMISSION 0x40
|
||||
int sw_phong_set_vector;
|
||||
fastf_t sw_phong_transmit;
|
||||
fastf_t sw_phong_reflect;
|
||||
fastf_t sw_phong_ri;
|
||||
fastf_t sw_phong_extinction;
|
||||
fastf_t sw_phong_ambient;
|
||||
fastf_t sw_phong_emission;
|
||||
/*
|
||||
* End of experimental
|
||||
*/
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
+1
-4
@@ -67,10 +67,7 @@ RT_EXPORT extern int rt_comb_describe(struct bu_vls *str,
|
||||
/**
|
||||
* fills in rgb with the color for a given comb combination
|
||||
*
|
||||
* returns truthfully if a color could be got. note that this routine
|
||||
* will not (and cannot) handle the color inherit/override flag as
|
||||
* that is set on some higher-level parent combination.
|
||||
*
|
||||
* returns truthfully if a color could be got
|
||||
*/
|
||||
RT_EXPORT extern int rt_comb_get_color(unsigned char rgb[3], const struct rt_comb_internal *comb);
|
||||
|
||||
|
||||
@@ -177,6 +177,13 @@ RT_EXPORT extern int rt_obj_params(struct pc_pc_set *ps, const struct rt_db_inte
|
||||
*/
|
||||
RT_EXPORT extern int rt_obj_mirror(struct rt_db_internal *ip, const plane_t *plane);
|
||||
|
||||
/**
|
||||
* reduce an object into some form of simpler representation
|
||||
*/
|
||||
RT_EXPORT extern void rt_obj_reduce(struct rt_db_internal *dest, const struct rt_db_internal *ip, fastf_t reduction_level, unsigned flags);
|
||||
|
||||
#define RT_OBJ_REDUCE_PRESERVE_VOLUME 0x1
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* RTFUNC_H */
|
||||
|
||||
@@ -69,18 +69,6 @@ rt_generate_mesh(int **faces, int *num_faces, point_t **points, int *num_pnts,
|
||||
|
||||
RT_EXPORT extern void rt_generic_make(const struct rt_functab *ftp, struct rt_db_internal *intern);
|
||||
|
||||
/**
|
||||
* reduce an object into some form of simpler representation
|
||||
*/
|
||||
RT_EXPORT extern void rt_reduce_obj(struct rt_db_internal *dest, const struct rt_db_internal *ip, fastf_t reduction_level, unsigned flags);
|
||||
|
||||
#define RT_REDUCE_OBJ_PRESERVE_VOLUME 0x1
|
||||
|
||||
/**
|
||||
* reduce the database hierarchy
|
||||
*/
|
||||
RT_EXPORT extern void rt_reduce_db(struct db_i *db, size_t num_preserved_attributes, const char * const * preserved_attributes, const struct bu_ptbl *preserved_combs_dirs);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* RT_MISC_H */
|
||||
|
||||
+8
-8
@@ -109,18 +109,18 @@ struct hitmiss {
|
||||
case NMG_RT_MISS_MAGIC: \
|
||||
break; \
|
||||
case NMG_MISS_LIST: \
|
||||
bu_log(CPP_FILELINE ": struct hitmiss has NMG_MISS_LIST magic #\n"); \
|
||||
bu_log(BU_FLSTR ": struct hitmiss has NMG_MISS_LIST magic #\n"); \
|
||||
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
|
||||
case NMG_HIT_LIST: \
|
||||
bu_log(CPP_FILELINE ": struct hitmiss has NMG_MISS_LIST magic #\n"); \
|
||||
bu_log(BU_FLSTR ": struct hitmiss has NMG_MISS_LIST magic #\n"); \
|
||||
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
|
||||
default: \
|
||||
bu_log(CPP_FILELINE ": bad struct hitmiss magic: %u:(0x%08x)\n", \
|
||||
bu_log(BU_FLSTR ": bad struct hitmiss magic: %u:(0x%08x)\n", \
|
||||
hm->l.magic, hm->l.magic); \
|
||||
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
|
||||
}\
|
||||
if (!hm->hit.hit_private) { \
|
||||
bu_log(CPP_FILELINE ": NULL hit_private in hitmiss struct\n"); \
|
||||
bu_log(BU_FLSTR ": NULL hit_private in hitmiss struct\n"); \
|
||||
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
|
||||
} \
|
||||
}
|
||||
@@ -261,7 +261,7 @@ struct nmg_inter_struct {
|
||||
struct bu_ptbl *l2; /**< @brief intersection between planes */
|
||||
fastf_t *mag1; /**< @brief Distances along intersection line */
|
||||
fastf_t *mag2; /**< @brief for each vertexuse in l1 and l2. */
|
||||
size_t mag_len; /**< @brief Array size of mag1 and mag2 */
|
||||
int mag_len; /**< @brief Array size of mag1 and mag2 */
|
||||
struct shell *s1;
|
||||
struct shell *s2;
|
||||
struct faceuse *fu1; /**< @brief null if l1 comes from a wire */
|
||||
@@ -274,7 +274,7 @@ struct nmg_inter_struct {
|
||||
point_t pt2d; /**< @brief 2D projection of isect line */
|
||||
vect_t dir2d;
|
||||
fastf_t *vert2d; /**< @brief Array of 2d vertex projections [index] */
|
||||
size_t maxindex; /**< @brief size of vert2d[] */
|
||||
int maxindex; /**< @brief size of vert2d[] */
|
||||
mat_t proj; /**< @brief Matrix to project onto XY plane */
|
||||
const uint32_t *twod; /**< @brief ptr to face/edge of 2d projection */
|
||||
};
|
||||
@@ -685,8 +685,8 @@ RT_EXPORT extern void nmg_ck_fu(const struct shell *s,
|
||||
const char *str);
|
||||
RT_EXPORT extern int nmg_ck_eg_verts(const struct edge_g_lseg *eg,
|
||||
const struct bn_tol *tol);
|
||||
RT_EXPORT extern size_t nmg_ck_geometry(const struct model *m,
|
||||
const struct bn_tol *tol);
|
||||
RT_EXPORT extern int nmg_ck_geometry(const struct model *m,
|
||||
const struct bn_tol *tol);
|
||||
RT_EXPORT extern int nmg_ck_face_worthless_edges(const struct faceuse *fu);
|
||||
RT_EXPORT extern void nmg_ck_lueu(const struct loopuse *lu, const char *s);
|
||||
RT_EXPORT extern int nmg_check_radial(const struct edgeuse *eu, const struct bn_tol *tol);
|
||||
|
||||
@@ -154,6 +154,35 @@ RT_EXPORT extern size_t db_ls(const struct db_i *dbip,
|
||||
globbing rules (default) */
|
||||
|
||||
|
||||
/* db_glob.c */
|
||||
|
||||
|
||||
/* These are general globbing flags. */
|
||||
#define DB_GLOB_HIDDEN 0x1 /**< @brief include hidden objects in results */
|
||||
#define DB_GLOB_NON_GEOM 0x2 /**< @brief include non-geometry objects in results */
|
||||
#define DB_GLOB_SKIP_FIRST 0x4 /**< @brief do not expand the first item */
|
||||
|
||||
/**
|
||||
* db_glob takes a string and expands wildcard patterns in the string by
|
||||
* matching object names in the database instance dbip according to globbing
|
||||
* rules (see bu_fnmatch).
|
||||
*
|
||||
* The caller is responsible for providing a non-null vls destination buffer.
|
||||
*
|
||||
* Returns -
|
||||
* number of dbip objects added to string
|
||||
* expanded string in dest bu_vls
|
||||
*
|
||||
* TODO - use flags for skip first, do/don't expand hidden, etc.
|
||||
*
|
||||
* Note - deliberately did not name this fuction db_glob - probably want a more
|
||||
* powerful globbing API than just strings for more general usage...
|
||||
*/
|
||||
RT_EXPORT int
|
||||
db_expand_str_glob(struct bu_vls *dest, const char *input, struct db_i *dbip, int skip_first);
|
||||
|
||||
|
||||
|
||||
/***************************************************************
|
||||
* DEPRECATED - all structures and functions below this notice
|
||||
* are replaced by functionality above. Remove after 7.27.0
|
||||
|
||||
@@ -57,106 +57,102 @@ define_property(GLOBAL PROPERTY CMAKE_IGNORE_FILES BRIEF_DOCS "distcheck ignore
|
||||
define_property(GLOBAL PROPERTY CMAKE_IGNORE_DIRS BRIEF_DOCS "distcheck ignore dirs" FULL_DOCS "List of directories marked as fully known to CMake")
|
||||
|
||||
macro(CMAKEFILES)
|
||||
if(NOT BRLCAD_IS_SUBBUILD)
|
||||
foreach(ITEM ${ARGN})
|
||||
set(CMAKEFILES_DO_TEST 1)
|
||||
# The build targets will use certain keywords for arguments -
|
||||
# before we proceed to do any ignoring based on those names,
|
||||
# make sure the file is there. Normally attempting to ignore
|
||||
# a non-existent file is a fatal error, but these keywords
|
||||
# don't necessarily refer to files.
|
||||
set(TARGET_FLAGS SHARED STATIC OBJECT WIN32 UNKNOWN IMPORTED MODULE INTERFACE)
|
||||
foreach(TARGET_FLAG ${TARGET_FLAGS})
|
||||
if("${TARGET_FLAG}" STREQUAL "${ITEM}")
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set(CMAKEFILES_DO_TEST 0)
|
||||
endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
endif("${TARGET_FLAG}" STREQUAL "${ITEM}")
|
||||
endforeach(TARGET_FLAG ${TARGET_FLAGS})
|
||||
set(FUZZY_TARGET_FLAGS TARGET_OBJECTS)
|
||||
foreach(TARGET_FLAG ${FUZZY_TARGET_FLAGS})
|
||||
if("${ITEM}" MATCHES "${TARGET_FLAG}")
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set(CMAKEFILES_DO_TEST 0)
|
||||
endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
endif("${ITEM}" MATCHES "${TARGET_FLAG}")
|
||||
endforeach(TARGET_FLAG ${FUZZY_TARGET_FLAGS})
|
||||
foreach(ITEM ${ARGN})
|
||||
set(CMAKEFILES_DO_TEST 1)
|
||||
# The build targets will use certain keywords for arguments -
|
||||
# before we proceed to do any ignoring based on those names,
|
||||
# make sure the file is there. Normally attempting to ignore
|
||||
# a non-existent file is a fatal error, but these keywords
|
||||
# don't necessarily refer to files.
|
||||
set(TARGET_FLAGS SHARED STATIC OBJECT WIN32 UNKNOWN IMPORTED MODULE INTERFACE)
|
||||
foreach(TARGET_FLAG ${TARGET_FLAGS})
|
||||
if("${TARGET_FLAG}" STREQUAL "${ITEM}")
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set(CMAKEFILES_DO_TEST 0)
|
||||
endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
endif("${TARGET_FLAG}" STREQUAL "${ITEM}")
|
||||
endforeach(TARGET_FLAG ${TARGET_FLAGS})
|
||||
set(FUZZY_TARGET_FLAGS TARGET_OBJECTS)
|
||||
foreach(TARGET_FLAG ${FUZZY_TARGET_FLAGS})
|
||||
if("${ITEM}" MATCHES "${TARGET_FLAG}")
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set(CMAKEFILES_DO_TEST 0)
|
||||
endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
endif("${ITEM}" MATCHES "${TARGET_FLAG}")
|
||||
endforeach(TARGET_FLAG ${FUZZY_TARGET_FLAGS})
|
||||
|
||||
# Handled target flags, proceeding with tests.
|
||||
if(CMAKEFILES_DO_TEST)
|
||||
get_filename_component(ITEM_PATH "${ITEM}" PATH)
|
||||
get_filename_component(ITEM_NAME "${ITEM}" NAME)
|
||||
if(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
# If the build directory is not the same as the source
|
||||
# directory, we can enforce the convention that only
|
||||
# generated files be specified with their full name.
|
||||
# If this becomes a problem with the third party build
|
||||
# systems at some point in the future, we may have to
|
||||
# exclude src/other paths from this check.
|
||||
if(NOT "${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
IS_SUBPATH("${CMAKE_BINARY_DIR}" "${ITEM_PATH}" SUBPATH_TEST)
|
||||
if("${SUBPATH_TEST}" STREQUAL "0")
|
||||
IS_SUBPATH("${CMAKE_SOURCE_DIR}" "${ITEM_PATH}" SUBPATH_TEST)
|
||||
if("${SUBPATH_TEST}" STREQUAL "1")
|
||||
message(FATAL_ERROR "${ITEM} is listed in \"${CMAKE_CURRENT_SOURCE_DIR}\" using its absolute path. Please specify the location of this file using a relative path.")
|
||||
endif("${SUBPATH_TEST}" STREQUAL "1")
|
||||
endif("${SUBPATH_TEST}" STREQUAL "0")
|
||||
endif(NOT "${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
# Ignore files specified using full paths, since they
|
||||
# should be generated files and are not part of the
|
||||
# source code repository.
|
||||
get_filename_component(ITEM_ABS_PATH "${ITEM_PATH}" ABSOLUTE)
|
||||
if(NOT "${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}")
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
message(FATAL_ERROR "Attempting to ignore non-existent file ${ITEM}, in directory \"${CMAKE_CURRENT_SOURCE_DIR}\"")
|
||||
endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
# Append files and directories to their respective lists.
|
||||
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_DIRS "${ITEM_ABS_PATH}/${ITEM_NAME}")
|
||||
else(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}/${ITEM_NAME}")
|
||||
endif(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}")
|
||||
# Add the parent directories of the specified file or directory as well -
|
||||
# the convention is that once at least one file or directory in a path is recorded
|
||||
# by the build logic, the parent directories along that path have also been recorded.
|
||||
while(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
get_filename_component(ITEM_NAME "${ITEM_PATH}" NAME)
|
||||
get_filename_component(ITEM_PATH "${ITEM_PATH}" PATH)
|
||||
if(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
get_filename_component(ITEM_ABS_PATH "${ITEM_PATH}" ABSOLUTE)
|
||||
if(NOT "${ITEM_NAME}" STREQUAL "..")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}")
|
||||
endif(NOT "${ITEM_NAME}" STREQUAL "..")
|
||||
endif(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
endwhile(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
endif(NOT "${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}")
|
||||
else(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
# The easy case - no path specified, so assume the current source directory.
|
||||
# Handled target flags, proceeding with tests.
|
||||
if(CMAKEFILES_DO_TEST)
|
||||
get_filename_component(ITEM_PATH "${ITEM}" PATH)
|
||||
get_filename_component(ITEM_NAME "${ITEM}" NAME)
|
||||
if(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
# If the build directory is not the same as the source
|
||||
# directory, we can enforce the convention that only
|
||||
# generated files be specified with their full name.
|
||||
# If this becomes a problem with the third party build
|
||||
# systems at some point in the future, we may have to
|
||||
# exclude src/other paths from this check.
|
||||
if(NOT "${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
IS_SUBPATH("${CMAKE_BINARY_DIR}" "${ITEM_PATH}" SUBPATH_TEST)
|
||||
if("${SUBPATH_TEST}" STREQUAL "0")
|
||||
IS_SUBPATH("${CMAKE_SOURCE_DIR}" "${ITEM_PATH}" SUBPATH_TEST)
|
||||
if("${SUBPATH_TEST}" STREQUAL "1")
|
||||
message(FATAL_ERROR "${ITEM} is listed in \"${CMAKE_CURRENT_SOURCE_DIR}\" using its absolute path. Please specify the location of this file using a relative path.")
|
||||
endif("${SUBPATH_TEST}" STREQUAL "1")
|
||||
endif("${SUBPATH_TEST}" STREQUAL "0")
|
||||
endif(NOT "${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
# Ignore files specified using full paths, since they
|
||||
# should be generated files and are not part of the
|
||||
# source code repository.
|
||||
get_filename_component(ITEM_ABS_PATH "${ITEM_PATH}" ABSOLUTE)
|
||||
if(NOT "${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}")
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
message(FATAL_ERROR "Attempting to ignore non-existent file ${ITEM}, in directory \"${CMAKE_CURRENT_SOURCE_DIR}\"")
|
||||
endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
# Append files and directories to their respective lists.
|
||||
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM_NAME}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_DIRS "${ITEM_ABS_PATH}/${ITEM_NAME}")
|
||||
else(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM_NAME}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}/${ITEM_NAME}")
|
||||
endif(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
endif(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
endif(CMAKEFILES_DO_TEST)
|
||||
endforeach(ITEM ${ARGN})
|
||||
endif(NOT BRLCAD_IS_SUBBUILD)
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}")
|
||||
# Add the parent directories of the specified file or directory as well -
|
||||
# the convention is that once at least one file or directory in a path is recorded
|
||||
# by the build logic, the parent directories along that path have also been recorded.
|
||||
while(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
get_filename_component(ITEM_NAME "${ITEM_PATH}" NAME)
|
||||
get_filename_component(ITEM_PATH "${ITEM_PATH}" PATH)
|
||||
if(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
get_filename_component(ITEM_ABS_PATH "${ITEM_PATH}" ABSOLUTE)
|
||||
if(NOT "${ITEM_NAME}" STREQUAL "..")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}")
|
||||
endif(NOT "${ITEM_NAME}" STREQUAL "..")
|
||||
endif(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
endwhile(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
endif(NOT "${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}")
|
||||
else(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
# The easy case - no path specified, so assume the current source directory.
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
message(FATAL_ERROR "Attempting to ignore non-existent file ${ITEM}, in directory \"${CMAKE_CURRENT_SOURCE_DIR}\"")
|
||||
endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM_NAME}")
|
||||
else(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM_NAME}")
|
||||
endif(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
|
||||
endif(NOT "${ITEM_PATH}" STREQUAL "")
|
||||
endif(CMAKEFILES_DO_TEST)
|
||||
endforeach(ITEM ${ARGN})
|
||||
endmacro(CMAKEFILES FILESLIST)
|
||||
|
||||
# Routine to tell distcheck to ignore a series of items in a directory. Items may themselves
|
||||
# be directories. Primarily useful when working with src/other dist lists.
|
||||
# be directories.
|
||||
macro(CMAKEFILES_IN_DIR filestoignore targetdir)
|
||||
if(NOT BRLCAD_IS_SUBBUILD)
|
||||
set(CMAKE_IGNORE_LIST "")
|
||||
foreach(filepath ${${filestoignore}})
|
||||
set(CMAKE_IGNORE_LIST ${CMAKE_IGNORE_LIST} "${targetdir}/${filepath}")
|
||||
endforeach(filepath ${filestoignore})
|
||||
CMAKEFILES(${CMAKE_IGNORE_LIST})
|
||||
endif(NOT BRLCAD_IS_SUBBUILD)
|
||||
set(CMAKE_IGNORE_LIST "")
|
||||
foreach(filepath ${${filestoignore}})
|
||||
set(CMAKE_IGNORE_LIST ${CMAKE_IGNORE_LIST} "${targetdir}/${filepath}")
|
||||
endforeach(filepath ${filestoignore})
|
||||
CMAKEFILES(${CMAKE_IGNORE_LIST})
|
||||
endmacro(CMAKEFILES_IN_DIR)
|
||||
|
||||
# Local Variables:
|
||||
|
||||
@@ -50,7 +50,7 @@ CHECK_CXX_FLAG(fstrength-reduce GROUPS OPTIMIZE_CXX_FLAGS)
|
||||
CHECK_CXX_FLAG(fexpensive-optimizations GROUPS OPTIMIZE_CXX_FLAGS)
|
||||
CHECK_CXX_FLAG(finline-functions GROUPS OPTIMIZE_CXX_FLAGS)
|
||||
CHECK_CXX_FLAG("finline-limit=10000 --param inline-unit-growth=300 --param large-function-growth=300" GROUPS OPTIMIZE_CXX_FLAGS)
|
||||
if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
|
||||
if(${OPTIMIZED_BUILD} MATCHES "ON")
|
||||
if(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
|
||||
CHECK_C_FLAG(fomit-frame-pointer GROUPS OPTIMIZE_C_FLAGS)
|
||||
CHECK_CXX_FLAG(fomit-frame-pointer GROUPS OPTIMIZE_CXX_FLAGS)
|
||||
@@ -58,20 +58,20 @@ if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
|
||||
CHECK_C_FLAG(fno-omit-frame-pointer GROUPS OPTIMIZE_C_FLAGS)
|
||||
CHECK_CXX_FLAG(fno-omit-frame-pointer GROUPS OPTIMIZE_CXX_FLAGS)
|
||||
endif(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
|
||||
endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
|
||||
endif(${OPTIMIZED_BUILD} MATCHES "ON")
|
||||
|
||||
if(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
set(opt_conf_list "Release")
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
|
||||
if(${OPTIMIZED_BUILD} MATCHES "ON")
|
||||
set(opt_conf_list "ALL")
|
||||
endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
|
||||
endif(${OPTIMIZED_BUILD} MATCHES "ON")
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
else(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
|
||||
if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
|
||||
if(${OPTIMIZED_BUILD} MATCHES "ON")
|
||||
set(opt_conf_list "ALL")
|
||||
endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
|
||||
endif(${OPTIMIZED_BUILD} MATCHES "ON")
|
||||
endif(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
|
||||
if(opt_conf_list)
|
||||
ADD_NEW_FLAG(C OPTIMIZE_C_FLAGS "${opt_conf_list}")
|
||||
@@ -82,29 +82,29 @@ endif(opt_conf_list)
|
||||
# intended to help make it easier to identify problematic code but
|
||||
# only when compiling unoptimized (because the extra barrier checks
|
||||
# can affect the memory footprint and runtime performance.
|
||||
if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
|
||||
if(${OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
|
||||
CHECK_C_FLAG(fstack-protector-all)
|
||||
CHECK_CXX_FLAG(fstack-protector-all)
|
||||
# checking both in case compiling c/c++ with different compilers
|
||||
CHECK_C_FLAG(qstackprotect)
|
||||
CHECK_CXX_FLAG(qstackprotect)
|
||||
endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
|
||||
endif(${OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
|
||||
|
||||
# enable memory error detector AddressSanitizer (see
|
||||
# https://code.google.com/p/address-sanitizer/ for more info.)
|
||||
if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_ADDRESS_SANITIZER)
|
||||
if(${OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_ADDRESS_SANITIZER)
|
||||
CHECK_C_FLAG(fsanitize=address)
|
||||
CHECK_C_FLAG(fno-omit-frame-pointer)
|
||||
CHECK_CXX_FLAG(fsanitize=address)
|
||||
CHECK_CXX_FLAG(fno-omit-frame-pointer)
|
||||
endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_ADDRESS_SANITIZER)
|
||||
endif(${OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_ADDRESS_SANITIZER)
|
||||
|
||||
# enable data race detector ThreadSanitizer (see
|
||||
# https://code.google.com/p/thread-sanitizer/ for more info.)
|
||||
if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_THREAD_SANITIZER)
|
||||
if(${OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_THREAD_SANITIZER)
|
||||
CHECK_C_FLAG(fsanitize=thread)
|
||||
CHECK_CXX_FLAG(fsanitize=thread)
|
||||
endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_THREAD_SANITIZER)
|
||||
endif(${OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND BRLCAD_THREAD_SANITIZER)
|
||||
|
||||
|
||||
# verbose warning flags. we intentionally try to turn on as many as
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user