Compare commits

..
36 Commits
Author SHA1 Message Date
Christopher Sean Morrison 6f5c60a5d0 for testing, this applies rudimentary hacked updates (not intended for merge to trunk) that get this branch compiling again.
svn:revision:76064
svn:branch:opencl
svn:account:brlcad
2020-06-08 08:12:36 +00:00
Vasco Alexandre da Silva Costa 11023d8fae Revert CMakeFile changes.
svn:revision:73935
svn:branch:opencl
svn:account:vasco_costa
2019-09-16 14:48:18 +00:00
Vasco Alexandre da Silva Costa b46c224ec3 Use trunk X11 detection routine so includes are detected on modern distros.
svn:revision:73934
svn:branch:opencl
svn:account:vasco_costa
2019-09-16 14:20:23 +00:00
Vasco Alexandre da Silva Costa b2f435f2e1 Rebased opencl branch to r70379 trunk.
svn:revision:73933
svn:branch:opencl
svn:account:vasco_costa
2019-09-16 13:39:22 +00:00
Vasco Alexandre da Silva Costa fedb19296a Remove outdated opencl branch.
(svn branch delete)

svn:revision:73932
svn:branch:opencl
svn:account:vasco_costa
2019-09-16 13:09:25 +00:00
Marco da Silva Domingues 625134177d removing unused case conditions from rt_pr_bit_tree(). These operations are internal to bool_eval() function and will never occur in the bit tree
svn:revision:70081
svn:branch:opencl
svn:account:mdtwenty
2017-08-15 14:05:24 +00:00
Marco da Silva Domingues 1ed45a086f passing first region index to overlap handler
svn:revision:70080
svn:branch:opencl
svn:account:mdtwenty
2017-08-15 13:42:51 +00:00
Vasco Alexandre da Silva Costa fb112992d2 Remove unused code.
svn:revision:70079
svn:branch:opencl
svn:account:vasco_costa
2017-08-14 19:17:24 +00:00
Vasco Alexandre da Silva Costa 09898fa192 Fix materials in 'a_no_booleans' OpenCL librt render mode.
svn:revision:70078
svn:branch:opencl
svn:account:vasco_costa
2017-08-14 19:16:24 +00:00
Vasco Alexandre da Silva Costa e67e8d322b Add option to disable boolean weaving in OpenCL librt.
svn:revision:70075
svn:branch:opencl
svn:account:vasco_costa
2017-08-14 18:40:10 +00:00
Marco da Silva Domingues 73ccb38402 bool_eval() function using new boolean tree representation, where each tree node is encoded in 32 bits
svn:revision:70074
svn:branch:opencl
svn:account:mdtwenty
2017-08-11 20:37:09 +00:00
Marco da Silva Domingues c4aff86f6e Removed next_evalpp field from cl_partition struct
svn:revision:70057
svn:branch:opencl
svn:account:mdtwenty
2017-08-08 13:19:21 +00:00
Marco da Silva Domingues 1fe3511218 Fix bug in partitions shading. Shading closest partition
svn:revision:70034
svn:branch:opencl
svn:account:mdtwenty
2017-08-01 13:33:56 +00:00
Marco da Silva Domingues 28c18f2fea skipping unevaluated partitions
svn:revision:70033
svn:branch:opencl
svn:account:mdtwenty
2017-08-01 00:16:31 +00:00
Marco da Silva Domingues e01866abd2 fixed some indentation and coding style issues
svn:revision:70032
svn:branch:opencl
svn:account:mdtwenty
2017-07-31 21:14:26 +00:00
Vasco Alexandre da Silva Costa d9e8d82039 Add note to code to split 'struct hit' to conserve memory.
svn:revision:70017
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 22:38:43 +00:00
Vasco Alexandre da Silva Costa dc12cef9db Cleanups.
svn:revision:70015
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 22:02:04 +00:00
Vasco Alexandre da Silva Costa 466eb4eafb Optimize regiontable construction. Patch by Marco Domingues.
svn:revision:70014
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 21:44:22 +00:00
Vasco Alexandre da Silva Costa 84487b75db Fix bugs in log function.
svn:revision:70011
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 06:16:10 +00:00
Vasco Alexandre da Silva Costa 7f631ab752 Use proper materials from regions. This fixes the materials selection issues.
svn:revision:70010
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 06:09:16 +00:00
Vasco Alexandre da Silva Costa 66c37fa169 Remove unused variables.
svn:revision:70009
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 04:00:52 +00:00
Vasco Alexandre da Silva Costa 788bfe4085 Use bool type instead of int for flip flag.
svn:revision:70008
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 03:50:45 +00:00
Vasco Alexandre da Silva Costa 94238825fb Use ternary selection operator ?: as shorthand for select().
svn:revision:70007
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 03:33:07 +00:00
Vasco Alexandre da Silva Costa e05550c55e Fix normals in inner regions. Patch by Marco Domingues.
svn:revision:70006
svn:branch:opencl
svn:account:vasco_costa
2017-07-28 03:08:12 +00:00
Vasco Alexandre da Silva Costa 98b8d98412 patch #472 by Marco Domingues: faster iteration over sparse bitarrays. fix memory pointer address bugs. fix render with 'e *' command. use one regiontable per ray instead of one per partition.
svn:revision:69981
svn:branch:opencl
svn:account:vasco_costa
2017-07-21 19:46:08 +00:00
Vasco Alexandre da Silva Costa bd35b711ef Forgot to add this file on my last commit.
svn:revision:69973
svn:branch:opencl
svn:account:vasco_costa
2017-07-19 21:29:09 +00:00
Vasco Alexandre da Silva Costa aa56640ee7 Fix some indentation and coding style issues.
svn:revision:69965
svn:branch:opencl
svn:account:vasco_costa
2017-07-18 12:45:59 +00:00
Vasco Alexandre da Silva Costa ac01d68fed Add OpenCL CSG operator patch #472 from Marco Domingues.
It still has some bugs on it. But it's getting large enough that it's better to use SVN to collaborate on it.

svn:revision:69964
svn:branch:opencl
svn:account:vasco_costa
2017-07-18 12:21:43 +00:00
Vasco Alexandre da Silva Costa 2815cbea97 Added #417 RPN booleval patch.
svn:revision:69924
svn:branch:opencl
svn:account:vasco_costa
2017-06-21 18:09:23 +00:00
Vasco Alexandre da Silva Costa fff4d55ae3 The new OpenCL CMake script uses different env variable names so we need to update that.
svn:revision:69923
svn:branch:opencl
svn:account:vasco_costa
2017-06-21 17:47:50 +00:00
Vasco Alexandre da Silva Costa 38e67c5c53 Use OpenCL CMake script from: https://github.com/Kitware/CMake/blob/master/Modules/FindOpenCL.cmake
svn:revision:69922
svn:branch:opencl
svn:account:vasco_costa
2017-06-21 17:21:36 +00:00
Vasco Alexandre da Silva Costa fcaf54c7f8 Rebased opencl branch to r69920 trunk.
svn:revision:69921
svn:branch:opencl
svn:account:vasco_costa
2017-06-21 17:11:31 +00:00
Clifford Yapp b58a84aef0 Sync with trunk thru 69860
svn:revision:69865
svn:branch:opencl
svn:account:starseeker
2017-05-31 17:22:28 +00:00
Clifford Yapp 51a5b0e4ee Sync with trunk thru r69558
svn:revision:69563
svn:branch:opencl
svn:account:starseeker
2017-03-23 23:40:25 +00:00
Clifford Yapp 68a5f85b25 Sync with trunk thru r68370
svn:revision:68375
svn:branch:opencl
svn:account:starseeker
2016-07-19 19:56:11 +00:00
Clifford Yapp 30569fb065 Sync with trunk thru r68300. src/librt/bool.c and src/librt/prep.h look fairly different from trunk - someone needs to check the status of those after merge and see if it came out right.
svn:revision:68308
svn:branch:opencl
svn:account:starseeker
2016-08-31 01:32:07 +00:00
8331 changed files with 2985934 additions and 1778029 deletions
-41
View File
@@ -385,10 +385,6 @@ nicknames sofat
2015 June
Open Source (GSoC)
Sieu, Jeff
2017 December
Open Source (GCI)
CODE CONTRIBUTIONS
------------------
@@ -721,11 +717,6 @@ Govindjee, Arjun
2012 December
Open Source (GCI)
Ramirez, Daniel
nicknames javamonn
2012 December
Open Source (GCI)
Nagy, Csaba
nicknames ncsaba
2013 April
@@ -861,10 +852,6 @@ Hanji, Param
2016 March
Open Source (GSoC)
Wu, Bojian
2016 June
Open Source (GSoC)
Bagavathy, Rakshika
nicknames tandoorichick
2016 October
@@ -879,30 +866,6 @@ nicknames gabbar1947
2017 April
Open Source
nicknames Rakete1111
2017 November
Open Source
Narayan, Saran
nicknames sharannyn
2018 April
Open Source (GSoC)
Shinde, Chetan
nicknames chetanshinde911
2019 April
Open Source (GSoC)
Haydar, Ali
nicknames lois221
2019 May
Open Source (GSoC)
Vaidya, Sahil
nicknames sahilvaidya99
2020 April
ARL Student Hire / University of Texas at Austin
SPECIAL THANKS
--------------
@@ -1213,10 +1176,6 @@ Sagarwal
2017 January
Open Source (GCI)
Liu, Jeffrey
2019 December
Open Source (GCI)
CORPORATE AND ORGANIZATION SUPPORT
----------------------------------
+21 -100
View File
@@ -15,103 +15,6 @@ on-going issues.
Recent Bugs
-----------
* apparently all four BRL-CAD Tutorial Series volumes are missing from
our bibliography...
* Tessellating an ETO with a normal tolerance results in stack
smashing due to bad logic in recursive algorithm: set norm 2;
facetize my.eto my.bot;. Observed infinite recursion in both
make_ellipse4() in eto.c and (after adding max recursion test) in
paint_face() in manif.c:190
* bot_dump -o file.obj is possibly generating invalid OBJ files.
tested on two different pieces of software including xcode and cura,
both failed to read our obj files where stl worked.
* mater -d information stored in the .g file doesn't survive a
garbage collection operation.
* fix checker.sh script and/or overlap GUI so that the latter will
read the resulting overlap pairings file from the prior.
alternatively, need to be able to run overlap check on server
without GUI, so could implement an overlaps file output option to be
run via mged -c.
* running 'put' on geometry that is already displayed results in a NaN
view (at least View and Eye_pos parameters are non) despite geometry
still being displayed. this causes 'rt' to fly into an infinite
loop, presumably trying to increment rays from the eye position.
* icv dpix support is not cross-platform (it writes out native, reads
in assuming same encoding). regression tests fail on big endian.
* creating an object with a slashes in the name (e.g., cp foo foo/R)
results in an object that cannot be deleted/renamed. bad behavior
presumably extends to any name with path separators.
* mirror command rejects brep solids and turns faces inside-out when
mirroring a comb with brep solids below it.
* rtsil command works if do what usage says and redirect output to
file, but mentions .pix when data is actually .bw; and using the -o
option results in a black image. it is also inconsistent, writing a
black silhouette on a white background, instead of black on white
and missing background color options.
* make sph sph
clone -i 1 -t 1000 0 0 -n 100 sph
kill sph
g line sph*
clone -i 1 -t 0 1000 0 -n 100 line
kill line
g square line*
clone -i 1 -t 0 0 1000 -n 100 square
... never returns ...
This should be merely 1M spheres, but something chokes. Could be
somewhere in the Tk layer. Maybe somewhere in the db layer. Maybe
something is corrupted by clone when it
* If we draw any form, then trace it using rt, then change of database
(by clicking file>open and selecting another database), badness
ensues. One report has quitting the rt window causing a segfault.
Another (confirmed) hung mged (stuck/inf loop).
* annotation bugs:
in sph1.s sph 0 0 0 10
in ann1.s annot 0 0 0 test1 10 10 3 1
in ann2.s annot 30 30 30 test2 40 40 3 1
# ann2.s's label looks wrong, points at origin?
in ann3.s annot 0 0 0 1 10 10 3 1
# using numbers for a label results in no label
* make eto eto
tol norm 1
facetize eto.bot eto
[crashes due to excessive recursion]
* crash in rt_bot_xform() due to a bot being marked as having face
normals, but didn't. bot probably written wrong via conversion
to/from obj or asc. found importing teapot.
* rtedge with perspective is wrong. it fills in nearly entire faces,
vertically in particular. it's worse on small sized renders, and
gets better the larger the render size (indicating there's some
neighbor distance coming into play that is not affected by
max_dist). eoes not happen in non-perspective ray-traces.
* a character is (still) sometimes captured by the cursor box. steps
to reproduce:
1) write a word on the mged command prompt ("e.g. hello")
2) select the word to end of line with mouse
3) paste the word (e.g., middle mouse) and press enter
4) type "hello" again and press enter
you should now see an "o" in the yellow cursor box. sometimes
you'll see the "o" after step 3. running "clear" resets the cursor.
* get_regions tcl command doesn't respond well to situations where
child object names in combs have dashes (the "-" character) in
names. It tries to interpret the dash as an argument delimiter.
@@ -148,6 +51,10 @@ Recent Bugs
private memory -- looks like private memory is not initialized
(observed on Mac 10.6, Windows, and Ubuntu Linux using 7.26).
* rtedge's overlay mode appears to be generating different results on
Windows and Linux for the m35 steering wheel (rtwizard rendering
mode D.)
* pixdiff on Windows is reporting no differences with a pair of files
that pixcmp can see differences in.
@@ -344,6 +251,9 @@ Recent Bugs
sub-1sec fps, Z/B after rotating wireframe but before update
finishes drawing.
* rtedge help shows redirection to a file working, but it does not
seem to work (zero-file results).
* report of rt aborting randomly on 64-bit with camo shader.
* mged raytrace fails with simple "raytrace failed" message when using
@@ -364,12 +274,12 @@ Recent Bugs
* hyp tessellation routine creates bot that does not raytrace
* hyp used in a boolean with other objects (even unions) does not
raytrace
* if you attach a display manager in tk-mged, kill the window, then
quit, mged crashes on exit.
* CMD-b and CMD-f navigates the mged command window text widget on Mac
and trivially causes problems with the cursor and text injection.
* mged segfaults when drawing lots of solids at once (e.g. draw *.s)
* mged command mode doesn't display the output of multiple
@@ -405,6 +315,11 @@ Recent Bugs
display manager window. mged classic mode, where there is no
parent window, exhibits the bad rotate behavior immediately.
* rtedge fills in nearly entire faces of an object when executing on a
model that is in perspective mode. Effects really bad on small sized
renders, and gets better the larger the render size. Does not happen
in non-perspective ray-traces.
* infinite light sources close to objects result in unexpected/bad
light behavior. example is a 1m sph light about 5m from a box about
1k x 1k x 1k in size. setting make each light be red, green, and
@@ -529,6 +444,8 @@ Recent Bugs
* overlap tool in mged encourages very inefficient CSG operations
(e.g. a simple bolt with an entire hull armor subtracted)
* a character is (still) sometimes captured by the cursor box
* permute (in mged) requires apply or save before 'new' vertex values
will function properly as keypoints.
@@ -569,6 +486,10 @@ Recent Bugs
* triangulation of some pipe in toyjeep.g fails (rather reliably) on
some given bend. fails in nmg_triangulate model().
* rtedge is not respecting the -c"set" options. needs to give some
indication that they were parsed too since it ignores unrecognized
values apparently.
* fbhelp sends some of the output to stdout and some to stderr...
* debugbu 2 immediately reports a bu_vls_free() error.. apparently
+68 -261
View File
@@ -95,7 +95,7 @@ header, and is published via the 7.50.4 release.
The soonest that function could be removed / obsoleted would be in
7.54.0 during 7.53.* development provided more than 90 days had passed
since the initial announcement. It could NOT be removed in 7.54.2 as
since the intiial announcement. It could NOT be removed in 7.54.2 as
that's a patch version, prior to 7.54, nor during 7.54.0 if less than
90 days had passed since 7.50.6 was posted.
@@ -120,45 +120,15 @@ under MINIMALLY IMPACTING CHANGES.
The interfaces announced below are scheduled to significantly change
or be removed. They are categorized by the release in which
deprecation was first announced. If the interface change involved a
deprecation was first announced. If the inteface change involved a
removal or transition, both the original and new interface names are
generally listed for reference.
Items marked with a "'" (single quote) are undocumented and may be
removed at any time.
7.30
----
~/.density
automatic reading of .density file in home directory
materials need to be specified or imported [deprecated 7.28]
btclsh, bwish
Emacs key binding emulation
achieved by running btclsh in Emacs [deprecated 7.30]
include/bu/redblach.h
All redblack related functions, structures and macros
defined in libbu's redblack.h. Functions are:
bu_rb_create, bu_rb_delete, bu_rb_diagnose_tree,
bu_rb_summarize_tree, bu_rb_extreme, bu_rb_neighbor,
bu_rb_curr, bu_rb_free, bu_rb_insert, bu_rb_is_uniq,
bu_rb_set_uniqv, bu_rb_uniq_all_off, bu_rb_uniq_all_on,
bu_rb_uniq_on, bu_rb_uniq_off, bu_rb_rank, bu_rb_select,
bu_rb_search, bu_rb_walk
Use C++ containers set/map from std [deprecated 7.30]
nirt
Behavior available under the --old flag [deprecated 7.30]
7.28
----
include/bu/malloc.h
bu_ck_malloc_ptr, bu_mem_barriercheck, bu_prmem
replaced by modern memory analyzers [deprecated 7.28]
include/rt/mem.h
rt_memprint [deprecated 7.28]
include/vmath.h
VCOMB3, VCOMB3N, VJOIN4
@@ -171,16 +141,37 @@ MGED commands
savekey, shaded_mode, sync
Removed as part of distillation effort [deprecated 7.28]
libtermio, libcursor
Public API scope reduction - any client code that needs
to interact with the terminal at these levels should handle
what is needed locally.
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
@@ -189,13 +180,30 @@ signal analysis tools
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
Removed as part of distillation effort [deprecated 7.26]
misc tools
fix_polysolids' : obsolete primitive
remapid : superseded by reid+remat
buffer : unnecessary 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]
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]
nirt
-T - use LIBRT_BOT_MINTIE environment variable instead [deprecated 7.26]
all global variables
@@ -209,6 +217,7 @@ include/raytrace.h
tcl_obj_to_fastf_array tcl_list_to_int_array
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]
@@ -222,6 +231,8 @@ 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]
pixcut, pixpaste
copyright cleanup [deprecated 7.26]
librt, fast4-g
removal of CLINE entity support [deprecated 7.26]
mged
@@ -234,9 +245,19 @@ mged
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]
7.24
----
fbed, pp-fb
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]
src/irprep
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]
@@ -246,6 +267,10 @@ include/raytrace.h librt
nmg_model_break_e_on_v -> nmg_break_e_on_v [deprecation 7.22]
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]
mged
em, e_muves, l_muves, lm, read_muves, and t_muves MUVES-specific commands [deprecated 7.22]
7.20
----
@@ -261,6 +286,7 @@ GNU Autotools configure compatibility script
./configure -> cmake . [deprecated 7.20]
include/raytrace.h
rt_load_attrs() -> rt_gettrees_and_attrs() or db5_import_attributs() [deprecated 7.20]
db_regexp_match() -> !bu_fnmatch() [deprecated 7.20]
7.18
----
@@ -354,83 +380,12 @@ include/raytrace.h
*** OBSOLETED CHANGES ***
**********************************************************************
(reverse chronological order)
7.30.2
------
ray tracing tools
lgt : functionally replaced by nirt
rtcell', rtfrac', rtpp, rtrad', rtrange, rtray, rtregis
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, bw-imp, pixinfo.sh : obsolete
png_info : incorporating into icv
pix-yuv', yuv-pix' : obsolete non-standard format
texturescale : obsolete implementation
pixcut, pixpaste : license, copyright cleanup
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]
infrared & shapefactor tools
all_sf', if-X, ifdisp, pictx, showterm, firpass, secpass, shapefact
Removed as part of distillation effort [deprecated 7.26]
misc tools
fix_polysolids' : obsolete primitive
remapid : superseded by reid+remat
buffer : unnecessary network/stream buffering tool
hex : superseded by hexdump
Removed as part of distillation effort [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]
burst
remove termlib-based interactive menu interface [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]
7.30.0
------
fbed, pp-fb
removes termcap use, no known users [deprecated 7.24]
src/irprep
all_sf, firpass, ir-X, irdisp, pictx, secpass, shapefact, showterm [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_regexp_match() -> !bu_fnmatch() [deprecated 7.20]
db_regexp_match_all() -> db_ls() [deprecated 7.26]
mged
em, e_muves, l_muves, lm, read_muves, and t_muves MUVES-specific commands [deprecated 7.22]
include/bu.h
bu_parse_mm() [deprecated 7.22]
7.28.0
------
rt -f framerate
removed [minimally impacting]
pixdsplit, rt -d
removed, broken tool [minimally impacting]
libmultispectral, rttherm, ssamp-bw, ssampview, ssampview.tcl
removed, broken tools [minimally impacting]
dem-g
removed, superseded by gcv+GDAL [minimally impacting]
removed, not working in testing [minimally impacting]
7.26.0
------
@@ -691,8 +646,6 @@ may work:
find . -type f -not -path "*.svn/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 'EXPRESSION' {} \;
find src \( -name '*.c' -or -name '*.cxx' -or -name '*.cpp' -or -name '*.h' -or -name '*.hxx' -or -name '*.hpp' -or -name '*.java' -or -name '*.f' -or -name '*.sh' -or -name '*.tcl' -or -name '*.tk' -or -name '*.itcl' -or -name '*.itk' -or -name '*.pl' -or -name '*.php' -or -name '*.inc' -or -name '*.mged' -or -name '*.y' -or -name '*.l' -or -name '*.yy' \) -not \( -name other -or -regex '.*/other/.*' -or -name tools -or -regex '.*/misc/tools/.*' -or -regex '.*/\.[^\.].*' -or -regex '.*~' -or -regex '.*/#.*' \)
Expressions are minimally tested, use with caution. Make a backup.
@@ -1368,13 +1321,12 @@ s/rt_nurb_scopy/nmg_nurb_scopy/g
s/rt_nurb_sinterp/nmg_nurb_sinterp/g
s/rt_nurb_solve/nmg_nurb_solve/g
s/rt_nurb_to_poly/nmg_nurb_to_poly/g
rename old nurbs functions intertwined with nmg to use nmg prefix [7.27]
rename old nurbs functions intertwined with nmg to use nmg prefix [7.26]
s/RTG.NMG_debug/nmg_debug/g
make nmg debug flag top level, like libbu's [7.27]
make nmg debug flag top level, like libbu's [7.26]
s/BU_ASSERT(_[A-Z_]+)\(([^,]+|.*\(.*,.*\)),([^,]+|.*\(.*,.*\)),([^,]+|.*\(.*,.*\))\);/BU_ASSERT(\2\3\4);/g
consolidated BU_ASSERT_PTR, BU_ASSERT_LONG, BU_ASSERT_SIZE_T, BU_ASSERT_SSIZE_T, BU_ASSERT_DOUBLE [7.27]
consolidated BU_ASSERT_PTR, BU_ASSERT_LONG, BU_ASSERT_SIZE_T, BU_ASSERT_SSIZE_T, BU_ASSERT_DOUBLE [7.26]
s/BU_FLSTR/CPP_FILELINE/g
symbol now owned by common.h, not specific to libbu [7.27]
s/vert_root/bn_vert_tree/g
s/create_vert_tree[[:space:]]*\(/bn_vert_tree_create\(/g
s/create_vert_tree_w_norms[[:space:]]*\(/bn_vert_tree_create_w_norms\(/g
@@ -1382,148 +1334,3 @@ s/free_vert_tree[[:space:]]*\(/bn_vert_tree_destroy\(/g
s/Add_vert[[:space:]]*\(([^,]*,)([^,]*,)([^,]*,)([^,]*,)/bn_vert_tree_add\(\4\1\2\3/g
s/Add_vert_and_norm[[:space:]]*\(([^,]*,)([^,]*,)([^,]*,)([^,]*,)([^,]*,)([^,]*,)([^,]*,)/bn_vert_tree_add_w_norm\(\7\1\2\3\4\5\6/g
s/clean_vert_tree[[:space:]]*\(/bn_vert_tree_clean\(/g
symbols renamed per convention with their library prefix [7.27]
s/BU_DEBUG_MEM_CHECK/0/g
s/DEBUG_MEM_FULL/0/g
developer debugging symbols removed [7.27]
s/bu_dirname\(/bu_path_dirname\(/g
s/bu_basename\(/bu_path_basename\(/g
s/bu_normalize\(/bu_path_normalize\(/g
s/bu_argv_from_path\(/bu_path_to_argv\(/g
renamed path functons with proper group label [7.27]
s/bu_fnmatch\(/bu_path_match\(/g
s/BU_FNMATCH_LEADING_DIR/0x0/g
s/BU_FNMATCH_/BU_PATH_MATCH/g
renamed for consistency, simplified [7.27]
s/bu_path_canonicalize[[:space:]]*\(([^,]*)/bu_realpath(\1, NULL/g
duplicate functionality consolidated to bu_realpath() [7.27]
s/gqa(.*)-p/gqa\1-p ""/g
gqa now takes a prefix for plot file output
s/bu_same_file/bu_file_same/g
s/bu_realpath/bu_file_realpath/g
s/bu_suspend_interrupts/bu_interrupt_suspend/g
s/bu_restore_interrupts/bu_interrupt_restore/g
renamed for API consistency [7.27]
s/bu_brlcad_data[[:space:]]*\(/bu_brlcad_root("share/"/g
replaced by new BU API
s/struct[[:space:]]*ged_run_rt/struct ged_subprocess/g
7.30
----
s/BU_DEBUG_MEM_LOG/0/g
bu memory debugging API removed [7.29]
s/ged_count_tops/ged_who_argc/g
s/ged_build_tops/ged_who_argv/g
functions renamed as they pertain to 'who' listings, not 'tops' [7.30]
s/rt_tess_tol/bg_tess_tol/g
s/RT_TESS_TOL_MAGIC/BG_TESS_TOL_MAGIC/g
s/RT_TESS_TOL_INIT_ZERO/BG_TESS_TOL_INIT_ZERO/g
s/RT_CK_TESS_TOL/BG_CK_TESS_TOL/g
moved librt tolerances to libbg [7.30]
s/DEBUG_PT_FU/DEBUG_PNT_FU/g
s/DIST_PT2_PT2/DIST_PNT2_PNT2/g
s/DIST_PT2_PT2_SQ/DIST_PNT2_PNT2_SQ/g
s/DIST_PT_PLANE/DIST_PNT_PLANE/g
s/DIST_PT_PT/DIST_PNT_PNT/g
s/DIST_PT_PT_SQ/DIST_PNT_PNT_SQ/g
s/V3PT_IN_RPP/V3PNT_IN_RPP/g
s/V3PT_IN_RPP_TOL/V3PNT_IN_RPP_TOL/g
s/V3PT_OUT_RPP_TOL/V3PNT_OUT_RPP_TOL/g
s/WDB_METABALLPT_NULL/WDB_METABALL_PNT_NULL/g
s/_ged_cm_lookat_pt/_ged_cm_lookat_pnt/g
s/_ged_get_metaball_i_pt/_ged_get_metaball_i_pnt/g
s/add_metaballpt/metaball_add_pnt/g
s/add_pipept/pipe_add_pnt/g
s/append_pipept/pipe_append_pnt/g
s/bg_3d_polygon_mk_pts_planes/bg_3d_polygon_make_pnts_planes/g
s/bg_pt_in_polygon/bg_pnt_in_polygon/g
s/bn_3pts_collinear/bn_3pnts_collinear/g
s/bn_3pts_distinct/bn_3pnts_distinct/g
s/bn_dist_line3_pt3/bn_dist_line3_pnt3/g
s/bn_dist_pt2_along_line2/bn_dist_pnt2_along_line2/g
s/bn_dist_pt2_lseg2/bn_dist_pnt2_lseg2/g
s/bn_dist_pt3_along_line3/bn_dist_pnt3_along_line3/g
s/bn_dist_pt3_line3/bn_dist_pnt3_line3/g
s/bn_dist_pt3_lseg3/bn_dist_pnt3_lseg3/g
s/bn_dist_pt3_pt3/bn_dist_pnt3_pnt3/g
s/bn_dist_pt_lseg/bn_dist_pnt_lseg/g
s/bn_distsq_line3_pt3/bn_distsq_line3_pnt3/g
s/bn_distsq_pt3_lseg3_v2/bn_distsq_pnt3_lseg3_v2/g
s/bn_isect_pt2_lseg2/bn_isect_pnt2_lseg2/g
s/bn_isect_pt_lseg/bn_isect_pnt_lseg/g
s/bn_mat_scale_about_pt/bn_mat_scale_about_pnt/g
s/bn_mat_xform_about_pt/bn_mat_xform_about_pnt/g
s/bn_mk_plane_3pts/bn_make_plane_3pnts/g
s/bn_mkpoint_3planes/bn_make_pnt_3planes/g
s/bn_npts_distinct/bn_npnts_distinct/g
s/bn_pt2_pt2_equal/bn_pnt2_pnt2_equal/g
s/bn_pt3_pt3_equal/bn_pnt3_pnt3_equal/g
s/bn_sph_pts/bn_sph_pnts/g
s/bn_table_delete_sample_pts/bn_table_delete_sample_pnts/g
s/del_pipept/pipe_del_pnt/g
s/delete_metaballpt/metaball_delete_pnt/g
s/delete_pipept/pipe_pnt_delete/g
s/exported_pipept/exported_pipe_pnt/g
s/find_arb_edge_nearest_pt/find_arb_edge_nearest_pnt/g
s/find_botpt_nearest_pt/find_bot_pnt_nearest_pnt/g
s/find_metaballpt_nearest_pt/find_metaball_pnt_nearest_pnt/g
s/find_nearest_ars_pt/find_ars_nearest_pnt/g
s/find_pipept_nearest_pt/find_pipe_pnt_nearest_pnt/g
s/ged_add_metaballpt/ged_metaball_add_pnt/g
s/ged_append_pipept/ged_pipe_append_pnt/g
s/ged_delete_metaballpt/ged_metaball_delete_pnt/g
s/ged_delete_pipept/ged_pipe_pnt_delete/g
s/ged_find_arb_edge_nearest_pt/ged_find_arb_edge_nearest_pnt/g
s/ged_find_botpt_nearest_pt/ged_find_bot_pnt_nearest_pnt/g
s/ged_find_metaballpt_nearest_pt/ged_find_metaball_pnt_nearest_pnt/g
s/ged_find_pipept_nearest_pt/ged_find_pipe_pnt_nearest_pnt/g
s/ged_mat_scale_about_pt/ged_mat_scale_about_pnt/g
s/ged_move_botpt/ged_bot_move_pnt/g
s/ged_move_botpts/ged_bot_move_pnts/g
s/ged_move_metaballpt/ged_metaball_move_pnt/g
s/ged_move_pipept/ged_pipe_move_pnt/g
s/ged_prepend_pipept/ged_pipe_prepend_pnt/g
s/ins_pipept/pipe_ins_pnt/g
s/jitter_start_pt/jitter_start_pnt/g
s/kdtree_get_pt/kdtree_get_pnt/g
s/mat_scale_about_pt/mat_scale_about_pnt/g
s/metaballpt/metaball_pnt/g
s/mk_add_pipe_pt/mk_add_pipe_pnt/g
s/move_botpt/bot_move_pnt/g
s/move_botpts/bot_move_pnts/g
s/move_metaballpt/metaball_move_pnt/g
s/move_pipept/pipe_move_pnt/g
s/move_pipept/pipe_move_pnt/g
s/nmg_class_pt_f/nmg_class_pnt_f/g
s/nmg_class_pt_fu_except/nmg_class_pnt_fu_except/g
s/nmg_class_pt_l/nmg_class_pnt_l/g
s/nmg_class_pt_lu_except/nmg_class_pnt_lu_except/g
s/nmg_class_pt_s/nmg_class_pnt_s/g
s/nmg_classify_pt_loop/nmg_classify_pnt_loop/g
s/nmg_find_pt_in_face/nmg_find_pnt_in_face/g
s/nmg_find_pt_in_lu/nmg_find_pnt_in_lu/g
s/nmg_find_pt_in_model/nmg_find_pnt_in_model/g
s/nmg_find_pt_in_shell/nmg_find_pnt_in_shell/g
s/nmg_get_interior_pt/nmg_get_interior_pnt/g
s/nmg_move_edge_thru_pt/nmg_move_edge_thru_pnt/g
s/nmg_nurb_print_pt_type/nmg_nurb_print_pnt_type/g
s/pipept/pipe_pnt/g
s/prepend_pipept/pipe_prepend_pnt/g
s/rt_arb_add_pt/rt_arb_add_pnt/g
s/rt_ell_16pts/rt_ell_16pnts/g
s/rt_metaballpt_print/rt_metaball_pnt_print/g
s/rt_pipept_print/rt_pipe_pnt_print/g
s/rt_pr_pt/rt_pr_partition/g
s/rt_pr_pt_vls/rt_pr_partition_vls/g
s/rt_pt_node/rt_pnt_node/g
s/rt_pt_sort/rt_pnt_sort/g
s/rt_vls_metaballpt/rt_metaball_pnt_vls/g
s/rt_vls_pipept/rt_pipe_pnt_vls/g
s/split_pipept/pipe_split_pnt/g
s/tclcad_bn_dist_pt2_lseg2/tclcad_bn_dist_pnt2_lseg2/g
s/tclcad_bn_mat_xform_about_pt/tclcad_bn_mat_xform_about_pnt/g
s/wdb_metaballpt/wdb_metaball_pnt/g
s/wdb_pipept/wdb_pipe_pnt/g
renamed points from pt to pnt for consistency [7.30]
s/proe-brl/creo-brl/g
replaced by newer creo plugin [7.30]
+675 -808
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -101,7 +101,7 @@ arranged. This includes an implicit assignment of copyright for any
and all contributions being made. The following notice should be
prominent in the BRL-CAD sources:
Copyright (c) 1984-2020 United States Government as represented by
Copyright (c) 1984-2016 United States Government as represented by
the U.S. Army Research Laboratory.
Contact
+15
View File
@@ -0,0 +1,15 @@
## This file should be placed in the root directory of your project.
## Then modify the CMakeLists.txt file in the root directory of your
## project to incorporate the testing dashboard.
##
## # The following are required to submit to the CDash dashboard:
## ENABLE_TESTING()
## INCLUDE(CTest)
set(CTEST_PROJECT_NAME "BRL-CAD")
set(CTEST_NIGHTLY_START_TIME "06:00:00 UTC")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "brlcad.org")
set(CTEST_DROP_LOCATION "/CDash/submit.php?project=BRL-CAD")
set(CTEST_DROP_SITE_CDASH TRUE)
+4608 -174
View File
File diff suppressed because it is too large Load Diff
+64 -77
View File
@@ -263,6 +263,10 @@ 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
libdm: The display manager library contains the logic for generalizing
a drawable context. This includes the ability to output
drawing/plotting instructions to a variety of devices such as X11,
@@ -398,29 +402,31 @@ SOURCE CODE LANGUAGES
The vast majority of BRL-CAD is written in ANSI C with the intent to
be strictly conformant to the C standard. A majority of the MGED
geometry editor is written in a combination of C, Tcl/Tk, and Incr
Tcl/Tk. The BRL-CAD Benchmark and utility scripts are written in what
should be POSIX-compliant Bourne Shell Script. The build system uses
the CMake build tool. An initial implementation of a BRL-CAD Geometry
Server is written in PHP.
Tcl/Tk. The BRL-CAD Benchmark, build system, and utility scripts are
written in what should be POSIX-compliant Bourne Shell Script. An
initial implementation of a BRL-CAD Geometry Server is written in PHP.
With release 7.28, BRL-CAD intends to conform strictly with the 2011
ANSI/ISO standards for C and C++ language compilation
(ISO/IEC 9899:2011, i.e. C11 and ISO/IEC 14882:2011, i.e. C++11).
Support for use of necessary non-standard system facilities is
handled by build system declarations and preprocessor defines driven
by build configuration tests. The working feature set for normal
development should be widely supported C++11 features and the subset
of C11 that is also valid (and widely supported) C++11.
With release 7.0, BRL-CAD has moved forward and worked toward making
all of BRL-CAD C code conform strictly with the ANSI/ISO standard for
C language compilation (ISO/IEC 9899:1990, i.e. c89). Support for
older compilers and older K&R-based system facilities is being
migrated to build system declarations, preprocessor defines, or being
removed outright. It's okay to make modifications that assume
compiler conformance with the ANSI C standard (c89).
C++ is used as an implementation language within libraries, but there
are no public C++ APIs in use outside of OpenNURBS. For new work,
public library APIs should expose only C function calls and data
except in very specific cases (should be discussed with the
development team ahead of time to get consensus on the necessity.)
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.
There is currently no C++ interface to the core BRL-CAD libraries. If
such an interface is eventually developed, it will be done separately
rather than mixing C++ semantics into existing APIs.
CODING STYLE & STANDARDS
------------------------
@@ -505,15 +511,11 @@ system headers.
Language Compliance:
Features of C that conform to the ISO/IEC 9899:2011 C standard (C11)
and the ISO/IEC 14882:2011 C++ standard (C++11) are generally the
baseline for strict language conformance, with the caveat that
features deprecated in subsequent standards or not widely/reliably
implemented on OS/compiler platforms targeted by BRL-CAD should be
avoided. When writing in C coders should keep their code within the
subset of C shared by the C and C++ standards - while not currently
strictly enforced, full C++ only build support is a long term project
goal.
Features of C that conform to the ISO/IEC 9899-1990 C standard (C90)
are generally the baseline for strict language conformance. As
BRL-CAD used to be K&R syntax conformant, there remains an on-going
effort to ensure a full conversion to a standards compliant ISO C
implementation.
Code Conventions:
@@ -560,27 +562,17 @@ variables should be utilized instead of the standard C facility:
bu_malloc() instead of malloc()
bu_calloc() instead of calloc()
bu_realloc() instead of realloc()
bu_fgets() instead of fgets()
bu_free() instead of free()
bu_log() instead of printf()
bu_bomb() instead of abort()
bu_exit() instead of printf()+exit()
bu_snooze() instead of sleep(), usleep(), nanosleep()
bu_dirname() instead of dirname()
bu_getopt() instead of getopt()
bu_opterr instead of opterr
bu_optind instead of optind
bu_optopt instead of optopt
bu_optarg instead of optarg
bu_file_delete() instead of unlink(), rmdir(), and remove()
bu_path_basename() instead of basename()
bu_path_dirname() instead of dirname()
bu_path_match() instead of fnmatch()
bu_log() instead of printf()
bu_fgets() instead of fgets()
bu_sort() instead of qsort()
bu_strdup() instead of strdup()
bu_strlcat() instead of strcat(), strncat(), and strlcat()
bu_strlcpy() instead of strcpy(), strncpy(), and strlcpy()
@@ -588,6 +580,8 @@ variables should be utilized instead of the standard C facility:
bu_strcasecmp() and BU_STR_EQUIV() instead of stricmp()/strcasecmp()
bu_strncmp() instead of strncmp()
bu_strcasecmp() instead of strnicmp()/strncasecmp()
bu_file_delete() instead of unlink(), rmdir(), and remove()
bu_sort() instead of qsort()
Similarly, ANSI C functions are preferred over the BSD and POSIX
interfaces. The following functions should be used:
@@ -1078,7 +1072,10 @@ number follows a common convention where the three numbers represent:
{MAJOR_VERSION}.{MINOR_VERSION}.{PATCH_VERSION}
All "development" builds use an odd number for the minor version. All
"release" builds use an even number for the minor version.
"release" builds use an even number for the minor version. Patched
versions should include a release count:
{MAJOR_VERSION}.{MINOR_VERSION}.{PATCH_VERSION}[-{RELEASE_COUNT}]
The MAJOR_VERSION should only increment when it is deemed that a
significant amount of major changes have accumulated, new features
@@ -1100,13 +1097,9 @@ backwards incompatible in some manner should increment the patch
version number.
If it becomes necessary to update a posted release, use and increment
the AMEND_COUNT format outlined below. The first posted release is
implicitly the "-0" release (e.g., 7.10.2 is implicitly 7.10.2-0) with
subsequent updated releases incrementing the count (e.g., 7.10.2-1).
See the "AMENDING A RELEASE" section below for guidelines on when a
release should be amended in lieu of a new PATCH_VERSION release.
{MAJOR_VERSION}.{MINOR_VERSION}.{PATCH_VERSION}[-{AMEND_COUNT}]
the RELEASE_COUNT. The first posted release is implicitly the "-0"
release count (e.g., 7.10.2 is implicitly 7.10.2-0) with subsequent
updated releases incrementing the count (e.g., 7.10.2-1).
NAMING A SOURCE RELEASE
@@ -1200,35 +1193,33 @@ necessary convention by a binary package management system. Examples:
zip
AMENDING A RELEASE
PATCHING A RELEASE
------------------
Should it become necessary to modify a release after it has been
tagged, uploaded, and announced, a release amendment may be issued.
Releases that are neither tagged, uploaded, or announced are subject
to at-will change and re-tagging.
Amendments to source releases are expressed as a sequence of one or
more patch files that are to be applied sequentially. Patch files may
be descriptively named but must be incrementally numbered. The
uploaded release notes and/or README file(s) should instruct users
building from source to download and apply all available patch files
in order.
Should it become necessary to patch a release that has already been
posted and announced, the mechanism is to post patch files for the
source release and update the uploaded release notes README file.
Example: stop_rt_crashing-0.patch and fix_fbserv-1.patch
For binary builds, it's recommended to just "move on" and let issues
It's expected that all patch files are independent and will be applied
sequentially. They should be consistently and incrementally numbered.
Users should be instructed in the release notes README to download and
apply all available patch files.
For binary releases, it's recommended to just "move on" and let issues
become resolved in the next release unless there's a critical security
or data corruption issue involved. That said, binary releases may be
re-posted with a modified name per the convention described in VERSION
NUMBERS & COMPATIBILITY.
or significant data corruption issue involved. If it becomes
necessary to repost a release, use the RELEASE_COUNT file name
convention described in VERSION NUMBERS & COMPATIBILITY.
Example: BRL-CAD-7.12.2.dmg is superseded by BRL-CAD-7.12.2-1.dmg
Older binary releases may be moved to the hidden attic folder, though
not necessary or recommended except where critical vulnerabilities are
involved. Releases are preserved for historic record and should never
be deleted once announced.
Patched binary releases may be moved to the hidden attic folder if
critical, though not necessary or recommended. They are preserved for
historic record and should never be deleted once announced. Releases
not yet been announced may be updated within two days of being posted
without involving a patch.
MAKING A RELEASE
@@ -1265,23 +1256,19 @@ Release steps are as follows:
PREV=[[last_trunk_rev]]
echo "PREV=$PREV"
svn co https://svn.code.sf.net/p/brlcad/code/brlcad/branches/RELEASE brlcad.RELEASE
svn co svn://svn.code.sf.net/p/brlcad/code/brlcad/branches/RELEASE brlcad.RELEASE
cd brlcad.RELEASE
svn merge https://svn.code.sf.net/p/brlcad/code/brlcad/trunk@$PREV https://svn.code.sf.net/p/brlcad/code/brlcad/trunk@HEAD .
#####################################################################
# 02: Test the merge.
# NON-AUTO: Confirm versioning in include/conf/.
# BRLCAD_VERSION_AMEND may be defined during CMake for an
# amendment build.
mkdir -p .build && cd .build
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release && make
# NON-AUTO: Manually check rt, mged, and archer.
# 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 ; after 1000 ; l sph" # create, view and list info about a sphere
bin/mged -c test.g "make sph sph ; draw 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
+80 -13
View File
@@ -412,6 +412,28 @@ EXPERIMENTAL!
Aliases: ENABLE_ALL_CXX
--- ENABLE_POSIX_COMPLIANCE ---
Build with strict POSIX compliance checking. Defaults to OFF.
Causes compiler options to be set for strict compliance with the
minimum C and C++ standards acceptable according to current BRL-CAD
policy. The current minimum C standard is ??.
There is no currently defined minimum C++ standard.
Aliases: ENABLE_POSIX
--- ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE ---
Build with strict ISO C compliance checking. Defaults to OFF.
Causes C compiler options to be set for strict compliance with the
appropriate ISO C standard.
Aliases: STRICT_ISO_C
--- BRLCAD_EXTRADOCS ---
The core option that enables and disables building of BRL-CAD's
@@ -512,15 +534,14 @@ first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_ZLIB, ENABLE_LIBZ
--- BRLCAD_PNG ---
--- BRLCAD_TINYCTHREAD ---
Option for enabling and disabling compilation of the Portable Network
Graphics library provided with BRL-CAD's source distribution. Default
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
AUTO.
Option for enabling and disabling compilation of the tinycthread library
provided with BRL-CAD's source distribution. Default is AUTO,
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_PNG
Aliases: ENABLE_TINYCTHREAD
--- BRLCAD_LZ4 ---
@@ -534,6 +555,28 @@ AUTO.
Aliases: ENABLE_LZ4
--- BRLCAD_FREETYPE ---
Option for enabling and disabling compilation of the FreeType
libraries provided with BRL-CAD's source code. Default is AUTO, responsive to
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_FREETYPE
--- BRLCAD_TERMLIB ---
Option for enabling and disabling compilation of the termlib library
provided with BRL-CAD's source distribution. Default is AUTO,
responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing
first for a system version if BRLCAD_BUNDLED_LIBS is also
AUTO. (Except when building with Visual Studio, where it is
disabled. Windows does not support the termlib API.)
Aliases: ENABLE_TERMLIB
--- BRLCAD_NETPBM ---
Option for enabling and disabling compilation of the netpbm library
@@ -544,6 +587,17 @@ version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_NETPBM
--- BRLCAD_PNG ---
Option for enabling and disabling compilation of the Portable Network
Graphics library provided with BRL-CAD's source distribution. Default
is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
testing first for a system version if BRLCAD_BUNDLED_LIBS is also
AUTO.
Aliases: ENABLE_PNG
--- BRLCAD_UTAHRLE ---
Option for enabling and disabling compilation of the Utah Raster
@@ -631,6 +685,19 @@ BRLCAD_ENABLE_TK is OFF.
Aliases: ENABLE_TKHTML
--- BRLCAD_TKPNG ---
Option for enabling and disabling compilation of the tkpng PNG image
viewing package provided with BRL-CAD's source distribution. Default
is AUTO, auto-enabling if the BRLCAD_TCL option is set to BUNDLED and
testing first for a system version if BRLCAD_TCL is set to AUTO or
SYSTEM. If BRLCAD_TKPNG is set to BUNDLED, local copy is built even if
a system version is present. This package will be disabled if
BRLCAD_ENABLE_TK is OFF.
Aliases: ENABLE_TKPNG
--- BRLCAD_TKTABLE ---
Option for enabling and disabling compilation of the Tktable graphical
@@ -654,14 +721,14 @@ version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_OPENNURBS
--- BRLCAD_SPSR ---
--- BRLCAD_SPR ---
Option for enabling and disabling compilation of the Screened Poisson
Surface Reconstruction library provided with BRL-CAD's source code.
Default is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option
and testing first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
Option for enabling and disabling compilation of the PoissonRecon library
provided with BRL-CAD's source code. Default is AUTO, responsive to
the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_SPSR
Aliases: ENABLE_SPR
--- BRLCAD_SC ---
+2 -189
View File
@@ -10,195 +10,10 @@ descriptive text that emphasizes or further describes significant
changes made. See document footer for additional details.
----------------------------------------------------------------------
--- 20XX-XX-XX Release 7.3X.X ---
--- 201X-XX-XX Release 7.28.0 ---
----------------------------------------------------------------------
* added 3dm-g failure message about supported versions - Cliff Yapp
* fixed bw-png writing corrupted png files on Windows - Sean Morrison
----------------------------------------------------------------------
--- 2020-05-08 Release 7.30.8 ---
----------------------------------------------------------------------
* added gchecker tool to generate MGED overlap inputs - Cliff Yapp
* improved behavior of MGED overlap checker GUI - Nick Reed
* fixed startup dimensions of overlap checker window - Nick Reed
* fixed rtedge line drawing color when using -W flag - Cliff Yapp
* added -F option to lint cmd to test specifc solid types - Cliff Yapp
* added support to MGED for zooming with mouse wheel - Cliff Yapp
* fixed solid editing wireframe drawing in MGED - Nick Reed
* added .r suffixes to region names in 3dm-g conversion - Cliff Yapp
----------------------------------------------------------------------
--- 2020-03-19 Release 7.30.6 ---
----------------------------------------------------------------------
* fixed transparent drawing in MGED - Nick Reed
* fixed solid NURBS brep intersection testing - Cliff Yapp
* removed extra blank line after commands in MGED GUI - Sean Morrison
* added "plate" object type filter to search command - Cliff Yapp
* fixed latent logging bug during facetize on Windows - Bob Parker
* fixed bug closing rt framebuffer windows on Windows - Sean Morrison
----------------------------------------------------------------------
--- 2019-12-05 Release 7.30.4 ---
----------------------------------------------------------------------
* enhanced attr list command to support reporting values - Cliff Yapp
* updated FAA Generic Twin example FASTGEN model - Cliff Yapp
* fixed handling of duplicate FASTGEN object names - Cliff Yapp
* update gqa/rtweight man pages to reference mater -d - Cliff Yapp
* overlay command accepts file patterns (e.g., *.plot) - Cliff Yapp
* changed mged escape key binding to reset mouse mode - Sean Morrison
* removed default xXyYzZ0 rate rotation key bindings - Sean Morrison
* improved tessellation of nearly coplanar surfaces - John Anderson
* fixed display of annotations on Windows - Daniel Roßberg
* fixed rtedge and rtwizard occlusion object edge bug - Sean Morrison
* rt* tools no longer force outputs to be read-only - Sean Morrison
* fixed 'burst' crash when run without options - Sean Morrison
* changed rtweight to not truncate long pathnames - Sean Morrison
* added new ball bearing example geometry model - Sean Morrison
* added new manual page for the clone command - Sean Morrison
----------------------------------------------------------------------
--- 2019-04-03 Release 7.30.2 ---
----------------------------------------------------------------------
* fixed memory leak during obj-g and gcv import - Bojian Wu
* added new manual page for the clone command - Sean Morrison
* fixed crash calculating dsp bounding boxes - Sean Morrison
* fixed Windows temporary file removal for MGED commands (red, etc.)
- Cliff Yapp
* fixed librt NURBS cache issues under high load conditions
- Sean Morrison, Cliff Yapp
* added a copy subcommand to MGED's attr command - Cliff Yapp
* fixed a locking condition in MGED's rtcheck command - Cliff Yapp
* added support for >=< prefixes for mater -d get options Cliff Yapp
* fixed brlman lookup location of html manual pages - Cliff Yapp
* fixed rt -t top-to-bottom parallel rendering option Sean Morrison
* added a 'flip' normals command to MGED's brep command - Cliff Yapp
* added rtweight support for in-.g density information - Cliff Yapp
* improved usability of vol primitives w/ missing data - Sean Morrison
----------------------------------------------------------------------
--- 2019-02-25 Release 7.30.0 ---
----------------------------------------------------------------------
This major release of BRL-CAD is the first release requiring
compiler support for the C++11 language standard when building.
(This change is not user visible, but will be significant to those
using BRL-CAD in their own software development efforts.)
This release introduces a new "-d" option to the mater command,
supporting direct embedding of .density file information in a
.g database for use by commands such as gqa and rtweight.
Also present in this release are a fix for commands that work with
multiple .g files and support for raytracing MGED scenes with large
numbers of active objects.
A number of commands and tools previously listed as deprecated are
removed in this release, including in particular MGED commands
specific to MUVES.
* added rtweight -d option for specifying density file - Cliff Yapp
* added material density management to "mater" command - Cliff Yapp
* use full paths for OBJ objects in "bot dump" command - Cliff Yapp
* added -v high precision option to MGED 'center' command - Cliff Yapp
* fixed crash when using dbconcat and dup together in MGED
- Cliff Yapp, Sean Morrison
* renamed MGED "ps" command to "postscript" - Cliff Yapp
* removed MGED commands em, e_muves, l_muves, lm, read_muves, t_muves
- Cliff Yapp
* removed deprecated irprep tools - Cliff Yapp
* removed deprecated fbed and pp-fb framebuffer tools - Cliff Yapp
* fixed rt support for specifying large object lists - Cliff Yapp
* new 'gex' tool for low-level .g file exploration - Tom Browder
* added support for command-line editing of metaballs - Sean Morrison
* added manual page for the 'get' command - Cliff Yapp
* improved speed of "bot chull" convex hull generation - Cliff Yapp
----------------------------------------------------------------------
--- 2018-11-30 Release 7.28.2 ---
----------------------------------------------------------------------
This is a patch release, applying several logic fixes and build system
corrections.
* fixed incorrect handling of NURBS near-miss points near edges
- Cliff Yapp, Keith Bowman
* fixed support for large files on 64-bit Windows - Cliff Yapp
* fixed analyze command calculation of BoT volume - Keith Bowman
* fixed problem merging .g files containing dsp data - Cliff Yapp
* fixed infinite loop in OverlapTools GUI - Cliff Yapp
----------------------------------------------------------------------
--- 2018-10-01 Release 7.28.0 ---
----------------------------------------------------------------------
This major release of BRL-CAD incorporates a new feature for caching
of raytrace acceleration structures used when working with explicit
boundary representation (BREP) Non-uniform Rational Basis Spline
(NURBS) solids. This will result in significant improvements to
run times when repeatedly raytracing BREP solids.
Support for terrain import has been significantly expanded with the
addition of a new Geospatial Data Abstraction Library (GDAL) based
importer to the gcv conversion tool. GDAL brings with it support for
dozens of different terrain data formats.
Also new in this release are a greatly improved graphical geometry
overlap resolving tool and support in the MGED search command for
an "exec" option which will allow users to execute MGED commands
on search results.
The MGED facetize command for generating polygonal geometry from
BRL-CAD objects has received significant attention, including the
incorporation of a "per-region" conversion mode, new conversion
methodologies and usability enhancements.
* fixed crash mixing flat and full path MGED searches - Cliff Yapp
* improved MGED ls command's help message - Cliff Yapp
* added -exec option to MGED's search command - Peter Pronai
* added new MGED 'lint' command for finding bad geometry - Cliff Yapp
* improved lingering framebuffer CPU utilization - Sean Morrison
* updated 'draw -S' option to work with shaded objects - Bob Parker
* fixed numerous fb* command bugs w/ X11 framebuffers - Sean Morrison
* extended fbpoint support to more varied framebuffers - Sean Morrison
* improved gqa plot file handling and documentation - Sean Morrison
* improved rt usage reporting with categorized options - Sean Morrison
* removed rt -f framerate option for animating shaders - Sean Morrison
* removed "pixd" support: rt -d option and pixdsplit - Sean Morrison
* fixed fbserv timeout errors on some BSD platforms - Cezar Elnazli
* fixed rtcheck bug handling reversed overlap pairs - Saran Narayan
* new workflow GUI for detecting and fixing geometry overlap errors
- Sean Morrison, Nick Reed, Saran Narayan
* fixed gqa printing wrong grid size on no overlaps - Saran Narayan
* fixed pix-png creating corrupt PNG files on Windows - Sean Morrison
* added "check overlaps" menu option to Archer - Saran Narayan
* improved 'idents' command portability - Daniel Ramirez, Cliff Yapp
* changed remrt/rtsrv to no longer report overlaps - Sean Morrison
* improved GUI of MGED's Overlap Tool - Saran Narayan
* fixed geometry directory building bug in remrt/rtsrv - Sean Morrison
* fixed gcv problem with full paths on Windows - Cliff Yapp
* removed precision limitation in NIRT input parsing - Cliff Yapp
* added new example geometry models: chess and die pieces - Jeff Sieu
* new 'openid' command for listing available region IDs - Nick Reed
* improved triangle mesh error detection for "bot check" command
- Nick Reed, Cliff Yapp, Jon Engbert
* fixed graphical mode initial page loading in brlman - Cliff Yapp
* added gcv import support for 20+ terrain formats - Cliff Yapp
* added 'bot_dump' command to MGED - Nick Reed
* ported MGED 'screengrab' command to Windows - Nick Reed
* removed spectral tracing: libmultispectral & rttherm - Cliff Yapp
* sped up raytracing by 10% - Cezar Elnazli
* Remove libmultispectral, rttherm, and related code/docs - Cliff Yapp
----------------------------------------------------------------------
@@ -208,7 +23,6 @@ methodologies and usability enhancements.
This is a patch release, primary focused on updates to the build
system logic.
* upgraded libgdiam to version 1.0.3 - Cliff Yapp
* fixed MGED bindings behavior for c, A, P, and S chars - Bob Parker
* fixed gdiff usage statement - Sean Morrison
* removed anim.txt, sun.txt, tube.txt and movie.txt - Cliff Yapp
@@ -250,7 +64,6 @@ and address portability issues.
* fixed rt support for lights created prior to rel 6.0 - Sean Morrison
* fixed infinite loop bug in when using shadow lights - Sean Morrison
* removed man pages: erase_all, export_body, vrmgr, dall - Cliff Yapp
* fixed MGED 'c' command crash when run with bad arguments - Nick Reed
* added manual pages for the 'brlman' and 'man' commands - Cliff Yapp
* improved gdiff default grid spacing and tolerancing - Cliff Yapp
* updated brlman to support browsing all page categories - Cliff Yapp
+5 -4
View File
@@ -1,5 +1,5 @@
BRL-CAD
Release 7.32.0
Release 7.28.0
http://brlcad.org/
BRL-CAD is a powerful cross-platform open source combinatorial
@@ -71,9 +71,10 @@ COMPILE AND INSTALL
See the INSTALL file for details on configuring, compiling, and
installing BRL-CAD. In order to compile and install BRL-CAD from a
source distribution, the build tool CMake is required - see the website
at http://www.cmake.org for source and binary installers. CMake is also
available in many Linux and *BSD distributions.
source distribution, the build tool CMake is required (minimum version
currently required is 2.8.4) - see the website at http://www.cmake.org
for source and binary installers. CMake is also available in many
Linux and *BSD distributions.
Once CMake is installed, the following steps may be taken for a full
default install (starting with a source tarball):
+319 -475
View File
File diff suppressed because it is too large Load Diff
+1 -14
View File
@@ -9,13 +9,6 @@ add_definitions(
)
BRLCAD_ADDEXEC(pixcmp pixcmp.c libbu)
set(BARK_SOURCES
benchmark.c
compute.c
run.c
clean.c
)
BRLCAD_ADDEXEC(bark "${BARK_SOURCES}" libbu NO_STRICT NO_INSTALL)
configure_file(run.sh "${CMAKE_CURRENT_BINARY_DIR}/benchmark" COPYONLY)
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/benchmark" DESTINATION ${BIN_DIR})
@@ -32,13 +25,7 @@ file(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake" "message(\"---\")\n")
file(APPEND "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake" "message(\"Run 'make benchmark-clean' in the bench directory to delete the logic\")\n")
file(APPEND "${CMAKE_BINARY_DIR}/CMakeTmp/benchmsg.cmake" "message(\"and image files generated during the benchmark analysis.\")\n")
CMAKEFILES(
CMakeLists.txt
lgt.sh
run.sh
try.sh
viewdiff.sh
)
CMAKEFILES(lgt.sh run.sh try.sh viewdiff.sh)
if(SH_EXEC)
# CTest enabled short run of the benchmark suite
-946
View File
@@ -1,946 +0,0 @@
/* B E N C H M A R K . C
* BRL-CAD
*
* Copyright (c) 2011-2020 United States Government as represented by
* the U.S. Army Research Laboratory.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/** @file benchmark.c
*
* This is the BRL-CAD Benchmark.
*
* The benchmark suite will test the performance of a system by
* iteratively rendering several well-known datasets into 512x512
* images where performance metrics are documented and fairly well
* understood. The local machine's performance is compared to the
* base system (called VGR) and a numeric "VGR" multiplier of
* performance is computed. This number is a simplified metric from
* which one may qualitatively compare cpu and cache performance,
* versions of BRL-CAD, and different compiler characteristics.
*
*/
#include "common.h"
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/stat.h>
/* TODO - fall back on https://github.com/sandsmark/winuname for Windows? */
#ifdef HAVE_SYS_UTSNAME_H
# include <sys/utsname.h>
#endif
#include "bio.h"
#include "bu.h"
/* TODO: !!! probably will need variants of these */
int bu_exec(const char *program, void *data, struct bu_vls *out, struct bu_vls *err) {if (!program || !out || !err || !data) return 1; return 0;}
int bu_grep(const char *pattern, const char *input, int(*callback)(const char *line, void *data), void *data) {if (!pattern || !input || !data) return 1; if (!callback) bu_log("TODO: need default callback!!!\n"); return 0;}
int bu_file_glob(const char *pattern, char **paths) {if (!pattern || !paths) return 1; return 0;}
char *format_elapsed(double elapsed) {if (elapsed > 0) return "0 1 2"; return "-0 -1 -2";}
int perf(const struct bu_vls *vp, const char *items, const char *args[]) {if (!vp || !items || !args) return -1; return 0;}
double calculate_vgr(const struct bu_vls *summary) {if (!summary) return -0.0; return 0.0;}
extern int bench(const char *cmd);
/**
* this routine writes the provided argument(s) to a log file as well
* as echoing them to stdout if we're not in quiet mode.
*/
static void
record(const char *fmt, ...)
{
struct bu_vls str = BU_VLS_INIT_ZERO;
va_list ap;
const char *LOGFILE = getenv("LOGFILE");
const char *QUIET = getenv("QUIET");
if (!fmt) {
return;
}
va_start(ap, fmt);
bu_vls_vprintf(&str, fmt, ap);
va_end(ap);
if (!BU_STR_EQUAL(LOGFILE, "")) {
FILE *fp = fopen(LOGFILE, "a");
fprintf(fp, "%s", bu_vls_addr(&str));
}
if (bu_str_false(QUIET)) {
bu_log("%s", bu_vls_addr(&str));
}
bu_vls_free(&str);
}
static void
display(const char *fmt, ...)
{
struct bu_vls str = BU_VLS_INIT_ZERO;
va_list ap;
if (!fmt) {
return;
}
va_start(ap, fmt);
bu_vls_vprintf(&str, fmt, ap);
va_end(ap);
bu_log("%s", bu_vls_cstr(&str));
bu_vls_free(&str);
}
static void
sink(const char *fmt, ...)
{
if (!fmt) {
return;
}
}
/************************
* search for resources *
************************/
typedef enum {
executable=0x1,
file=0x2,
directory=0x4,
script=0x8
} look_for_type_t;
#define TYPE2STR(_t) \
((_t) == executable) ? "executable" : \
((_t) == file) ? "file" : \
((_t) == directory) ? "directory" : \
((_t) == script) ? "script" : \
"unknown"
static void
look_for(void (*verbose)(const char *, ...), look_for_type_t type, const char *label, const char *var, const char*paths[])
{
char *val;
/* utility function to search for a certain filesystem object in a
* list of paths.
*/
if (!var || !paths) {
return;
}
if (!verbose) {
verbose = sink;
}
verbose("Looking for %s\n", label);
/* get the value of the variable */
val = getenv(var);
if (val && (strlen(val) > 0)) {
if (label) {
verbose("...using %s from %s variable setting\n", val, var);
}
} else {
while (paths && *paths) {
int failed=0;
switch (type) {
default:
case directory:
/* should work without read bit */
if (!bu_file_directory(*paths)) {
failed=1;
}
/* fall through */
case executable:
case script:
if (!bu_file_executable(*paths)) {
failed=1;
}
break;
case file:
if (!bu_file_exists(*paths, NULL)) {
failed=1;
}
break;
}
if (!failed) {
verbose("...found %s %s\n", TYPE2STR(type), *paths);
bu_setenv(var, *paths, 1);
break;
}
paths++;
}
}
}
static void
set_if_unset(void (*echo)(const char *, ...), void (*verbose)(const char *, ...), const char *var, const char *val)
{
const char *setval = getenv(var);
if (!var || !val) {
return;
}
if (!echo) {
echo = sink;
}
if (!verbose) {
verbose = sink;
}
if (!setval || (strlen(setval) == 0)) {
verbose("%s=\"%s\"\n", var, val);
bu_setenv(var, val, 1);
}
setval = getenv(var);
echo("Using [%s] for %s\n", setval, var);
}
/* callback to bu_grep() */
static int
stashline(const char *line, void *data)
{
struct bu_vls *vls = (struct bu_vls *)data;
BU_CK_VLS(vls);
bu_vls_printf(vls, "%s\n", line);
return 0;
}
int
main(int ac, char *av[])
{
int arg;
struct bu_vls rtargs = BU_VLS_INIT_ZERO;
struct bu_vls str = BU_VLS_INIT_ZERO;
const char *RT = NULL;
const char *DB = NULL;
const char *PIX = NULL;
const char *LOG = NULL;
const char *CMP = NULL;
const char *ELP = NULL;
char root[MAXPATHLEN] = {0};
char db[MAXPATHLEN] = {0};
char pix[MAXPATHLEN] = {0};
char thisp[MAXPATHLEN] = {0};
char *argv[MAXPATHLEN] = {NULL};
struct bu_vls vp = BU_VLS_INIT_ZERO;
long MAXTIME = 0;
long TIMEFRAME = 0;
int64_t start = 0;
int ret = 0;
void (*verbose_echo)(const char *, ...) = sink;
void (*echo)(const char *, ...) = record;
bu_setprogname(av[0]);
/* process the argument list for commands */
for (arg=1; arg<ac; arg++) {
if (BU_STR_EQUAL(av[arg], "clean")) {
bu_setenv("CLEAN", "1", 1);
continue;
}
if (BU_STR_EQUAL(av[arg], "clobber")) {
bu_setenv("CLEAN", "1", 1);
bu_setenv("CLOBBER", "1", 1);
continue;
}
if (BU_STR_EQUAL(av[arg], "h")) {
bu_setenv("HELP", "1", 1);
continue;
}
if (BU_STR_EQUAL(av[arg], "help")) {
bu_setenv("HELP", "1", 1);
continue;
}
if (bu_strncasecmp(av[arg], "instruct", 8)) {
bu_setenv("INSTRUCTIONS", "1", 1);
continue;
}
if (BU_STR_EQUAL(av[arg], "start")) {
continue;
}
if (BU_STR_EQUAL(av[arg], "quiet")) {
bu_setenv("QUIET", "1", 1);
continue;
}
if (BU_STR_EQUAL(av[arg], "verbose")) {
bu_setenv("VERBOSE", "1", 1);
continue;
}
if (BU_STR_EQUAL(av[arg], "run")) {
bu_setenv("RUN", "1", 1);
continue;
}
if (strchr(av[arg], '=')) {
/* TODO: !!! make sure this still works */
char *var = bu_strdup(av[arg]);
char *val = strtok(var, "=");
if (var && val) {
bu_setenv(var, val, 1);
}
bu_free(var, "strdup av[arg]");
continue;
}
bu_log("WARNING: Passing unknown option [%s] to RT\n", av[arg]);
bu_vls_printf(&rtargs, " %s", av[arg]);
}
/***
* handle help before main processing
***/
if (bu_str_true(getenv("HELP"))) {
bu_log("Usage: %s [command(s)] [OPTION=value] [RT_OPTIONS]\n", av[0]);
bu_log("\n");
bu_log("Available commands:\n");
bu_log(" clean\n");
bu_log(" clobber\n");
bu_log(" help (this is what you are reading right now)\n");
bu_log(" instructions\n");
bu_log(" quiet\n");
bu_log(" verbose\n");
bu_log(" run (this is probably what you want)\n");
bu_log("\n");
bu_log("Available options:\n");
bu_log(" RT=/path/to/rt_binary (e.g., rt)\n");
bu_log(" DB=/path/to/reference/geometry (e.g. ../db)\n");
bu_log(" PIX=/path/to/reference/images (e.g., ../pix)\n");
bu_log(" LOG=/path/to/reference/logs (e.g., ../pix)\n");
bu_log(" CMP=/path/to/pixcmp_tool (e.g., pixcmp)\n");
bu_log(" ELP=/path/to/time_tool (e.g., elapsed.sh)\n");
bu_log(" TIMEFRAME=#seconds (default 32)\n");
bu_log(" MAXTIME=#seconds (default 300)\n");
bu_log(" DEVIATION=%%deviation (default 3)\n");
bu_log(" AVERAGE=#frames (default 3)\n");
bu_log("\n");
bu_log("Available RT options:\n");
bu_log(" -P# (e.g., -P1 to force single CPU)\n");
bu_log(" See the 'rt' manpage for additional options\n");
bu_log("\n");
bu_log("The BRL-CAD Benchmark tests the overall performance of a system\n");
bu_log("compared to a stable well-known baseline. The Benchmark calculates a\n");
bu_log("figure-of-merit for this system that may be directly compared to other\n");
bu_log("Benchmark runs on other system configurations.\n");
bu_log("\n");
bu_log("BRL-CAD is a powerful cross-platform open source solid modeling system.\n");
bu_log("For more information about BRL-CAD, see http://brlcad.org\n");
bu_log("\n");
bu_log("Run '%s instructions' or see the manpage for additional information.\n", av[0]);
bu_exit(1, NULL);
}
/***
* handle instructions before main processing
***/
if (bu_str_true(getenv("INSTRUCTIONS"))) {
bu_log("\n");
bu_log("This program runs the BRL-CAD Benchmark. The benchmark suite will\n");
bu_log("test the performance of a system by iteratively rendering several\n");
bu_log("well-known datasets into 512x512 images where performance metrics are\n");
bu_log("documented and fairly well understood. The local machine's\n");
bu_log("performance is compared to the base system (called VGR) and a numeric\n");
bu_log("\"VGR\" mulitplier of performance is computed. This number is a\n");
bu_log("simplified metric from which one may qualitatively compare cpu and\n");
bu_log("cache performance, versions of BRL-CAD, and different compiler\n");
bu_log("characteristics.\n");
bu_log("\n");
bu_log("The suite is intended to be run from a source distribution of BRL-CAD\n");
bu_log("after the package has been compiled either directly or via a make\n");
bu_log("build system target. There are, however, several environment\n");
bu_log("variables that will modify how the BRL-CAD benchmark behaves so that\n");
bu_log("it may be run in a stand-alone environment:\n");
bu_log("\n");
bu_log(" RT - the rt binary (e.g. ../src/rt/rt or /usr/brlcad/bin/rt)\n");
bu_log(" DB - the directory containing the reference geometry (e.g. ../db)\n");
bu_log(" PIX - the directory containing the reference images (e.g. ../pix)\n");
bu_log(" LOG - the directory containing the reference logs (e.g. ../pix)\n");
bu_log(" CMP - the name of a pixcmp tool (e.g. ./pixcmp or cmp)\n");
bu_log(" ELP - the name of an elapsed time tool (e.g. ../sh/elapsed.sh)\n");
bu_log(" TIMEFRAME - the minimum number of seconds each trace needs to take\n");
bu_log(" MAXTIME - the maximum number of seconds to spend on any test\n");
bu_log(" DEVIATION - the minimum sufficient %% deviation from the average\n");
bu_log(" AVERAGE - how many frames to average together\n");
bu_log(" VERBOSE - turn on extra debug output for testing/development\n");
bu_log(" QUIET - turn off all printing output (writes results to summary)\n");
bu_log(" INSTRUCTIONS - display detailed instructions\n");
bu_log(" RUN - start a benchmark analysis\n");
bu_log("\n");
bu_log("The TIMEFRAME, MAXTIME, DEVIATION, and AVERAGE options control how the\n");
bu_log("benchmark will proceed including how long it should take. Each\n");
bu_log("individual benchmark run will consume at least a minimum TIMEFRAME of\n");
bu_log("wallclock time so that the results can stabilize. After consuming at\n");
bu_log("least the minimum TIMEFRAME, additional frames may be computed until\n");
bu_log("the standard deviation from the last AVERAGE count of frames is below\n");
bu_log("the specified DEVIATION. When a test is run and it completes in less\n");
bu_log("than TIMEFRAME, the raytrace is restarted using double the number of\n");
bu_log("rays from the previous run. If the machine is fast enough, the\n");
bu_log("benchmark may accelerate the number or rays being fired. These\n");
bu_log("additional rays are hypersampled but without any jitter, so it's\n");
bu_log("effectively performing a multiplier amount of work over the initial\n");
bu_log("frame.\n");
bu_log("\n");
bu_log("Plese send your BRL-CAD Benchmark results to the developers along with\n");
bu_log("detailed system information to <devs@brlcad.org>. Include at least:\n");
bu_log("\n");
bu_log(" 0) Compiler name and version (e.g. gcc --version)\n");
bu_log(" 1) All generated log files (i.e. *.log* after benchmark completes)\n");
bu_log(" 2) Anything else you think might be relevant to performance\n");
bu_log("\n");
bu_log("The manual page has even more information and specific usage examples.\n");
bu_log("Run 'brlman benchmark'.\n");
bu_log("\n");
bu_exit(0, NULL);
}
/***
* handle clean/clobber before main processing
***/
if (bu_str_true(getenv("CLEAN"))) {
size_t i;
size_t cnt;
size_t num;
char cwd[MAXPATHLEN] = {0};
const char *tests[] = {"moss", "world", "star", "bldg391", "m35", "sphflake", NULL};
char **paths = NULL;
int printed = 0;
bu_log("\n");
if (bu_str_true(getenv("CLOBBER"))) {
bu_log("About to wipe out all benchmark images and log files in %s\n", bu_getcwd(cwd, MAXPATHLEN));
bu_log("Send SIGINT (type ^C) within 5 seconds to abort\n");
sleep(5);
} else {
bu_log("Deleting most benchmark images and log files in %s\n", bu_getcwd(cwd, MAXPATHLEN));
bu_log("Running '%s clobber' will remove run logs.\n", av[0]);
}
bu_log("\n");
for (i=0; tests[i]; i++) {
struct bu_vls pattern_str = BU_VLS_INIT_ZERO;
char *pattern[5] = {NULL, NULL, NULL, NULL, NULL};
size_t j;
/* rm -f $i.log $i.pix $i-[0-9]*.log $i-[0-9]*.pix */
bu_vls_printf(&pattern_str, "%s.log %s.pix %s-[0-9]*.log %s-[0-9]*.pix", tests[i], tests[i], tests[i], tests[i]);
bu_log("rm -f %s\n", bu_vls_cstr(&pattern_str));
j = bu_argv_from_string(pattern, 4, bu_vls_addr(&pattern_str));
while (j > 0) {
num = bu_file_glob(pattern[j-1], paths);
cnt = num;
while (num > 0) {
bu_file_delete(paths[num-1]);
num--;
}
bu_argv_free(cnt, paths);
paths = NULL;
j--;
}
bu_vls_free(&pattern_str);
}
if (bu_str_true(getenv("CLOBBER"))) {
/* NEVER automatically delete the summary file, but go
* ahead with the rest.
*/
num = bu_file_glob("benchmark-[0-9]*-run.log", paths);
cnt = num;
while (num > 0) {
bu_log("rm -f %s\n", paths[num-1]);
bu_file_delete(paths[num-1]);
num--;
}
bu_argv_free(cnt, paths);
paths = NULL;
}
if (bu_file_exists("summary", NULL)) {
if (!printed) {
bu_log("\nThe following files must be removed manually:\n");
printed=1;
}
bu_log("summary ");
}
num = bu_file_glob("benchmark-[0-9]*-run.log", paths);
cnt = num;
while (num > 0) {
if (!printed) {
bu_log("\nThe following files must be removed manually:\n");
printed=1;
}
bu_log("%s ", paths[num-1]);
num--;
}
bu_argv_free(cnt, paths);
paths = NULL;
if (printed) {
bu_log("\n");
}
if (bu_str_true(getenv("CLOBBER"))) {
bu_log("\nBenchmark clobber complete.\n");
} else {
bu_log("\nBenchmark clean complete.\n");
}
bu_exit(0, NULL);
}
/***
* B E G I N
***/
if (bu_str_false(getenv("RUN"))) {
bu_exit(1, "Type '%s help' for usage.\n", av[0]);
}
/* where to write results */
{
int fd;
const char *logfile;
bu_vls_printf(&str, "run-%d-benchmark.log", bu_process_id());
logfile = bu_vls_addr(&str);
bu_setenv("LOGFILE", logfile, 1);
fd = open(logfile, O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR);
if (fd < 0 || !bu_file_writable(logfile)) {
if (!BU_STR_EQUAL(logfile, "/dev/null")) {
bu_log("ERROR: Unable to log to %s\n", logfile);
}
/* FIXME: not valid logfile on windows, use 'nul' */
bu_setenv("LOGFILE", "/dev/null", 1);
}
}
if (bu_str_true(getenv("QUIET"))) {
if (bu_str_true(getenv("VERBOSE"))) {
bu_log("Verbose output quelled by quiet option. Further output disabled.\n");
}
} else {
if (bu_str_true(getenv("VERBOSE"))) {
verbose_echo=display;
bu_log("Verbose output enabled\n");
}
}
{
struct bu_vls v = BU_VLS_INIT_ZERO;
char rfc2822[1024] = {0};
#ifdef HAVE_SYS_UTSNAME_H
struct utsname n;
time_t t = time(NULL);
strftime(rfc2822, sizeof(rfc2822), "%a, %d %b %Y %H:%M:%S %Z", localtime(&t));
if (uname(&n) == 0) {
bu_vls_printf(&v, "%s %s %s %s %s", n.sysname, n.nodename, n.release, n.version, n.machine);
} else {
bu_vls_strcat(&v, "unknown");
}
#endif
echo("B R L - C A D B E N C H M A R K\n");
echo("=================================\n");
echo("Running %s on %s\n", av[0], rfc2822);
echo("Logging output to %s\n", getenv("LOGFILE"));
echo("%s\n\n", bu_vls_addr(&v));
}
bu_dir(root, MAXPATHLEN, BU_DIR_BIN, NULL);
bu_dir(db, MAXPATHLEN, BU_DIR_DATA, "db", NULL);
bu_dir(pix, MAXPATHLEN, BU_DIR_DATA, "pix" , NULL);
bu_dir(thisp, MAXPATHLEN, BU_DIR_CURR, NULL);
bu_vls_printf(&vp,
"%s/rt "
"%s/rt "
"./rt",
root, thisp);
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
look_for(verbose_echo, executable, "the BRL-CAD raytracer", "RT", (const char **)argv);
bu_vls_trunc(&vp, 0);
bu_vls_printf(&vp,
"%s/moss.g "
"%s/db/moss.g "
"%s/../db/moss.g "
"./db/moss.g "
"./moss.g",
db, thisp, thisp);
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
look_for(verbose_echo, file, "a benchmark geometry directory", "DB", (const char **)argv);
bu_vls_trunc(&vp, 0);
if (getenv("DB") && !bu_file_directory(getenv("DB"))) {
bu_setenv("DB", bu_path_dirname(getenv("DB")), 1);
}
bu_vls_printf(&vp,
"%s/moss.pix "
"%s/pix/moss.pix "
"%s/../pix/moss.pix "
"%s/../../pix/moss.pix "
"%s/../../../pix/moss.pix "
"./pix/moss.pix "
"./moss.pix",
pix, thisp, thisp, thisp, thisp);
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
look_for(verbose_echo, file, "a benchmark reference image directory", "PIX", (const char **)argv);
bu_vls_trunc(&vp, 0);
if (getenv("PIX") && !bu_file_directory(getenv("PIX"))) {
bu_setenv("PIX", bu_path_dirname(getenv("PIX")), 1);
}
bu_vls_printf(&vp,
"%s "
"%s "
"%s/pix "
"%s/../pix "
"%s/../../pix "
"%s/../../../pix "
"./pix",
getenv("PIX"), pix, thisp, thisp, thisp, thisp);
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
look_for(verbose_echo, directory, "a benchmark reference log directory", "LOG", (const char **)argv);
bu_vls_trunc(&vp, 0);
bu_vls_printf(&vp,
"%s/pixcmp "
"%s/pixcmp "
"%s/bench/pixcmp "
"%s/../bench/pixcmp "
"./pixcmp",
root, thisp, thisp, thisp);
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
look_for(verbose_echo, executable, "a pixel comparison utility", "CMP", (const char **)argv);
bu_vls_trunc(&vp, 0);
/* FIXME: elapsed is no more */
bu_vls_printf(&vp,
"%s/elapsed.sh "
"%s/elapsed.sh "
"%s/sh/elapsed.sh "
"%s/../sh/elapsed.sh "
"%s/../../sh/elapsed.sh "
"%s/../../../sh/elapsed.sh "
"./elapsed.sh",
root, thisp, thisp, thisp, thisp, thisp);
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
look_for(verbose_echo, script, "a time elapsed utility", "ELP", (const char **)argv);
bu_vls_trunc(&vp, 0);
bu_free(root, "strdup root");
bu_free(db, "strdup db");
bu_free(pix, "strdup pix");
/*********************
* output parameters *
*********************/
/* sanity check, output all the final settings together */
RT = getenv("RT");
if (RT && strlen(RT) > 0) {
echo("Using [%s] for RT\n", RT);
} else {
bu_exit(1, "ERROR: Could not find the BRL-CAD raytracer\n");
}
DB = getenv("DB");
if (DB && strlen(DB) > 0) {
echo("Using [%s] for DB\n", DB);
} else {
bu_exit(1, "ERROR: Could not find the BRL-CAD database directory\n");
}
PIX = getenv("PIX");
if (PIX && strlen(PIX) > 0) {
echo("Using [%s] for PIX\n", PIX);
} else {
bu_exit(1, "ERROR: Could not find the BRL-CAD reference images\n");
}
LOG = getenv("LOG");
if (LOG && strlen(LOG) > 0) {
echo("Using [%s] for LOG\n", LOG);
} else {
bu_exit(1, "ERROR: Could not find the BRL-CAD reference logs\n");
}
CMP = getenv("CMP");
if (CMP && strlen(CMP) > 0) {
echo("Using [%s] for CMP\n", CMP);
} else {
bu_exit(1, "ERROR: Could not find the BRL-CAD pixel comparison utility\n");
}
ELP = getenv("ELP");
if (ELP && strlen(ELP) > 0) {
echo("Using [%s] for ELP\n", ELP);
} else {
bu_exit(1, "ERROR: Could not find the BRL-CAD time elapsed script\n");
}
/* determine the minimum time requirement in seconds for a single test run */
set_if_unset(echo, verbose_echo, "TIMEFRAME", "32");
/* approximate maximum time in seconds that a given test is allowed to take */
set_if_unset(echo, verbose_echo, "MAXTIME", "300");
{
MAXTIME = strtol(getenv("MAXTIME"), NULL, 0);
TIMEFRAME = strtol(getenv("TIMEFRAME"), NULL, 0);
if (MAXTIME < TIMEFRAME) {
bu_exit(1, "ERROR: MAXTIME must be greater or equal to TIMEFRAME\n");
}
}
/* maximum deviation percentage */
set_if_unset(echo, verbose_echo, "DEVIATION", "3");
/* maximum number of iterations to average */
set_if_unset(echo, verbose_echo, "AVERAGE", "3");
/* end of settings, separate the output */
echo("\n");
/**************************
* output run-time status *
**************************/
/* determine raytracer version */
echo("RT reports the following version information:\n");
{
struct bu_vls rtout = BU_VLS_INIT_ZERO;
struct bu_vls grep1 = BU_VLS_INIT_ZERO;
struct bu_vls grep2 = BU_VLS_INIT_ZERO;
RT = getenv("RT");
bu_exec(RT, NULL, &rtout, &rtout);
bu_grep("BRL-CAD", bu_vls_cstr(&rtout), stashline, (void *)&grep1);
bu_grep("Release", bu_vls_cstr(&grep1), stashline, (void *)&grep2);
if (bu_vls_strlen(&grep2) > 0) {
echo("%s\n", bu_vls_addr(&grep2));
} else {
echo("Unknown\n\n");
}
bu_vls_free(&grep2);
bu_vls_free(&grep1);
bu_vls_free(&rtout);
}
/* let the user know about how long this might take */
{
struct bu_vls elapsed = BU_VLS_INIT_ZERO;
double mintime = 6.0 * TIMEFRAME;
double maxtime = 6.0 * MAXTIME;
double estimate = 3.0 * mintime;
if (mintime < 1.0)
mintime = 0; /* zero is okay */
bu_vls_sprintf(&elapsed, "%s", format_elapsed(mintime));
echo("Minimum run time is %s\n", bu_vls_cstr(&elapsed));
if (maxtime < 1.0)
maxtime = 1.0; /* zero would be misleading */
bu_vls_sprintf(&elapsed, "%s", format_elapsed(maxtime));
echo("Maximum run time is %s\n", bu_vls_cstr(&elapsed));
if (estimate > maxtime)
estimate = maxtime;
echo("Estimated time is %s\n", format_elapsed(estimate));
}
/************************
* Run the actual tests *
************************/
start = bu_gettime();
echo("Running the BRL-CAD Benchmark tests... please wait ...\n\n");
ret += bench("moss");
ret += bench("world");
ret += bench("star");
ret += bench("bldg391");
ret += bench("m35");
ret += bench("sphflake");
echo("\n... Done.\n");
echo("Total testing time elapsed: %.2lfs\n", format_elapsed(bu_gettime() - start));
if (ret != 0) {
echo("\n");
echo("THE BENCHMARK ANALYSIS DID NOT COMPLETE SUCCESSFULLY.\n");
echo("\n");
echo("A benchmark failure means this is not a viable install of BRL-CAD. This may be\n");
echo("a new bug or (more likely) is a compilation configuration error. Ensure your\n");
echo("compiler has strict aliasing disabled, compilation is optimized, and you have\n");
echo("installed BRL-CAD (some platforms require this). If you still get a failure,\n");
echo("please report your configuration information to benchmark@brlcad.org\n");
echo("\n");
echo("Output was saved to %s from %s\n", LOG, bu_dir(NULL, 0, BU_DIR_CURR, NULL));
echo("Run '%s clean' to remove generated pix files.\n", av[0]);
echo("Benchmark testing failed.\n");
return 2;
}
/******************************
* compute and output results *
******************************/
{
struct bu_vls performance = BU_VLS_INIT_ZERO;
ret = perf(&performance, /*...!!!...*/"moss world star bldg391 m35 sphflake", (const char **)argv);
if (ret == 0) {
/* !!! write performance to summary */
}
echo("\n");
echo("The following files have been generated and/or modified:\n");
echo(" *.log ..... final log files for each individual raytrace test\n");
echo(" *.pix ..... final pix image files for each individual raytrace test\n");
echo(" *.log.* ... log files for previous frames and raytrace tests\n");
echo(" *.pix.* ... pix image files for previous frames and raytrace tests\n");
echo(" summary ... performance results summary, 2 lines per run\n");
echo("\n");
echo("Run '%s clean' to remove generated pix files.\n", av[0]);
echo("\n");
echo("Summary:\n");
echo("%s\n", bu_vls_cstr(&performance));
{
double vgr = calculate_vgr(&performance);
if (vgr > 0.0) {
echo("\n");
echo("#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n");
echo("Benchmark results indicate an approximate VGR performance metric of %ld\n", (long int)vgr);
echo("Logarithmic VGR metric is %.2lf (natural logarithm is %.2lf)\n", log10(vgr), log(vgr));
echo("#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n");
echo("\n");
echo("These numbers seem to indicate that this machine is approximately %ld times", (long int)vgr);
echo("faster than the reference machine being used for comparison, a VAX 11/780\n");
echo("running 4.3 BSD named VGR. These results are in fact approximately %.2lf", log10(vgr));
echo("orders of magnitude faster than the reference.\n");
echo("\n");
echo("Here are some other approximated VGR results for perspective:\n");
echo(" 120 on a 200MHz R5000 running IRIX 6.5\n");
echo(" 250 on a 500 MHz Pentium III running RedHat 7.1\n");
echo(" 550 on a dual 450 MHz UltraSPARC II running SunOS 5.8\n");
echo(" 1000 on a dual 500 MHz G4 PowerPC running Mac OS X 10.2\n");
echo(" 1500 on a dual 1.66 GHz Athlon MP 2000+ running RedHat 7.3\n");
echo(" 52000 on a 4x4 CPU 2.93 GHz Xeon running RHEL Server 5.4\n");
echo(" 65000 on a 512 CPU 400 MHz R12000 Running IRIX 6.5\n");
echo("\n");
}
}
}
{
/* TODO: !!! determine if this build is optimized or not */
/* TODO: !!! determine if this build has run-time debugging */
/* TODO: !!! determine if this build has compile-time debugging */
}
/* if this was a valid benchmark run, encourage submission of results. */
echo("You are encouraged to submit your benchmark results and system\n");
echo("configuration information to benchmark@brlcad.org\n");
echo(" ~~~~~~~~~~~~~~~~~~~~\n");
/* include information about the operating system and hardware in the log */
echo("Including additional kernel and hardware information in the log.\n\n");
/* TODO: !!! print out system information via sysctl/prtdiag/prtconf/hinv/etc */
bu_vls_free(&rtargs);
bu_vls_printf(&vp,
"%s/../share/brlcad/*.*.*/doc/benchmark.tr "
"%s/share/brlcad/*.*.*/doc/benchmark.tr "
"%s/share/brlcad/doc/benchmark.tr "
"%s/share/doc/benchmark.tr "
"%s/doc/benchmark.tr "
"%s/../doc/benchmark.tr "
"./benchmark.tr",
thisp, thisp, thisp, thisp, thisp, thisp);
bu_argv_from_string(argv, 32, bu_vls_addr(&vp));
bu_free(thisp, "dirname this");
look_for(NULL, file, "BENCHMARK_TR", "benchmark", (const char **)argv);
bu_vls_trunc(&vp, 0);
/* TODO: look for benchmark document here? */
echo("Output was saved to %s from %s\n", LOG, bu_dir(NULL, 0, BU_DIR_CURR, NULL));
echo("Benchmark testing complete.\n");
return 0;
}
/*
* Local Variables:
* tab-width: 8
* mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-95
View File
@@ -1,95 +0,0 @@
/* C L E A N . C
* BRL-CAD
*
* Copyright (c) 2011-2020 United States Government as represented by
* the U.S. Army Research Laboratory.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/** @file clean.c
*
* utility functions to clean output files
*
*/
#include "common.h"
#include "bu/file.h"
#include "bu/str.h"
#include "bu/vls.h"
/* TODO: !!! needed */
int bu_file_move(const char *fn1, const char *fn2) {if (!fn1 || !fn2) return -1; return 0;}
extern int bu_file_copy(const char *fn1, const char *fn2);
/**
* conditionally removes or saves any .pix or .log files output.
*/
void
clean_obstacles(const char *base_filename, int id)
{
struct bu_vls vp = BU_VLS_INIT_ZERO;
struct bu_vls vpid = BU_VLS_INIT_ZERO;
if (BU_STR_EMPTY(base_filename))
return;
/* look for an image file */
bu_vls_printf(&vp, "%s.pix", base_filename);
if (bu_file_exists(bu_vls_cstr(&vp), NULL)) {
bu_vls_printf(&vpid, "%s-%d.pix", base_filename, id);
if (bu_file_exists(bu_vls_cstr(&vpid), NULL)) {
bu_file_delete(bu_vls_cstr(&vp));
}
bu_file_move(bu_vls_cstr(&vp), bu_vls_cstr(&vpid));
}
/* look for a log file */
bu_vls_printf(&vp, "%s.log", base_filename);
if (bu_file_exists(bu_vls_cstr(&vp), NULL)) {
bu_vls_printf(&vpid, "%s-%d.log", base_filename, id);
if (bu_file_exists(bu_vls_cstr(&vpid), NULL)) {
bu_file_delete(bu_vls_cstr(&vp));
}
bu_file_move(bu_vls_cstr(&vp), bu_vls_cstr(&vpid));
}
}
/*
* Local Variables:
* tab-width: 8
* mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-96
View File
@@ -1,96 +0,0 @@
/* C O M P U T E . C
* BRL-CAD
*
* Copyright (c) 2011-2020 United States Government as represented by
* the U.S. Army Research Laboratory.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/** @file compute.c
*
* run and computation functions
*
*/
#include "common.h"
/**
* average [..numbers..]
*
* computes the integer average for a set of given numbers
*/
double
average(int ac, double av[])
{
double total = 0.0;
if (ac < 1)
return -0.0;
while (ac-- > 0) {
total += av[ac];
}
return total / ac;
}
double
variance(int ac, double av[])
{
double avg;
double err = 0.0;
double num = ac;
if (ac < 1)
return -0.0;
else if (ac == 1)
return 0.0;
avg = average(ac, av);
/* compute variance numerator for the population */
while (ac-- > 0) {
err += (av[ac] - avg) * (av[ac] - avg);
}
/* return the sample variance */
return err / (num - 1);
}
/*
* Local Variables:
* tab-width: 8
* mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
+1 -1
View File
@@ -2,7 +2,7 @@
# L G T . S H
# BRL-CAD
#
# Copyright (c) 2004-2020 United States Government as represented by
# Copyright (c) 2004-2016 United States Government as represented by
# the U.S. Army Research Laboratory.
#
# Redistribution and use in source and binary forms, with or without
+11 -13
View File
@@ -1,7 +1,7 @@
/* P I X C M P . C
* BRL-CAD
*
* Copyright (c) 2004-2020 United States Government as represented by
* Copyright (c) 2004-2016 United States Government as represented by
* the U.S. Army Research Laboratory.
*
* This program is free software; you can redistribute it and/or
@@ -36,7 +36,6 @@
#endif
#include "bio.h"
#include "bu/app.h"
#include "bu/getopt.h"
#include "bu/log.h"
#include "bu/file.h"
@@ -77,7 +76,7 @@ usage(const char *name)
HIDDEN void
handle_i_opt(const char *arg, size_t *skip1, size_t *skip2)
handle_i_opt(const char *arg, off_t *skip1, off_t *skip2)
{
const char *endptr = arg;
if ((arg == NULL) || ((skip1 == NULL) && (skip2 == NULL))) {
@@ -123,19 +122,18 @@ main(int argc, char *argv[])
FILE *f2 = NULL;
struct stat sf1, sf2;
size_t matching = 0;
size_t off1 = 0;
size_t offmany = 0;
long matching = 0;
long off1 = 0;
long offmany = 0;
int c;
int list_pixel_values = 0;
int print_bytes = 0;
int silent = 0;
size_t f1_skip = 0;
size_t f2_skip = 0;
size_t bytes = 0;
off_t f1_skip = 0;
off_t f2_skip = 0;
bu_setprogname(argv[0]);
long int bytes = 0;
/* process opts */
while ((c = bu_getopt(argc, argv, "lbi:s")) != -1) {
@@ -217,7 +215,7 @@ main(int argc, char *argv[])
}
/* skip requested pixels/bytes in FILE1 */
if (f1_skip && fseek(f1, f1_skip, SEEK_SET)) {
if (f1_skip && bu_fseek(f1, f1_skip, SEEK_SET)) {
bu_log("ERROR: Unable to seek %zd %s%s in FILE1\n",
f1_skip,
print_bytes?"byte":"pixel",
@@ -227,7 +225,7 @@ main(int argc, char *argv[])
}
/* skip requested pixels in FILE2 */
if (f2_skip && fseek(f2, f2_skip, SEEK_SET)) {
if (f2_skip && bu_fseek(f2, f2_skip, SEEK_SET)) {
bu_log("ERROR: Unable to seek %zd %s%s in FILE2\n",
f1_skip,
print_bytes?"byte":"pixel",
@@ -303,7 +301,7 @@ main(int argc, char *argv[])
/* print summary */
if (!silent) {
printf("pixcmp %s: %8zd matching, %8zd off by 1, %8zd off by many\n",
printf("pixcmp %s: %8ld matching, %8ld off by 1, %8ld off by many\n",
print_bytes?"bytes":"pixels",
matching, off1, offmany);
}
-1
View File
@@ -22,7 +22,6 @@ BRLCAD_ADDDATA(PIX_LOG pix)
CMAKEFILES(${BENCHMARK_PIX})
CMAKEFILES(${PIX_LOG})
CMAKEFILES(CMakeLists.txt)
# Local Variables:
# tab-width: 8
-112
View File
@@ -1,112 +0,0 @@
/* R U N . C
* BRL-CAD
*
* Copyright (c) 2011-2020 United States Government as represented by
* the U.S. Army Research Laboratory.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/** @file run.c
*
* run functions
*
*/
#include "common.h"
#include <stdlib.h>
#include "bu.h"
/* TODO: !!! obviously */
struct bu_vls bu_argv_to_string(int ac, const char *av[]) {struct bu_vls v = BU_VLS_INIT_ZERO; if (ac) {bu_vls_printf(&v, "%s", av[0]);} return v;}
int (*echo)(const char *, ...) = &bu_log;
extern int bu_exec(const char *program, void *data, struct bu_vls *out, struct bu_vls *err);
/**
* run file_prefix geometry hypersample [..rt args..]
* runs a single benchmark test assuming the following are preset:
*
* RT := path/name of the raytracer to use
* DB := path to the geometry file
*
* it is assumed that stdin will be the view/frame input
*/
int
run(int ac, char *av[])
{
int retval;
const char *run_geomname = av[0];
const char *run_geometry = av[1];
long int hypersample = strtod(av[2], NULL);
struct bu_vls args = BU_VLS_INIT_ZERO;
av += 3;
ac -= 3;
args = bu_argv_to_string(ac, (const char **)av);
echo("DEBUG: Running %s -B -M -s512 -H%ld -J0 %s -o %s.pix %s/%s.g %s\n", av[0], hypersample, args, run_geomname, run_geomname, run_geometry);
/* pipe(stdin_for_bu_exec); */
retval = bu_exec("program", NULL, NULL, NULL);
echo("DEBUG: Running %s returned %d\n", av[0], retval);
return retval;
}
/**
* runs a series of benchmark tests assuming the following are preset:
*
* TIMEFRAME := maximum amount of wallclock time to spend per test
*
* is is assumed that stdin will be the view/frame input
*/
int
bench(const char *test_name)
{
if (!test_name)
return -1;
/* FIXME: !!! lots missing here */
return 0;
}
/*
* Local Variables:
* tab-width: 8
* mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
+1 -1
View File
@@ -2,7 +2,7 @@
# R U N . S H
# BRL-CAD
#
# Copyright (c) 2004-2020 United States Government as represented by
# Copyright (c) 2004-2016 United States Government as represented by
# the U.S. Army Research Laboratory.
#
# Redistribution and use in source and binary forms, with or without
+1 -1
View File
@@ -2,7 +2,7 @@
# T R Y . S H
# BRL-CAD
#
# Copyright (c) 2004-2020 United States Government as represented by
# Copyright (c) 2004-2016 United States Government as represented by
# the U.S. Army Research Laboratory.
#
# Redistribution and use in source and binary forms, with or without
+1 -1
View File
@@ -2,7 +2,7 @@
# V I E W D I F F . S H
# BRL-CAD
#
# Copyright (c) 2004-2020 United States Government as represented by
# Copyright (c) 2004-2016 United States Government as represented by
# the U.S. Army Research Laboratory.
#
# Redistribution and use in source and binary forms, with or without
Vendored
+28 -4
View File
@@ -70,6 +70,14 @@ do
shift;;
--disable-all-cxx) options="$options -DENABLE_ALL_CXX_COMPILE=OFF";
shift;;
--enable-posix) options="$options -DENABLE_POSIX_COMPLIANCE=ON";
shift;;
--disable-posix) options="$options -DENABLE_POSIX_COMPLIANCE=OFF";
shift;;
--strict-iso-c) options="$options -DENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE=ON";
shift;;
--strict-iso-c) options="$options -DENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE=OFF";
shift;;
--enable-docs) options="$options -DBRLCAD_EXTRADOCS=ON";
shift;;
--disable-docs) options="$options -DBRLCAD_EXTRADOCS=OFF";
@@ -118,18 +126,30 @@ do
shift;;
--disable-libz) options="$options -DBRLCAD_ZLIB=SYSTEM";
shift;;
--enable-png) options="$options -DBRLCAD_PNG=BUNDLED";
--enable-tinycthread) options="$options -DBRLCAD_TINYCTHREAD=BUNDLED";
shift;;
--disable-png) options="$options -DBRLCAD_PNG=SYSTEM";
--disable-tinycthread) options="$options -DBRLCAD_TINYCTHREAD=SYSTEM";
shift;;
--enable-lz4) options="$options -DBRLCAD_LZ4=BUNDLED";
shift;;
--disable-lz4) options="$options -DBRLCAD_LZ4=SYSTEM";
shift;;
--enable-freetype) options="$options -DBRLCAD_FREETYPE=BUNDLED";
shift;;
--disable-freetype) options="$options -DBRLCAD_FREETYPE=SYSTEM";
shift;;
--enable-termlib) options="$options -DBRLCAD_TERMLIB=BUNDLED";
shift;;
--disable-termlib) options="$options -DBRLCAD_TERMLIB=SYSTEM";
shift;;
--enable-netpbm) options="$options -DBRLCAD_NETPBM=BUNDLED";
shift;;
--disable-netpbm) options="$options -DBRLCAD_NETPBM=SYSTEM";
shift;;
--enable-png) options="$options -DBRLCAD_PNG=BUNDLED";
shift;;
--disable-png) options="$options -DBRLCAD_PNG=SYSTEM";
shift;;
--enable-utahrle) options="$options -DBRLCAD_UTAHRLE=BUNDLED";
shift;;
--disable-utahrle) options="$options -DBRLCAD_UTAHRLE=SYSTEM";
@@ -158,6 +178,10 @@ do
shift;;
--disable-tkhtml) options="$options -DBRLCAD_TKHTML=SYSTEM";
shift;;
--enable-tkpng) options="$options -DBRLCAD_TKPNG=BUNDLED";
shift;;
--disable-tkpng) options="$options -DBRLCAD_TKPNG=SYSTEM";
shift;;
--enable-tktable) options="$options -DBRLCAD_TKTABLE=BUNDLED";
shift;;
--disable-tktable) options="$options -DBRLCAD_TKTABLE=SYSTEM";
@@ -166,9 +190,9 @@ do
shift;;
--disable-opennurbs) options="$options -DBRLCAD_OPENNURBS=SYSTEM";
shift;;
--enable-spsr) options="$options -DBRLCAD_SPSR=BUNDLED";
--enable-spr) options="$options -DBRLCAD_SPR=BUNDLED";
shift;;
--disable-spsr) options="$options -DBRLCAD_SPSR=SYSTEM";
--disable-spr) options="$options -DBRLCAD_SPR=SYSTEM";
shift;;
--enable-scl) options="$options -DBRLCAD_SC=BUNDLED";
shift;;
+41 -167
View File
@@ -1,127 +1,3 @@
# There is quite a bit of shared logic for the various converters when it comes
# to building .g outputs, so we use a single function to manage the process and
# handle format-specific bits internally. TODO - we probably need to add
# optional argument support here later to support (say) specifying a specific
# COMGEOM or STEP format version...
function(ADD_G_TARGET in_model folder)
# Initialize
set(MODEL_TYPE "UNKNOWN")
# 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)
# Find our conversion type
set(model_types "3dm;asc;comgeom;fg4;stp")
foreach(mt ${model_types})
if("${MODEL_TYPE}" STREQUAL "UNKNOWN")
if("${in_model}" MATCHES ".${mt}$")
set(MODEL_TYPE "${mt}")
string(REGEX REPLACE "([0-9a-z]*).${mt}" "\\1" in_model_root "${in_model}")
endif("${in_model}" MATCHES ".${mt}$")
endif("${MODEL_TYPE}" STREQUAL "UNKNOWN")
endforeach(mt ${model_types})
if("${MODEL_TYPE}" STREQUAL "UNKNOWN")
message(FATAL_ERROR "Unable to identify input model type for file ${in_model}")
endif("${MODEL_TYPE}" STREQUAL "UNKNOWN")
# Find our output file and path
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" rel_dir "${CMAKE_CURRENT_SOURCE_DIR}")
set(output_file ${DATA_DIR}/${rel_dir}/${in_model_root}.g)
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.log)
# Make sure the output db target directories are there
if(CMAKE_CONFIGURATION_TYPES)
foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${CFG_TYPE}/${DATA_DIR}/${rel_dir}")
endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
else(CMAKE_CONFIGURATION_TYPES)
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${DATA_DIR}/${rel_dir}")
endif(CMAKE_CONFIGURATION_TYPES)
#############################################################################
# Build logic
#############################################################################
# The 3DM conversion is rather different than the general pattern at the
# moment (However, the 3dm approach is probably the "wave of the future" in
# the sense that it uses libgcv...)
if(${MODEL_TYPE} STREQUAL "3dm")
# Because we won't know the output directory in the script reliably until run time,
# we append CURRENT_BUILD_DIR as a string to the arguments - it is the script's
# responsibility to handle it correctly at run time.
set(CMD_ARGS "-o" "CURRENT_BUILD_DIR/${output_file}" "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}")
# Use the model name for the script, since the output file is specific to this input
set(script_file "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
# We know enough - write the script
generate_cmd_script(3dm-g "${script_file}" OLOG "${log_file}" ELOG "${log_file}" CARGS "${CMD_ARGS}")
# Define the target
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND ${CMAKE_COMMAND} -P "${script_file}"
DEPENDS 3dm-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
)
endif(${MODEL_TYPE} STREQUAL "3dm")
# The rest of the conversions follow the simpler/older pattern:
if(${MODEL_TYPE} STREQUAL "asc")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}" ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
DEPENDS asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}"
)
endif(${MODEL_TYPE} STREQUAL "asc")
if(${MODEL_TYPE} STREQUAL "comgeom")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND comgeom-g -v 5 ${CMAKE_CURRENT_SOURCE_DIR}/${in_model} ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file} > ${log_file} 2>&1
DEPENDS comgeom-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
)
endif(${MODEL_TYPE} STREQUAL "comgeom")
if(${MODEL_TYPE} STREQUAL "fg4")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND fast4-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model} ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file} > ${log_file} 2>&1
DEPENDS fast4-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
)
endif(${MODEL_TYPE} STREQUAL "fg4")
if(${MODEL_TYPE} STREQUAL "stp")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND step-g -O ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file} ${CMAKE_CURRENT_SOURCE_DIR}/${in_model} > ${log_file} 2>&1
DEPENDS step-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
)
endif(${MODEL_TYPE} STREQUAL "stp")
add_custom_target(${in_model_root}.g ALL DEPENDS ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file})
set_target_properties(${in_model_root}.g PROPERTIES FOLDER "${folder}")
# Install logic
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
install(FILES ${CMAKE_CURRENT_BUILD_DIR_INSTALL}/${output_file} DESTINATION ${DATA_DIR}/${rel_dir})
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
# Clean-up
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${log_file}")
DISTCLEAN("${log_file}")
endfunction(ADD_G_TARGET in_model folder)
set(G_BENCHMARK_MODELS
bldg391.asc
m35.asc
@@ -134,7 +10,6 @@ set(G_BENCHMARK_MODELS
set(G_SAMPLE_MODELS
aet.asc
axis.asc
bearing.asc
boolean-ops.asc
castle.asc
cornell.asc
@@ -143,7 +18,6 @@ set(G_SAMPLE_MODELS
crod.asc
cube.asc
demo.asc
die.asc
galileo.asc
goliath.asc
havoc.asc
@@ -154,7 +28,6 @@ set(G_SAMPLE_MODELS
pic.asc
pinewood.asc
prim.asc
rounds.asc
tank_car.asc
terra.asc
toyjeep.asc
@@ -163,7 +36,43 @@ set(G_SAMPLE_MODELS
woodsman.asc
xmp.asc
)
add_subdirectory(chess)
macro(ADD_G_TARGET g_model folder)
string(REGEX REPLACE "([0-9a-z]*).asc" "\\1" g_model_root "${g_model}")
set(output_file ${bin_root}/${DATA_DIR}/db/${g_model_root}.g)
add_custom_command(
OUTPUT ${output_file}
COMMAND asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${g_model}" ${output_file}
DEPENDS asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${g_model}"
)
add_custom_target(${g_model_root}.g ALL DEPENDS ${output_file})
set_target_properties(${g_model_root}.g PROPERTIES FOLDER "${folder}")
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
if(NOT "${CMAKE_CFG_INTDIR}" STREQUAL "." AND CMAKE_CONFIGURATION_FILES)
string(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" output_file "${output_file}")
endif(NOT "${CMAKE_CFG_INTDIR}" STREQUAL "." AND CMAKE_CONFIGURATION_FILES)
install(FILES ${output_file} DESTINATION ${DATA_DIR}/db)
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
set(BUILT_MODELS "${BUILT_MODELS};${output_file}")
endmacro(ADD_G_TARGET g_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)
# Make sure the db directories are there
if(CMAKE_CONFIGURATION_TYPES)
foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${CFG_TYPE}/${DATA_DIR}/db")
endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
else(CMAKE_CONFIGURATION_TYPES)
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${DATA_DIR}/db")
endif(CMAKE_CONFIGURATION_TYPES)
add_subdirectory(comgeom)
add_subdirectory(nist)
add_subdirectory(faa)
@@ -171,54 +80,19 @@ add_subdirectory(faa)
foreach(g_input ${G_BENCHMARK_MODELS})
ADD_G_TARGET(${g_input} "BRL-CAD Geometry Models/Benchmark")
endforeach(g_input ${G_BENCHMARK_MODELS})
CMAKEFILES(${G_BENCHMARK_MODELS})
foreach(g_input ${G_SAMPLE_MODELS})
ADD_G_TARGET(${g_input} "BRL-CAD Geometry Models/Sample")
endforeach(g_input ${G_SAMPLE_MODELS})
CMAKEFILES(${G_SAMPLE_MODELS})
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${BUILT_MODELS}")
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
BRLCAD_ADDDATA(terra.dsp db)
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
if(SH_EXEC)
set(conversion_g_files)
set(conversion_g_files_fp)
set(conversion_deps_list)
macro(Sh_Conversion_Test gfile depends_list)
add_custom_target(convert-${gfile} COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile})
set_target_properties(convert-${gfile} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
set_target_properties(convert-${gfile} PROPERTIES FOLDER "BRL-CAD Conversion Tests")
set(conversion_g_files ${conversion_g_files} ${gfile})
if(NOT "${depends_list}" STREQUAL "")
add_dependencies(convert-${gfile} ${depends_list})
set(conversion_deps_list ${conversion_deps_list} ${depends_list})
endif(NOT "${depends_list}" STREQUAL "")
endmacro(Sh_Conversion_Test)
foreach(g_input ${G_BENCHMARK_MODELS})
get_filename_component(GROOT "${g_input}" NAME_WE)
Sh_Conversion_Test(${GROOT}.g "mged")
endforeach(g_input ${G_BENCHMARK_MODELS})
foreach(g_input ${G_SAMPLE_MODELS})
get_filename_component(GROOT "${g_input}" NAME_WE)
Sh_Conversion_Test(${GROOT}.g "mged")
endforeach(g_input ${G_SAMPLE_MODELS})
list(REMOVE_DUPLICATES conversion_deps_list)
foreach(gfile ${conversion_g_files})
set(conversion_g_files_fp ${conversion_g_files_fp} "${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile}")
endforeach(gfile ${conversion_g_files})
add_custom_target(convert COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${conversion_g_files_fp})
set_target_properties(convert PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
set_target_properties(convert PROPERTIES FOLDER "BRL-CAD Conversion Tests")
add_dependencies(convert ${conversion_deps_list})
endif(SH_EXEC)
CMAKEFILES(
${G_BENCHMARK_MODELS}
${G_SAMPLE_MODELS}
CMakeLists.txt
aet.rt
cornell.rt
cube.rt
-43
View File
@@ -1,43 +0,0 @@
title {Single Row 7-ball Deep Groove 608Z Ball Bearing, 8mm ID x 22mm OD x 7mm}
units mm
put {ballgroove.s} tor V {0 0 0} H {0 1 0} r_a 7.5 r_h 2
put {innerringrightround.s} tor V {0 3.399999999999999911182158 0} H {0 1 0} r_a 4.099999999999999644728632 r_h 0.1000000000000000055511151
put {outerringmainin.s} tgc V {0 -3.5 0} H {0 7 0} A {0 0 9.599999999999999644728632} B {9.599999999999999644728632 0 0} C {0 0 9.599999999999999644728632} D {9.599999999999999644728632 0 0}
put {outerringmaincenter.s} tgc V {0 -3.399999999999999911182158 0} H {0 6.799999999999999822364316 0} A {0 0 11} B {11 0 0} C {0 0 11} D {11 0 0}
put {innerring2.s} tgc V {0 -3.399999999999999911182158 0} H {0 6.799999999999999822364316 0} A {0 0 5.400000000000000355271368} B {5.400000000000000355271368 0 0} C {0 0 5.400000000000000355271368} D {5.400000000000000355271368 0 0}
put {innerring2leftround.s} tor V {0 -3.399999999999999911182158 0} H {0 1 0} r_a 5.299999999999999822364316 r_h 0.1000000000000000055511151
put {outerringmaininrightround.s} tor V {0 3.399999999999999911182158 0} H {0 0.9999999999999998889776975 0} r_a 9.599999999999999644728632 r_h 0.1000000000000000055511151
put {outerringinner2.s} tgc V {0 -2.200000000000000177635684 0} H {0 4.400000000000000355271368 0} A {0 0 9.5} B {9.5 0 0} C {0 0 9.5} D {9.5 0 0}
put {outerringmainleftround.s} tor V {0 -3.399999999999999911182158 0} H {0 0.9999999999999998889776975 0} r_a 10.90000000000000035527137 r_h 0.1000000000000000055511151
put {outerring.r} comb region yes tree {u {u {u {u {u {u {u {u {u {- {- {l outerringmaincenter.s} {l outerringmainfullcut.s}} {l ballgroove.s}} {- {- {l outerringmainout.s} {l outerringmainin.s}} {l ballgroove.s}}} {- {- {l outerringinner.s} {l outerringinnercut.s}} {l ballgroove.s}}} {- {- {l outerringinner2.s} {l outerringinnercut2.s}} {l ballgroove.s}}} {l outerringmainleftround.s}} {l outerringmainrightround.s}} {l outerringmaininleftround.s}} {l outerringmaininrightround.s}} {l outerringinnerrightround.s}} {l outerringinnerleftround.s}}
attr set {outerring.r} {region} {R} {region_id} {1010} {material_id} {1} {los} {100}
put {innerring.s} tgc V {0 -3.5 0} H {0 7 0} A {0 0 5.299999999999999822364316} B {5.299999999999999822364316 0 0} C {0 0 5.299999999999999822364316} D {5.299999999999999822364316 0 0}
put {innerring.r} comb region yes tree {u {u {u {u {u {u {u {u {- {- {l innneroutercenter.s} {l ballgroove.s}} {l shaftcut1.s}} {- {- {l innerring.s} {l ballgroove.s}} {l shaftcut2.s}}} {- {- {l innerring2.s} {l ballgroove.s}} {l shaftcut1.s}}} {- {l innerlefttrc.s} {l shaftcut1.s}}} {- {l innerrighttrc.s} {l shaftcut1.s}}} {l innerring2leftround.s}} {l innerring2rightround.s}} {l innerringleftround.s}} {l innerringrightround.s}}
attr set {innerring.r} {region} {R} {region_id} {1004} {material_id} {1} {los} {100}
put {shaftcut2.s} tgc V {0 -3.5 0} H {0 7 0} A {0 0 4.099999999999999644728632} B {4.099999999999999644728632 0 0} C {0 0 4.099999999999999644728632} D {4.099999999999999644728632 0 0}
put {shaftcut1.s} tgc V {0 -3.5 0} H {0 7 0} A {0 0 4} B {4 0 0} C {0 0 4} D {4 0 0}
put {outerringinner.s} tgc V {0 -2.299999999999999822364316 0} H {0 4.599999999999999644728632 0} A {0 0 9.5} B {9.5 0 0} C {0 0 9.5} D {9.5 0 0}
put {innerringleftround.s} tor V {0 -3.399999999999999911182158 0} H {0 1 0} r_a 4.099999999999999644728632 r_h 0.1000000000000000055511151
put {outerringinnercut2.s} tgc V {0 -2.299999999999999822364316 0} H {0 4.599999999999999644728632 0} A {0 0 9} B {9 0 0} C {0 0 9} D {9 0 0}
put {outerringinnerrightround.s} tor V {0 2.200000000000000177635684 0} H {0 0.9999999999999998889776975 0} r_a 9.099999999999999644728632 r_h 0.1000000000000000055511151
put {innerrighttrc.s} tgc V {0 2.5 0} H {0 0.2000000000000000111022302 0} A {0 0 6.200000000000000177635684} B {6.200000000000000177635684 0 0} C {0 0 5.400000000000000355271368} D {5.400000000000000355271368 0 0}
put {outerringmaininleftround.s} tor V {0 -3.399999999999999911182158 0} H {0 0.9999999999999998889776975 0} r_a 9.599999999999999644728632 r_h 0.1000000000000000055511151
put {outerringinnercut.s} tgc V {0 -2.299999999999999822364316 0} H {0 4.599999999999999644728632 0} A {0 0 9.099999999999999644728632} B {9.099999999999999644728632 0 0} C {0 0 9.099999999999999644728632} D {9.099999999999999644728632 0 0}
put {innneroutercenter.s} tgc V {0 -2.5 0} H {0 5 0} A {0 0 6.200000000000000177635684} B {6.200000000000000177635684 0 0} C {0 0 6.200000000000000177635684} D {6.200000000000000177635684 0 0}
put {bearing} comb region no tree {u {u {l outerring.r} {l innerring.r}} {l balls.r}}
attr set {bearing} {shader} {glass}
put {balls.r} comb region yes tree {u {u {u {l ball101} {l ball201}} {u {l ball301} {l ball401}}} {u {u {l ball501} {l ball601}} {l ball701}}}
attr set {balls.r} {region} {R} {region_id} {1011} {material_id} {1} {los} {100}
put {innerlefttrc.s} tgc V {0 -2.5 0} H {0 -0.2000000000000000111022302 0} A {0 0 -6.200000000000000177635684} B {6.200000000000000177635684 0 0} C {0 0 -5.400000000000000355271368} D {5.400000000000000355271368 0 0}
put {ball701} ell V {1.836909530733565887317127E-15 0 -7.5} A {2 0 4.898425415289509032845672E-16} B {0 2 0} C {-4.898425415289509032845672E-16 0 2}
put {ball601} ell V {5.57358619108045960643949 0 -5.018479547691433673151096} A {1.338261212717715586961731 0 1.486289650954789154368996} B {0 2 0} C {-1.486289650954789154368996 0 1.338261212717715586961731}
put {ball501} ell V {7.386058147591560540945466 0 1.302361332501977386755243} A {-0.3472963553338606623732687 0 1.969615506024416040631309} B {0 2 0} C {-1.969615506024416040631309 0 -0.3472963553338606623732687}
put {ball401} ell V {3.521036720894181293317615 0 6.622106946441951969006823} A {-1.765895185717853754781004 0 0.9389431255717817226269517} B {0 2 0} C {-0.9389431255717817226269517 0 -1.765895185717853754781004}
put {ball301} ell V {-3.050524823068503366130244 0 6.851590932319505888870026} A {-1.827090915285201511153446 0 -0.8134732861516008606272976} B {0 2 0} C {0.8134732861516008606272976 0 -1.827090915285201511153446}
put {ball201} ell V {-7.277217947069973824625322 0 1.814414216997508377815507} A {-0.4838437911993355711182119 0 -1.940591452551992945885218} B {0 2 0} C {1.940591452551992945885218 0 -0.4838437911993355711182119}
put {ball101} ell V {-5.910080652050415217502177 0 -4.617461064942436799185543} A {1.231322950651316583403627 0 -1.576021507213444028394633} B {0 2 0} C {1.576021507213444028394633 0 1.231322950651316583403627}
put {outerringmainfullcut.s} tgc V {0 -3.5 0} H {0 7 0} A {0 0 9.5} B {9.5 0 0} C {0 0 9.5} D {9.5 0 0}
put {outerringmainout.s} tgc V {0 -3.5 0} H {0 7 0} A {0 0 10.90000000000000035527137} B {10.90000000000000035527137 0 0} C {0 0 10.90000000000000035527137} D {10.90000000000000035527137 0 0}
put {innerring2rightround.s} tor V {0 3.399999999999999911182158 0} H {0 1 0} r_a 5.299999999999999822364316 r_h 0.1000000000000000055511151
put {outerringinnerleftround.s} tor V {0 -2.200000000000000177635684 0} H {0 0.9999999999999998889776975 0} r_a 9.099999999999999644728632 r_h 0.1000000000000000055511151
put {outerringmainrightround.s} tor V {0 3.399999999999999911182158 0} H {0 0.9999999999999998889776975 0} r_a 10.90000000000000035527137 r_h 0.1000000000000000055511151
-25
View File
@@ -1,25 +0,0 @@
set(CHESS_PARTS
bishop.asc
chessboard.asc
king.asc
knight.asc
pawn.asc
queen.asc
rook.asc
)
foreach(piece ${CHESS_PARTS})
ADD_G_TARGET(${piece} "BRL-CAD Geometry Models/Sample/Chess")
endforeach(piece ${CHESS_PARTS})
CMAKEFILES(
${CHESS_PARTS}
CMakeLists.txt
)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-27
View File
@@ -1,27 +0,0 @@
title {Bishop by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {bottomtor.s} tor V {0 0 9} H {6.12323399573676603586882E-17 0 1} r_a 11.78466675885103676080234 r_h 3.825815710827906279689614
put {bottometo.s} eto V {0 0 20} N {0 0 0.06032399549610674427402301} C {2.864077970686895735497046 1.71612229850775266370988 1.889299368274914403542653} r 7.634087276719064618646371 r_d 1.673109642593672896637713
put {head_fill.s} tgc V {0 0 58.80223912679091569088996} H {0 0 22.65963591768163354345234} A {5.387125525462328923254063 0 0} B {0 5.387125525462328923254063 0} C {5.200376920059111007788033 0 0} D {0 5.200376920059111007788033 0}
put {head_bulb.c} comb region no tree {u {u {u {l head_tip.s} {l headeto1.s}} {u {l headeto2.s} {l headeto3.s}}} {u {l headtor.s} {l head_fill.s}}}
put {head_tip.s} ell V {0 0 87.04042899999969051805238} A {4.122892005997910835901621 0 0} B {0 4.122892005997910835901621 0} C {0 0 1.842941974166217855568561}
put {headeto3.s} eto V {4.688718984760804335454747E-15 0 59.13440800000000763247954} N {-7.947115565380555332745523E-18 0 -0.06489312323286719474957351} C {-4.236592184243099801221888 2.53851689495714083477651 -2.794683321910145679112247} r 6.747558139033351665148075 r_d 2.154325975943817361724086
put {headeto2.s} eto V {0 0 69.75203000000003328295861} N {1.448859083826348923311558E-17 0 0.05915416121754862865955715} C {3.216284115722051861752107 0.07864296900740583295963404 7.027901354553716117834483} r 5.71636407530149437405953 r_d 5.245951427846474501848206
put {headeto1.s} eto V {0 0 78.93410500000000240561349} N {-6.702751448643837023482541E-18 0 -0.05473211911638976162608472} C {-4.89647969165551177894713 -1.380861880325698898275277 -7.149314636959307023289512} r 5.669699999999999739941359 r_d 2.770284953476933154092876
put {bodytor.s} tor V {0 0 25} H {6.12323399573676603586882E-17 0 1} r_a 8.61686192136895989790446 r_h 0.9710977822416242410952236
put {bodycut.s} tor V {0 0 44.99824699999995658572516} H {6.12323399573676603586882E-17 0 1} r_a 84.47809976324354863663757 r_h 78.38786126059979153524182
put {headtor.s} tor V {0 0 61.97812700000005747824616} H {3.061616997868383634231992E-16 0 1} r_a 8.239894264539179502548905 r_h 0.9722303169289367996697138
put {baseeto.s} eto V {0 0 5} N {-5.470978323999804257192075E-18 0 -0.04467392825269222295103688} C {9.315747832292275987242647 -1.365449293915910411456593 -4.391804451322707691929281} r 10.59850529883725656077331 r_d 4.265499428605880716247611
put {headcut.s} rpc V {12.21216100000001958392204 7.476746999999903664502199 83.68170200000177771926246} H {-23.87939453125 2.601874869850522123907568E-16 1.438855652391413561129983E-15} B {-6.645126338810317127466624E-16 -8.09669190546901518246159 -9.5641987525274494430505} r 1.903339211850920698054779
put {bishop.r} comb region yes tree {l bishop.c {1 0 0 0 0 1 0 0 0 0 1 0.960356 0 0 0 1}}
attr set {bishop.r} {region} {R} {shader} {plastic {re 0.1 sp 0.9 di 0.1 sh 50 ex 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/217}
put {bottom.c} comb region no tree {u {u {l bottometo.s} {l bottomtor.s}} {u {l baseeto.s} {l base_filler.s}}}
put {bishop.c} comb region no tree {u {u {l head.c} {l body.c}} {l bottom.c}}
put {scene.g} comb region no tree {u {l bishop.r} {l tile.r}}
put {body.s} tgc V {0 0 5.912562917080187219198706} H {0 0 56.83007219556699851636949} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {tile.s} arb8 V1 {28.5 -28.5 0} V2 {28.5 28.5 0} V3 {28.5 28.5 -1} V4 {28.5 -28.5 -1} V5 {-28.5 -28.5 0} V6 {-28.5 28.5 0} V7 {-28.5 28.5 -1} V8 {-28.5 -28.5 -1}
put {tile.r} comb region yes tree {l tile.s}
attr set {tile.r} {oshader} {plastic {sh 1}} {region} {R} {shader} {plastic {re 0.5 sh 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
put {body.c} comb region no tree {u {- {l body.s} {l bodycut.s}} {l bodytor.s}}
put {head.c} comb region no tree {- {l head_bulb.c} {l headcut.s}}
put {base_filler.s} tgc V {0 0 -0.8138631382182293094729175} H {0 0 12.74035922868059600432389} A {16.38855503646686528895771 0 0} B {0 16.38855503646686528895771 0} C {9.863417071382475143082047 0 0} D {0 4.931708535691237571541023 0}
-83
View File
@@ -1,83 +0,0 @@
title {Chessboard by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {board_cuts.c} comb region no tree {u {u {l boardcut1.s} {l boardcut2.s}} {u {l boardcut3.s} {l boardcut4.s}}}
put {tiles_dark.r} comb region yes tree {l tiles_dark.c}
attr set {tiles_dark.r} {oshader} {plastic} {region} {R} {shader} {plastic {re 0.1 sp 0.8 di 0.2}} {region_id} {1000} {material_id} {1} {los} {100} {color} {75/45/47}
put {wood_plane.s} arb8 V1 {313.5 -313.5 -15} V2 {313.5 313.5 -15} V3 {313.5 313.5 5} V4 {313.5 -313.5 5} V5 {-313.5 -313.5 -15} V6 {-313.5 313.5 -15} V7 {-313.5 313.5 5} V8 {-313.5 -313.5 5}
put {tiles_dark.c} comb region no tree {u {u {u {u {u {l a1.s} {l c1.s}} {u {l e1.s} {l g1.s}}} {u {u {l b2.s} {l d2.s}} {u {l f2.s} {l h2.s}}}} {u {u {u {l a3.s} {l c3.s}} {u {l e3.s} {l g3.s}}} {u {u {l b4.s} {l d4.s}} {u {l f4.s} {l h4.s}}}}} {u {u {u {u {l a5.s} {l c5.s}} {u {l e5.s} {l g5.s}}} {u {u {l b6.s} {l d6.s}} {u {l f6.s} {l h6.s}}}} {u {u {u {l a7.s} {l c7.s}} {u {l e7.s} {l g7.s}}} {u {u {l b8.s} {l d8.s}} {u {l f8.s} {l h8.s}}}}}}
put {boardcut4.s} tgc V {-313.5 -313.5 5} H {-3.839267715326952574428091E-14 627 3.839267715326952574428091E-14} A {3.749399456654646756500121E-32 -6.123233995736770226692379E-16 10} B {42.75 2.617682533177467341666965E-15 0} C {3.74939945665464456697127E-32 -6.123233995736766282387853E-16 10} D {42.75 2.617682533177467341666965E-15 0}
put {boardcut3.s} tgc V {313.5 -313.5 5} H {-627 0 3.839267715326952574428091E-14} A {6.123233995736770226692379E-16 0 10} B {0 42.75 0} C {6.123233995736766282387853E-16 0 10} D {0 42.75 0}
put {boardcut2.s} tgc V {313.5 -313.5 5} H {-3.839267715326952574428091E-14 627 3.839267715326952574428091E-14} A {3.749399456654646756500121E-32 -6.123233995736770226692379E-16 10} B {42.75 2.617682533177467341666965E-15 0} C {3.74939945665464456697127E-32 -6.123233995736766282387853E-16 10} D {42.75 2.617682533177467341666965E-15 0}
put {boardcut1.s} tgc V {313.5 313.5 5} H {-627 0 3.839267715326952574428091E-14} A {6.123233995736770226692379E-16 0 10} B {0 42.75 0} C {6.123233995736766282387853E-16 0 10} D {0 42.75 0}
put {border.r} comb region yes tree {- {- {l wood_plane.s} {l tiles.c}} {l board_cuts.c}}
attr set {border.r} {oshader} {plastic} {region} {R} {shader} {plastic {re 0.1 sp 0.8 di 0.2}} {region_id} {1002} {material_id} {1} {los} {100} {color} {245/227/174}
put {tiles.c} comb region no tree {u {l tiles_light.r} {l tiles_dark.r}}
put {board.g} comb region no tree {u {l tiles.c} {l border.r}}
put {tiles_light.r} comb region yes tree {l tiles_light.c}
attr set {tiles_light.r} {oshader} {plastic} {region} {R} {shader} {plastic {re 0.1 sp 0.8 di 0.2}} {region_id} {1001} {material_id} {1} {los} {100} {color} {255/255/255}
put {h8.s} arb8 V1 {228 171 0} V2 {228 228 0} V3 {228 228 5} V4 {228 171 5} V5 {171 171 0} V6 {171 228 0} V7 {171 228 5} V8 {171 171 5}
put {g8.s} arb8 V1 {171 171 0} V2 {171 228 0} V3 {171 228 5} V4 {171 171 5} V5 {114 171 0} V6 {114 228 0} V7 {114 228 5} V8 {114 171 5}
put {f8.s} arb8 V1 {114 171 0} V2 {114 228 0} V3 {114 228 5} V4 {114 171 5} V5 {57 171 0} V6 {57 228 0} V7 {57 228 5} V8 {57 171 5}
put {h7.s} arb8 V1 {228 114 0} V2 {228 171 0} V3 {228 171 5} V4 {228 114 5} V5 {171 114 0} V6 {171 171 0} V7 {171 171 5} V8 {171 114 5}
put {e8.s} arb8 V1 {57 171 0} V2 {57 228 0} V3 {57 228 5} V4 {57 171 5} V5 {0 171 0} V6 {0 228 0} V7 {0 228 5} V8 {0 171 5}
put {g7.s} arb8 V1 {171 114 0} V2 {171 171 0} V3 {171 171 5} V4 {171 114 5} V5 {114 114 0} V6 {114 171 0} V7 {114 171 5} V8 {114 114 5}
put {d8.s} arb8 V1 {0 171 0} V2 {0 228 0} V3 {0 228 5} V4 {0 171 5} V5 {-57 171 0} V6 {-57 228 0} V7 {-57 228 5} V8 {-57 171 5}
put {f7.s} arb8 V1 {114 114 0} V2 {114 171 0} V3 {114 171 5} V4 {114 114 5} V5 {57 114 0} V6 {57 171 0} V7 {57 171 5} V8 {57 114 5}
put {h6.s} arb8 V1 {228 57 0} V2 {228 114 0} V3 {228 114 5} V4 {228 57 5} V5 {171 57 0} V6 {171 114 0} V7 {171 114 5} V8 {171 57 5}
put {c8.s} arb8 V1 {-57 171 0} V2 {-57 228 0} V3 {-57 228 5} V4 {-57 171 5} V5 {-114 171 0} V6 {-114 228 0} V7 {-114 228 5} V8 {-114 171 5}
put {e7.s} arb8 V1 {57 114 0} V2 {57 171 0} V3 {57 171 5} V4 {57 114 5} V5 {0 114 0} V6 {0 171 0} V7 {0 171 5} V8 {0 114 5}
put {g6.s} arb8 V1 {171 57 0} V2 {171 114 0} V3 {171 114 5} V4 {171 57 5} V5 {114 57 0} V6 {114 114 0} V7 {114 114 5} V8 {114 57 5}
put {b8.s} arb8 V1 {-114 171 0} V2 {-114 228 0} V3 {-114 228 5} V4 {-114 171 5} V5 {-171 171 0} V6 {-171 228 0} V7 {-171 228 5} V8 {-171 171 5}
put {d7.s} arb8 V1 {0 114 0} V2 {0 171 0} V3 {0 171 5} V4 {0 114 5} V5 {-57 114 0} V6 {-57 171 0} V7 {-57 171 5} V8 {-57 114 5}
put {f6.s} arb8 V1 {114 57 0} V2 {114 114 0} V3 {114 114 5} V4 {114 57 5} V5 {57 57 0} V6 {57 114 0} V7 {57 114 5} V8 {57 57 5}
put {h5.s} arb8 V1 {228 0 0} V2 {228 57 0} V3 {228 57 5} V4 {228 0 5} V5 {171 0 0} V6 {171 57 0} V7 {171 57 5} V8 {171 0 5}
put {a8.s} arb8 V1 {-171 171 0} V2 {-171 228 0} V3 {-171 228 5} V4 {-171 171 5} V5 {-228 171 0} V6 {-228 228 0} V7 {-228 228 5} V8 {-228 171 5}
put {c7.s} arb8 V1 {-57 114 0} V2 {-57 171 0} V3 {-57 171 5} V4 {-57 114 5} V5 {-114 114 0} V6 {-114 171 0} V7 {-114 171 5} V8 {-114 114 5}
put {e6.s} arb8 V1 {57 57 0} V2 {57 114 0} V3 {57 114 5} V4 {57 57 5} V5 {0 57 0} V6 {0 114 0} V7 {0 114 5} V8 {0 57 5}
put {g5.s} arb8 V1 {171 0 0} V2 {171 57 0} V3 {171 57 5} V4 {171 0 5} V5 {114 0 0} V6 {114 57 0} V7 {114 57 5} V8 {114 0 5}
put {b7.s} arb8 V1 {-114 114 0} V2 {-114 171 0} V3 {-114 171 5} V4 {-114 114 5} V5 {-171 114 0} V6 {-171 171 0} V7 {-171 171 5} V8 {-171 114 5}
put {d6.s} arb8 V1 {0 57 0} V2 {0 114 0} V3 {0 114 5} V4 {0 57 5} V5 {-57 57 0} V6 {-57 114 0} V7 {-57 114 5} V8 {-57 57 5}
put {f5.s} arb8 V1 {114 0 0} V2 {114 57 0} V3 {114 57 5} V4 {114 0 5} V5 {57 0 0} V6 {57 57 0} V7 {57 57 5} V8 {57 0 5}
put {h4.s} arb8 V1 {228 -57 0} V2 {228 0 0} V3 {228 0 5} V4 {228 -57 5} V5 {171 -57 0} V6 {171 0 0} V7 {171 0 5} V8 {171 -57 5}
put {a7.s} arb8 V1 {-171 114 0} V2 {-171 171 0} V3 {-171 171 5} V4 {-171 114 5} V5 {-228 114 0} V6 {-228 171 0} V7 {-228 171 5} V8 {-228 114 5}
put {c6.s} arb8 V1 {-57 57 0} V2 {-57 114 0} V3 {-57 114 5} V4 {-57 57 5} V5 {-114 57 0} V6 {-114 114 0} V7 {-114 114 5} V8 {-114 57 5}
put {e5.s} arb8 V1 {57 0 0} V2 {57 57 0} V3 {57 57 5} V4 {57 0 5} V5 {0 0 0} V6 {0 57 0} V7 {0 57 5} V8 {0 0 5}
put {g4.s} arb8 V1 {171 -57 0} V2 {171 0 0} V3 {171 0 5} V4 {171 -57 5} V5 {114 -57 0} V6 {114 0 0} V7 {114 0 5} V8 {114 -57 5}
put {b6.s} arb8 V1 {-114 57 0} V2 {-114 114 0} V3 {-114 114 5} V4 {-114 57 5} V5 {-171 57 0} V6 {-171 114 0} V7 {-171 114 5} V8 {-171 57 5}
put {d5.s} arb8 V1 {0 0 0} V2 {0 57 0} V3 {0 57 5} V4 {0 0 5} V5 {-57 0 0} V6 {-57 57 0} V7 {-57 57 5} V8 {-57 0 5}
put {f4.s} arb8 V1 {114 -57 0} V2 {114 0 0} V3 {114 0 5} V4 {114 -57 5} V5 {57 -57 0} V6 {57 0 0} V7 {57 0 5} V8 {57 -57 5}
put {h3.s} arb8 V1 {228 -114 0} V2 {228 -57 0} V3 {228 -57 5} V4 {228 -114 5} V5 {171 -114 0} V6 {171 -57 0} V7 {171 -57 5} V8 {171 -114 5}
put {a6.s} arb8 V1 {-171 57 0} V2 {-171 114 0} V3 {-171 114 5} V4 {-171 57 5} V5 {-228 57 0} V6 {-228 114 0} V7 {-228 114 5} V8 {-228 57 5}
put {c5.s} arb8 V1 {-57 0 0} V2 {-57 57 0} V3 {-57 57 5} V4 {-57 0 5} V5 {-114 0 0} V6 {-114 57 0} V7 {-114 57 5} V8 {-114 0 5}
put {e4.s} arb8 V1 {57 -57 0} V2 {57 0 0} V3 {57 0 5} V4 {57 -57 5} V5 {0 -57 0} V6 {0 0 0} V7 {0 0 5} V8 {0 -57 5}
put {g3.s} arb8 V1 {171 -114 0} V2 {171 -57 0} V3 {171 -57 5} V4 {171 -114 5} V5 {114 -114 0} V6 {114 -57 0} V7 {114 -57 5} V8 {114 -114 5}
put {b5.s} arb8 V1 {-114 0 0} V2 {-114 57 0} V3 {-114 57 5} V4 {-114 0 5} V5 {-171 0 0} V6 {-171 57 0} V7 {-171 57 5} V8 {-171 0 5}
put {d4.s} arb8 V1 {0 -57 0} V2 {0 0 0} V3 {0 0 5} V4 {0 -57 5} V5 {-57 -57 0} V6 {-57 0 0} V7 {-57 0 5} V8 {-57 -57 5}
put {f3.s} arb8 V1 {114 -114 0} V2 {114 -57 0} V3 {114 -57 5} V4 {114 -114 5} V5 {57 -114 0} V6 {57 -57 0} V7 {57 -57 5} V8 {57 -114 5}
put {h2.s} arb8 V1 {228 -171 0} V2 {228 -114 0} V3 {228 -114 5} V4 {228 -171 5} V5 {171 -171 0} V6 {171 -114 0} V7 {171 -114 5} V8 {171 -171 5}
put {a5.s} arb8 V1 {-171 0 0} V2 {-171 57 0} V3 {-171 57 5} V4 {-171 0 5} V5 {-228 0 0} V6 {-228 57 0} V7 {-228 57 5} V8 {-228 0 5}
put {c4.s} arb8 V1 {-57 -57 0} V2 {-57 0 0} V3 {-57 0 5} V4 {-57 -57 5} V5 {-114 -57 0} V6 {-114 0 0} V7 {-114 0 5} V8 {-114 -57 5}
put {e3.s} arb8 V1 {57 -114 0} V2 {57 -57 0} V3 {57 -57 5} V4 {57 -114 5} V5 {0 -114 0} V6 {0 -57 0} V7 {0 -57 5} V8 {0 -114 5}
put {g2.s} arb8 V1 {171 -171 0} V2 {171 -114 0} V3 {171 -114 5} V4 {171 -171 5} V5 {114 -171 0} V6 {114 -114 0} V7 {114 -114 5} V8 {114 -171 5}
put {b4.s} arb8 V1 {-114 -57 0} V2 {-114 0 0} V3 {-114 0 5} V4 {-114 -57 5} V5 {-171 -57 0} V6 {-171 0 0} V7 {-171 0 5} V8 {-171 -57 5}
put {d3.s} arb8 V1 {0 -114 0} V2 {0 -57 0} V3 {0 -57 5} V4 {0 -114 5} V5 {-57 -114 0} V6 {-57 -57 0} V7 {-57 -57 5} V8 {-57 -114 5}
put {f2.s} arb8 V1 {114 -171 0} V2 {114 -114 0} V3 {114 -114 5} V4 {114 -171 5} V5 {57 -171 0} V6 {57 -114 0} V7 {57 -114 5} V8 {57 -171 5}
put {h1.s} arb8 V1 {228 -228 0} V2 {228 -171 0} V3 {228 -171 5} V4 {228 -228 5} V5 {171 -228 0} V6 {171 -171 0} V7 {171 -171 5} V8 {171 -228 5}
put {a4.s} arb8 V1 {-171 -57 0} V2 {-171 0 0} V3 {-171 0 5} V4 {-171 -57 5} V5 {-228 -57 0} V6 {-228 0 0} V7 {-228 0 5} V8 {-228 -57 5}
put {c3.s} arb8 V1 {-57 -114 0} V2 {-57 -57 0} V3 {-57 -57 5} V4 {-57 -114 5} V5 {-114 -114 0} V6 {-114 -57 0} V7 {-114 -57 5} V8 {-114 -114 5}
put {e2.s} arb8 V1 {57 -171 0} V2 {57 -114 0} V3 {57 -114 5} V4 {57 -171 5} V5 {0 -171 0} V6 {0 -114 0} V7 {0 -114 5} V8 {0 -171 5}
put {g1.s} arb8 V1 {171 -228 0} V2 {171 -171 0} V3 {171 -171 5} V4 {171 -228 5} V5 {114 -228 0} V6 {114 -171 0} V7 {114 -171 5} V8 {114 -228 5}
put {b3.s} arb8 V1 {-114 -114 0} V2 {-114 -57 0} V3 {-114 -57 5} V4 {-114 -114 5} V5 {-171 -114 0} V6 {-171 -57 0} V7 {-171 -57 5} V8 {-171 -114 5}
put {d2.s} arb8 V1 {0 -171 0} V2 {0 -114 0} V3 {0 -114 5} V4 {0 -171 5} V5 {-57 -171 0} V6 {-57 -114 0} V7 {-57 -114 5} V8 {-57 -171 5}
put {f1.s} arb8 V1 {114 -228 0} V2 {114 -171 0} V3 {114 -171 5} V4 {114 -228 5} V5 {57 -228 0} V6 {57 -171 0} V7 {57 -171 5} V8 {57 -228 5}
put {a3.s} arb8 V1 {-171 -114 0} V2 {-171 -57 0} V3 {-171 -57 5} V4 {-171 -114 5} V5 {-228 -114 0} V6 {-228 -57 0} V7 {-228 -57 5} V8 {-228 -114 5}
put {c2.s} arb8 V1 {-57 -171 0} V2 {-57 -114 0} V3 {-57 -114 5} V4 {-57 -171 5} V5 {-114 -171 0} V6 {-114 -114 0} V7 {-114 -114 5} V8 {-114 -171 5}
put {e1.s} arb8 V1 {57 -228 0} V2 {57 -171 0} V3 {57 -171 5} V4 {57 -228 5} V5 {0 -228 0} V6 {0 -171 0} V7 {0 -171 5} V8 {0 -228 5}
put {b2.s} arb8 V1 {-114 -171 0} V2 {-114 -114 0} V3 {-114 -114 5} V4 {-114 -171 5} V5 {-171 -171 0} V6 {-171 -114 0} V7 {-171 -114 5} V8 {-171 -171 5}
put {d1.s} arb8 V1 {0 -228 0} V2 {0 -171 0} V3 {0 -171 5} V4 {0 -228 5} V5 {-57 -228 0} V6 {-57 -171 0} V7 {-57 -171 5} V8 {-57 -228 5}
put {a2.s} arb8 V1 {-171 -171 0} V2 {-171 -114 0} V3 {-171 -114 5} V4 {-171 -171 5} V5 {-228 -171 0} V6 {-228 -114 0} V7 {-228 -114 5} V8 {-228 -171 5}
put {c1.s} arb8 V1 {-57 -228 0} V2 {-57 -171 0} V3 {-57 -171 5} V4 {-57 -228 5} V5 {-114 -228 0} V6 {-114 -171 0} V7 {-114 -171 5} V8 {-114 -228 5}
put {b1.s} arb8 V1 {-114 -228 0} V2 {-114 -171 0} V3 {-114 -171 5} V4 {-114 -228 5} V5 {-171 -228 0} V6 {-171 -171 0} V7 {-171 -171 5} V8 {-171 -228 5}
put {a1.s} arb8 V1 {-171 -228 0} V2 {-171 -171 0} V3 {-171 -171 5} V4 {-171 -228 5} V5 {-228 -228 0} V6 {-228 -171 0} V7 {-228 -171 5} V8 {-228 -228 5}
put {tiles_light.c} comb region no tree {u {u {u {u {u {l b1.s} {l d1.s}} {u {l f1.s} {l h1.s}}} {u {u {l a2.s} {l c2.s}} {u {l e2.s} {l g2.s}}}} {u {u {u {l b3.s} {l d3.s}} {u {l f3.s} {l h3.s}}} {u {u {l a4.s} {l c4.s}} {u {l e4.s} {l g4.s}}}}} {u {u {u {u {l b5.s} {l d5.s}} {u {l f5.s} {l h5.s}}} {u {u {l a6.s} {l c6.s}} {u {l e6.s} {l g6.s}}}} {u {u {u {l b7.s} {l d7.s}} {u {l f7.s} {l h7.s}}} {u {u {l a8.s} {l c8.s}} {u {l e8.s} {l g8.s}}}}}}
put {b} comb region no tree {l board.g}
-35
View File
@@ -1,35 +0,0 @@
title {King by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {bottomtor.s} tor V {0 0 9} H {6.12323399573676603586882E-17 0 1} r_a 11.78466675885103676080234 r_h 3.825815710827906279689614
put {bottometo.s} eto V {0 0 20} N {0 0 0.06032399549610674427402301} C {2.864077970686895735497046 1.71612229850775266370988 1.889299368274914403542653} r 8.344052226122400384156208 r_d 1.673109642593672896637713
put {crossbase.s} arb8 V1 {-1.399999999999999911182158 -2.100000000000000088817842 98.5} V2 {-1.399999999999999911182158 2.100000000000000088817842 98.5} V3 {1.399999999999999911182158 2.100000000000000088817842 98.5} V4 {1.399999999999999911182158 -2.100000000000000088817842 98.5} V5 {-1.399999999999999911182158 -3 94} V6 {-1.399999999999999911182158 3 94} V7 {1.399999999999999911182158 3 94} V8 {1.399999999999999911182158 -3 94}
put {crossrpp2.s} arb8 V1 {1.399999999999999911182158 -5.5 97.84354270490985072683543} V2 {1.399999999999999911182158 5.5 97.84354270490985072683543} V3 {1.399999999999999911182158 5.5 102.5708639999999007841325} V4 {1.399999999999999911182158 -5.5 102.5708639999999007841325} V5 {-1.399999999999999911182158 -5.5 97.84354270490985072683543} V6 {-1.399999999999999911182158 5.5 97.84354270490985072683543} V7 {-1.399999999999999911182158 5.5 102.5708639999999007841325} V8 {-1.399999999999999911182158 -5.5 102.5708639999999007841325}
put {crossrpp1.s} arb8 V1 {1.399999999999999911182158 -2 93.79999999999999715782906} V2 {1.399999999999999911182158 2 93.79999999999999715782906} V3 {1.399999999999999911182158 2 104.7999999999999971578291} V4 {1.399999999999999911182158 -2 104.7999999999999971578291} V5 {-1.399999999999999911182158 -2 93.79999999999999715782906} V6 {-1.399999999999999911182158 2 93.79999999999999715782906} V7 {-1.399999999999999911182158 2 104.7999999999999971578291} V8 {-1.399999999999999911182158 -2 104.7999999999999971578291}
put {crowncut1.s} eto V {0 0 81.72700899999993850997271} N {0 0 0.6853489141366997383642001} C {7.936978064717960634766314 0.7583105325216803471732874 14.21238543732845016620558} r 19.09763828673395735791019 r_d 8.357084880198749843316364
put {crossrcc2.s} tgc V {0 0 90.50940899999976352319209} H {0 0 3.460360060764851031223088} A {5.74552092081112419919009 0 0} B {0 5.74552092081112419919009 0} C {5.74552092081112419919009 0 0} D {0 5.74552092081112419919009 0}
put {crosscap1.s} arb8 V1 {1.399999999999999911182158 -2 104.7999999999999971578291} V2 {1.399999999999999911182158 2 104.7999999999999971578291} V3 {-1.399999999999999911182158 2 104.7999999999999971578291} V4 {-1.399999999999999911182158 -2 104.7999999999999971578291} V5 {1.399999999999999911182158 0 106.7999999999999971578291} V6 {1.399999999999999911182158 0 106.7999999999999971578291} V7 {-1.399999999999999911182158 0 106.7999999999999971578291} V8 {-1.399999999999999911182158 0 106.7999999999999971578291}
put {crossrcc1.s} tgc V {0 0 92.2746839999997803261067} H {0 0 2.791740440327786565433144} A {4.517371551035873622481631 0 0} B {0 4.517371551035873622481631 0} C {4.517371551035873622481631 0 0} D {0 4.517371551035873622481631 0}
put {crowntop.s} ell V {0 0 89.56678299999987302726367} A {14.0447366829880344596404 0 0} B {0 14.44069976610209771195059 0} C {0 0 3.638257540532901401775234}
put {crownrcc.s} tgc V {0 0 74.52245129853007199471904} H {0 0 15.07198012589280011752635} A {14.92710113237911251360401 0 0} B {0 14.92710113237911251360401 0} C {14.92710113237911251360401 0 0} D {0 14.92710113237911251360401 0}
put {bodytor.s} tor V {0 0 25} H {6.12323399573676603586882E-17 0 1} r_a 9.461224391138355116481762 r_h 0.9710977822416242410952236
put {bodyjut.s} ell V {0 0 63.05140500000015180148694} A {13.30005660511547738167337 0 0} B {0 13.30005660511547738167337 0} C {0 0 3.569547284150617283415841}
put {bodycut.s} tor V {0 0 52.17296999999997808572516} H {6.12323399573676603586882E-17 0 1} r_a 107.7000000000000028421709 r_h 101.8122462061219977158544
put {necktor.s} tor V {0 0 75.48642500000005384208634} H {3.061616997868383634231992E-16 0 1} r_a 8.239894264539179502548905 r_h 0.9722303169289367996697138
put {baseeto.s} eto V {0 0 5} N {-5.470978323999804257192075E-18 0 -0.04467392825269222295103688} C {9.315747832292275987242647 -1.365449293915910411456593 -4.391804451322707691929281} r 10.59850529883725656077331 r_d 4.265499428605880716247611
put {necketo.s} eto V {4.688718984760806702037463E-15 0 73.78394899999960898639983} N {-6.414480946927261832397496E-18 0 -0.05237821183539019542774184} C {-3.419547585807252154666003 2.04895324878489937248105 -2.255716904279041923331306} r 6.983691090436433768218194 r_d 1.738855162288100331124951
put {bottom.c} comb region no tree {u {u {l bottometo.s} {l bottomtor.s}} {u {l baseeto.s} {l base_filler.s}}}
put {cross.c} comb region no tree {u {u {u {l crossbase.s} {l crosscap1.s}} {u {l crossrpp1.s} {l crossrpp2.s}}} {u {l crossrcc1.s} {l crossrcc2.s}}}
put {crown.c} comb region no tree {u {- {l crownrcc.s} {l crowncut1.s}} {- {l crowntop.s} {l crownrcc.s}}}
attr set {crown.c} {inherit} {1}
put {scene.g} comb region no tree {u {l king.r} {l tile.r}}
put {body.s} tgc V {0 0 5.912562917080187219198706} H {0 0 69.67849364592308347710059} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {tile.s} arb8 V1 {28.5 -28.5 0} V2 {28.5 28.5 0} V3 {28.5 28.5 -1} V4 {28.5 -28.5 -1} V5 {-28.5 -28.5 0} V6 {-28.5 28.5 0} V7 {-28.5 28.5 -1} V8 {-28.5 -28.5 -1}
put {king.r} comb region yes tree {l king.c {1 0 0 0 0 1 0 0 0 0 1 0.960356 0 0 0 1}}
attr set {king.r} {region} {R} {shader} {plastic {re 0.1 sp 0.9 di 0.1 sh 50 ex 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/217}
put {tile.r} comb region yes tree {l tile.s}
attr set {tile.r} {region} {R} {shader} {plastic {re 0.5 sh 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
put {body.c} comb region no tree {u {u {- {l body.s} {l bodycut.s}} {l bodytor.s}} {l bodyjut.s}}
put {king.c} comb region no tree {u {u {u {l cross.c} {l neck.c}} {u {l crown.c} {l body.c}}} {l bottom.c}}
put {neck.c} comb region no tree {u {u {l necketo.s} {l necktor.s}} {l neck_filler.s}}
put {base_filler.s} tgc V {0 0 -0.8138631382182293094729175} H {0 0 12.74035922868059600432389} A {16.38855503646686528895771 0 0} B {0 16.38855503646686528895771 0} C {9.863417071382475143082047 0 0} D {0 4.931708535691237571541023 0}
put {neck_filler.s} tgc V {0 0 72.44353981907315187527274} H {0 0 8.98374965637291111875129} A {7.656920043513968821002891 0 0} B {0 7.656920043513968821002891 0} C {7.142477262139500737703202 0 0} D {0 7.142477262139500737703202 0}
-37
View File
@@ -1,37 +0,0 @@
title {Knight by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {nosebridge.s} tgc V {9.352709000000004380126484 -3.525789999999890511617195 80.78344850000023313896236} H {-19.14158212483127030623109 -1.101398557933205700619376E-15 -4.008762911514063843746032E-16} A {3.673940397442060361078391E-16 -5.638155724715451455608672 -2.052120859954011056203171} B {0 -1.636701665453711651565527 4.496800868217849078689596} C {3.673940397442060361078391E-16 -5.638155724715451455608672 -2.052120859954010612113962} D {0 -1.636701665453711651565527 4.496800868217849078689596}
put {bottomtor2.s} tor V {0 0 9.596580000000059840203903} H {6.12323399573676603586882E-17 0 1} r_a 13.70450855072022378067231 r_h 3.825815710827906279689614
put {bottomtor1.s} tor V {0 0 28.10273999999994032350514} H {6.12323399573676603586882E-17 0 1} r_a 12.58196306773280248592073 r_h 1.732851834446541783307794
put {bodysidecutleft.s} tgc V {53.6557214677912170941454 -33.67507614822139316856919 95.69336050000360671674571} H {-20.22449106457484546695014 143.9047313715058749039599 6.169122640972837335375385E-15} A {41.33529643904953587707496 5.809297064214792527536702 -2.55302085840457415599758} B {-6.045441934467547184794967 -0.8496314556149066055112939 -99.81347984218669466827123} C {41.33529643904953587707496 5.809297064214792527536702 -2.55302085840457415599758} D {-6.045441934467546296616547 -0.8496314556149064944889915 -99.81347984218669466827123}
put {headsidecutleft.s} tgc V {22.4313670000000300319698 -28.39713199999998138878254 66.36153450000099951466837} H {6.936023102199139422907592 58.60216329849748717606417 21.47832101088326695048636} A {20.34482858059398324712674 -2.407969144867709410107182 0} B {0.8235739520514423483987798 6.958341187070909761303028 -19.25132668795071921863382} C {20.34482858059398324712674 -2.407969144867709410107182 0} D {0.8235739520514423483987798 6.958341187070909761303028 -19.25132668795071921863382}
put {bottometo.s} eto V {0 0 20} N {0 0 0.06032399549610674427402301} C {2.864077970686895735497046 1.71612229850775266370988 1.889299368274914403542653} r 12.40790665756528099450406 r_d 1.673109642593672896637713
put {bodyrcc2.s} tgc V {1.17739012233862844939333E-14 11.10387200000011453937532 69.77637950000288924456981} H {0 -6.924928138629929286196329 19.02608369223165496464389} A {13.69742765710896037489874 0 0} B {0 12.87137169313410289817057 4.684796170477387278197057} C {13.69742765710896037489874 0 0} D {0 12.87137169313410289817057 4.684796170477387278197057}
put {bodycut.s} tor V {0 0 44.16302899999998743396645} H {6.12323399573676603586882E-17 0 1} r_a 107.6761975244730109579905 r_h 97.57911721751440836669644
put {baseeto.s} eto V {0 0 5} N {-5.470978323999804257192075E-18 0 -0.04467392825269222295103688} C {9.315747832292275987242647 -1.365449293915910411456593 -4.391804451322707691929281} r 12.99673099698723177652937 r_d 4.265499428605880716247611
put {bodyrcc.s} tgc V {1.177390122338628764937692E-14 -5.261487999999998166344994 23.35826750000251195160672} H {0 28.82813499219855302158066 49.9317944939421209937791} A {18.70346099816892859735162 0 0} B {0 16.19767236310574887170333 -9.351730499084462522318972} C {18.70346099816892859735162 0 0} D {0 16.19767236310574887170333 -9.351730499084462522318972}
put {headrcc.s} tgc V {2.364945229490083123615446E-14 -22.43134200000001854391485 70.83590250000071364411269} H {0 21.66504172617712953297087 7.885430312463741486794788} A {8.668888204531146612907833 0 0} B {0 2.96493438618794336036899 -8.146090276215920411573279} C {8.668888204531146612907833 0 0} D {0 2.96493438618794336036899 -8.146090276215920411573279}
put {bodybottomsph.s} ell V {0 0 60.84612300000016915646484} A {33.54831727294207155409822 0 0} B {0 33.54831727294207155409822 0} C {0 0 33.54831727294207155409822}
put {toptor.s} tor V {-1.290968171125081238436545E-14 26.0108720000002442418463 8.970701999999491249582206} H {1 0 0} r_a 65.14638440000000230156729 r_h 16.28659610000000057539182
put {earcut.s} tgc V {6.942508314766508912183652E-14 -13.66162200000000304100922 85.5714520000014005063349} H {0 30.34242292565693688288775 11.04373878045554668858586} A {5 0 0} B {0 2.052120859954011500292381 -5.638155724715449679251833} C {5 0 0} D {0 2.052120859954011500292381 -5.638155724715449679251833}
put {knight.r} comb region yes tree {l knight.c {1 0 0 0 0 1 0 0 0 0 1 0.960356 0 0 0 1}}
attr set {knight.r} {region} {R} {shader} {plastic {re 0.1 sp 0.9 di 0.1 sh 50 ex 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/217}
put {bottom.c} comb region no tree {u {u {u {l bottometo.s} {l bottomtor1.s}} {u {l bottomtor2.s} {l baseeto.s}}} {l base_filler.s}}
put {bodyfrontcutright.s} tgc V {-13.74871600000018645459932 -33.1595789999997947461452 63.90854050000422859056926} H {-41.4843562340515603636959 49.43913057838897628926134 -5.652944372718708048669131E-15} A {-20.4576653316778021007849 -17.16601943455906820190648 -3.9911764866229089143701} B {4.529143121461073562272759 3.800402322767091778388249 -39.56063453447669076012971} C {-20.4576653316778021007849 -17.16601943455906820190648 -3.9911764866229089143701} D {4.529143121461073562272759 3.800402322767091778388249 -39.56063453447669076012971}
put {eararb.s} arb8 V1 {-26.90565549999994132690517 -0.4176225000000420295442893 84.91516750000046442892199} V2 {-26.90565549999994132690517 7.334443121211129401615381 86.28206582524249768084701} V3 {26.30018901632412564595143 7.334443121211129401615381 86.28206582524249768084701} V4 {26.30018901632412564595143 -0.4176225000000420295442893 84.91516750000046442892199} V5 {-26.90565549999994132690517 2.091511985363494030565334 93.35068228383262578518043} V6 {-26.90565549999994132690517 2.091511985363494030565334 93.35068228383262578518043} V7 {26.300189016324097224242 2.091511985363494030565334 93.35068228383262578518043} V8 {26.300189016324097224242 2.091511985363494030565334 93.35068228383262578518043}
put {knight.c} comb region no tree {u {u {l head.c} {l body.c}} {u {l base.c} {l bottom.c}}}
put {mouth.s} arb8 V1 {-14.69511850000539787686193 -22.33384350000072160469244 67.49057449999915547778073} V2 {-14.69511850000507457991716 -22.33384350000071805197877 65.1856549462537060435352} V3 {14.5501529284419532928041 -22.33384350000074292097452 65.18565494625448764054454} V4 {14.55015292844173302455602 -22.3338435000007464736882 67.49057449999935442974675} V5 {-14.69511850000531438809048 -12.88574518707542360118623 69.9097041027158496717675} V6 {-14.69511850000531438809048 -12.88574518707542360118623 69.9097041027158496717675} V7 {14.55015292844241514558234 -12.88574518707783234106046 69.90970410271543755698076} V8 {14.55015292844241514558234 -12.88574518707783234106046 69.90970410271543755698076}
put {bodyfrontcut.s} tgc V {-30.07391999999968135171002 -30.49249499999977786046657 57.49796150000538830227015} H {64.53820143527930497384659 5.398293464965921771651639E-15 1.446468374443825363721499E-15} A {1.653406732298293568477734E-15 -23.38457478442728287859609 13.50109054667402830318679} B {2.449293598294706907385594E-15 -20 -34.64101615137754208717524} C {1.653406732298293568477734E-15 -23.38457478442728287859609 13.50109054667402830318679} D {2.449293598294706907385594E-15 -20 -34.64101615137754208717524}
put {scene.g} comb region no tree {u {l knight.r} {l tile.r}}
put {tile.s} arb8 V1 {28.5 -28.5 0} V2 {28.5 28.5 0} V3 {28.5 28.5 -1} V4 {28.5 -28.5 -1} V5 {-28.5 -28.5 0} V6 {-28.5 28.5 0} V7 {-28.5 28.5 -1} V8 {-28.5 -28.5 -1}
put {tile.r} comb region yes tree {l tile.s}
attr set {tile.r} {region} {R} {shader} {plastic {re 0.5 sh 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
put {base.s} tgc V {0 0 5.912562917080187219198706} H {0 0 23.32946212598685420402944} A {20.43520228184366160917307 0 0} B {0 20.43520228184366160917307 0} C {20.43520228184366160917307 0 0} D {0 20.43520228184366160917307 0}
put {body.c} comb region no tree {u {- {- {- {- {- {n {n {l bodyrcc.s} {l bodybottomsph.s}} {l bodysidesph.s}} {l bodysidecutleft.s}} {l bodysidecutright.s}} {l bodyfrontcutleft.s}} {l bodyfrontcutright.s}} {l bodyfrontcut.s}} {- {- {- {- {- {- {- {- {n {n {l bodyrcc2.s} {l bodysidesph.s}} {l toptor.s}} {l bodysidecutleft.s}} {l bodysidecutright.s}} {l bodyfrontcutleft.s}} {l bodyfrontcutright.s}} {l bodyfrontcut.s}} {l bodysidecutleft.s}} {l bodysidecutright.s}} {l bodyfrontcut.s}}}
put {base.c} comb region no tree {u {u {u {u {l bottomtor1.s} {l bottomtor1.s}} {- {- {l base.s} {l bodycut.s}} {l bottomtor1.s}}} {l bottomtor1.s}} {l bottomtor1.s}}
put {head.c} comb region no tree {u {u {- {- {- {- {- {n {l headrcc.s} {l toptor.s}} {l bodysidecutleft.s}} {l bodysidecutright.s}} {l headsidecutleft.s}} {l headsidecutright.s}} {l mouth.s}} {- {- {- {- {l nosebridge.s} {l bodysidecutleft.s}} {l bodysidecutright.s}} {l headsidecutleft.s}} {l headsidecutright.s}}} {- {- {- {- {- {l eararb.s} {l bodysidecutleft.s}} {l bodysidecutright.s}} {l headsidecutleft.s}} {l headsidecutright.s}} {l earcut.s}}}
put {bodyfrontcutleft.s} tgc V {13.74871600000018645459932 -33.1595789999997947461452 63.90854050000422859056926} H {41.48435623405157457455061 49.43913057838896918383398 -5.65294437271870647094732E-15} A {20.45766533167779854807122 -17.16601943455906820190648 -3.99117648662290935845931} B {-4.529143121461062904131722 3.800402322767092222477459 -39.56063453447669076012971} C {20.45766533167779854807122 -17.16601943455906820190648 -3.99117648662290935845931} D {-4.529143121461062904131722 3.800402322767092222477459 -39.56063453447669076012971}
put {bodysidecutright.s} tgc V {-53.6557214677912170941454 -33.67507614822139316856919 95.69336050000360671674571} H {20.22449106457484901966382 143.9047313715058749039599 6.169122640972837335375385E-15} A {-41.33529643904954298250232 5.809297064214777428503567 -2.553020858404567494659432} B {6.045441934467558731114423 -0.8496314556149066055112939 -99.81347984218669466827123} C {-41.33529643904954298250232 5.809297064214777428503567 -2.553020858404567494659432} D {6.045441934467559619292842 -0.8496314556149064944889915 -99.81347984218669466827123}
put {headsidecutright.s} tgc V {-22.4313670000000300319698 -28.39713199999998138878254 66.36153450000099951466837} H {-6.936023102199119882982359 58.60216329849748717606417 21.47832101088326695048636} A {-20.34482858059398324712674 -2.407969144867712074642441 0} B {-0.8235739520514422373764774 6.958341187070909761303028 -19.2513266879507227713475} C {-20.34482858059398324712674 -2.407969144867712074642441 0} D {-0.8235739520514422373764774 6.958341187070909761303028 -19.2513266879507227713475}
put {bodysidesph.s} ell V {1.591615728102624416351318E-12 -17.12677000000023497250368 59.51325500000131540900838} A {40 0 0} B {0 40 0} C {0 0 57.67733156681060791015625}
put {base_filler.s} tgc V {0 0 -0.8138631382182293094729175} H {0 0 12.74035922868059600432389} A {16.38855503646686528895771 0 0} B {0 16.38855503646686528895771 0} C {9.863417071382475143082047 0 0} D {0 4.931708535691237571541023 0}
-51
View File
@@ -1,51 +0,0 @@
title {Pawn by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {crowninset.s} tgc V {0 0 58} H {0 0 0.5999999999999999777955395} A {16.89118510350817103926602 0 0} B {0 16.89118510350817103926602 0} C {16.89118510350817103926602 0 0} D {0 16.89118510350817103926602 0}
put {crowninner.s} tgc V {0 0 4} H {0 0 6} A {10.16165733953459060501245 0 0} B {0 10.16165733953459060501245 0} C {11.34243115837037585436065 0 0} D {0 11.34243115837037585436065 0}
put {crowninsetsolid.s} tgc V {0 0 58} H {0 0 0.5999999999999999777955395} A {12.45527182860042714196425 0 0} B {0 12.45527182860042714196425 0} C {12.45527182860042714196425 0 0} D {0 12.45527182860042714196425 0}
put {bottomtor.s} tor V {0 0 9} H {6.12323399573676603586882E-17 0 1} r_a 9.486078136436923102792207 r_h 3.825815710827906279689614
put {bottometo.s} eto V {0 0 20} N {0 0 0.05994492135330928977987597} C {2.846080192311732925958268 1.705338238468419920224051 1.877427068825471501156699} r 5.027862554501921543703702 r_d 1.662595872768639404526425
put {1_bodytor.s} tor V {0 0 25} H {6.12323399573676603586882E-17 0 1} r_a 10.44723380101833853927928 r_h 0.9710977822416242410952236
put {1_bodycut.s} tor V {0 0 41} H {6.12323399573676603586882E-17 0 1} r_a 86.63076947877770805916953 r_h 78.38786126059979153524182
put {1_bodyeto.s} eto V {-0.2528320000000000011830537 0 53} N {0 0 0.03930267507158188844407221} C {11.02968444236560330296015 0 11.02968444236560330296015} r 16.28367943394245997978942 r_d 4.327199580192768735287245
put {1_baseeto.s} eto V {0 0 5} N {-5.470978323999804257192075E-18 0 -0.04467392825269222295103688} C {9.315747832292275987242647 -1.365449293915910411456593 -4.391804451322707691929281} r 10.59850529883725656077331 r_d 4.265499428605880716247611
put {1_bodytop.c} comb region no tree {- {l bodytop.s} {l 1_bodyeto.s}}
put {crowncut3.s} arb8 V1 {-13.99038105676657828269072 5.767949192431094829203175 4} V2 {11.9903810567665729536202 -9.232050807568883854514752 4.000000000000001776356839} V3 {11.9903810567665729536202 -9.232050807568883854514752 10.00000000000000355271368} V4 {-13.99038105676657828269072 5.767949192431094829203175 10} V5 {-11.99038105676654808462445 9.232050807568848327377964 4} V6 {13.99038105676657472997704 -5.767949192431118810020507 4.000000000000001776356839} V7 {13.99038105676657472997704 -5.767949192431118810020507 10.00000000000000355271368} V8 {-11.99038105676654808462445 9.232050807568848327377964 10}
put {crowncut2.s} arb8 V1 {-11.99038105676656940090652 -9.232050807568908723510503 3.999999999999998223643161} V2 {13.99038105676658183540439 5.767949192431108151879471 3.99999999999999866773237} V3 {13.99038105676658538811807 5.767949192431077065634781 10.00000000000000355271368} V4 {-11.99038105676654453191077 -9.232050807568926487078897 10} V5 {-13.99038105676658716447491 -5.767949192431157889870974 3.99999999999999866773237} V6 {11.99038105676657472997704 9.232050807568862538232679 3.99999999999999911182158} V7 {11.990381056766564071836 9.232050807568855432805321 10.00000000000000355271368} V8 {-13.99038105676657472997704 -5.767949192431152560800456 10}
put {crowncut1.s} arb8 V1 {1.999999999999999777955395 -14.99999999999999822364316 4} V2 {1.999999999999999777955395 14.99999999999999822364316 4} V3 {1.999999999999999777955395 14.99999999999999822364316 10} V4 {1.999999999999999777955395 -14.99999999999999822364316 10} V5 {-1.999999999999999777955395 -14.99999999999999822364316 4} V6 {-1.999999999999999777955395 14.99999999999999822364316 4} V7 {-1.999999999999999777955395 14.99999999999999822364316 10} V8 {-1.999999999999999777955395 -14.99999999999999822364316 10}
put {crownrcc.s} tgc V {0 0 -2.292185375575158445826673} H {0 0 12.29218537557515844582667} A {14.16165733953459238136929 0 0} B {0 14.16165733953459238136929 0} C {14.16165733953459238136929 0 0} D {0 14.16165733953459238136929 0}
put {1_bottom.c} comb region no tree {u {u {l 1_bottometo.s} {l 1_bottomtor.s}} {u {l 1_baseeto.s} {l 1_base_filler.s}}}
put {bodyjut.s} tgc V {0 0 42} H {0 0 2.264716425774114583191476} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {bodytor.s} tor V {0 0 25.00000000000000355271368} H {6.12323399573676603586882E-17 0 1} r_a 6.146768722816724483948292 r_h 0.8241116028491989320414746
put {bodytop.s} tgc V {0 0 45.57436401080622090375982} H {0 0 10.23282399021384136972301} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {bodycut.s} tor V {0 0 37.96582364986083035773845} H {6.12323399573676603586882E-17 0 1} r_a 67.81451175298326461415854 r_h 63.43019393270687800168162
put {bodyeto.s} eto V {-0.2528320000000000011830537 0 53} N {0 0 0.03930267507158188844407221} C {11.02968444236560330296015 0 11.02968444236560330296015} r 16.28367943394245997978942 r_d 4.327199580192768735287245
put {baseeto.s} eto V {0 0 4.281399000000007504240784} N {-4.792704526346514451144025E-18 0 -0.03913540238445389202182056} C {8.160812227361974535710942 -1.196165406603733272206114 -3.847323061096424634541791} r 9.284537665853610732824563 r_d 3.736676917349199378293179
put {necketo.s} eto V {0 0 40.72638399999996039468897} N {-3.291837815534646033062117E-18 0 -0.02687989563869803977258499} C {4.168219486530275297297976 -0.6109538876782616423355421 -1.965060156692675530365477} r 5.706605353654313539379928 r_d 2.566512146398107763189955
put {bodytop.c} comb region no tree {u {l head.s} {l necketo.s}}
put {1_scene.g} comb region no tree {u {l rook.r {1 0 0 -58 0 1 0 0 0 0 1 0 0 0 0 1}} {l 1_tile.r {1 0 0 -58 0 1 0 0 0 0 1 0 0 0 0 1}}}
put {1_base_filler.s} tgc V {0 0 -0.8138631382182293094729175} H {0 0 12.74035922868059600432389} A {16.38855503646686528895771 0 0} B {0 16.38855503646686528895771 0} C {9.863417071382475143082047 0 0} D {0 4.931708535691237571541023 0}
put {bottom.c} comb region no tree {u {u {l bottometo.s} {l bottomtor.s}} {u {l baseeto.s} {l base_filler.s}}}
put {1_body.s} tgc V {0 0 5.912562917080187219198706} H {0 0 49.90908570176724623479458} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {1_tile.s} arb8 V1 {28.5 -28.5 0} V2 {28.5 28.5 0} V3 {28.5 28.5 -1} V4 {28.5 -28.5 -1} V5 {-28.5 -28.5 0} V6 {-28.5 28.5 0} V7 {-28.5 28.5 -1} V8 {-28.5 -28.5 -1}
put {1_tile.r} comb region yes tree {l 1_tile.s}
attr set {1_tile.r} {region} {R} {color} {255/255/255} {los} {100} {material_id} {1} {region_id} {1000} {shader} {plastic {re 0.5 sh 1}}
put {1_body.c} comb region no tree {u {u {- {l 1_body.s} {l 1_bodycut.s}} {l 1_bodytor.s}} {l bodyjut.s}}
put {crown.c} comb region no tree {u {- {- {- {- {- {l crownrcc.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}} {l crowninner.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowncut1.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowncut2.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowncut3.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowninset.s}} {l crowninsetsolid.s}}
put {scene.g} comb region no tree {u {l pawn.r} {l tile.r}}
put {body.s} tgc V {0 0 -0.6898679999999998146975599} H {0 0 42.85638383046779154028627} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {pawn.r} comb region yes tree {l pawn.c {1 0 0 0 0 1 0 0 0 0 1 0.991685000000004 0 0 0 1}}
attr set {pawn.r} {region} {R} {shader} {plastic {re 0.1 sp 0.9 di 0.1 sh 50 ex 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/217}
put {rook.r} comb region yes tree {l rook.c {1 0 0 0 0 1 0 0 0 0 1 1.090422 0 0 0 1}}
attr set {rook.r} {region} {R} {color} {255/255/217} {los} {100} {material_id} {1} {region_id} {1000} {shader} {plastic {re 0.1 sp 0.9 di 0.1 sh 50 ex 1}}
put {tile.s} arb8 V1 {28.5 -28.5 0} V2 {28.5 28.5 0} V3 {28.5 28.5 -1} V4 {28.5 -28.5 -1} V5 {-28.5 -28.5 0} V6 {-28.5 28.5 0} V7 {-28.5 28.5 -1} V8 {-28.5 -28.5 -1}
put {tile.r} comb region yes tree {l tile.s}
attr set {tile.r} {oshader} {plastic {sh 1}} {region} {R} {shader} {plastic {re 0.5 sh 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
put {body.c} comb region no tree {u {- {l body.s} {l bodycut.s}} {l bodytor.s}}
put {pawn.c} comb region no tree {u {u {l top.c} {l body.c}} {u {l bottom.c} {l bodytop.c}}}
put {rook.c} comb region no tree {u {u {l crown.c} {l 1_body.c}} {u {l 1_bottom.c} {l 1_bodytop.c}}}
put {head.s} ell V {0 0 52.26777799999997853319655} A {10.18854239405582262634198 0 0} B {0 10.18854239405582262634198 0} C {0 0 10.18854239405582262634198}
put {top.c} comb region no tree {u {l head.s} {l necketo.s}}
put {1_bottomtor.s} tor V {0 0 9} H {6.12323399573676603586882E-17 0 1} r_a 11.78466675885103676080234 r_h 3.825815710827906279689614
put {1_bottometo.s} eto V {0 0 20} N {0 0 0.07140720069529053748436098} C {3.390289200472452524337541 2.031421963671408370544214 2.236416504815224470803514} r 9.036682630367613100474955 r_d 1.980506679827312765951319
put {base_filler.s} tgc V {0 0 -0.8138631382182293094729175} H {0 0 12.74035922868059600432389} A {14.57675099872487578522851 0 0} B {0 14.57675099872487578522851 0} C {9.863417071382475143082047 0 0} D {0 4.931708535691237571541023 0}
-44
View File
@@ -1,44 +0,0 @@
title {Queen by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {crown_fill.s} tgc V {0 0 85.4996148325125346900677} H {0 0 3.961725628291488110477303} A {13.92497241322581302824801 0 0} B {0 13.92497241322581302824801 0} C {10.3643310870127276501762 0 0} D {0 10.3643310870127276501762 0}
put {crown_main.c} comb region no tree {u {u {- {- {l crownrcc.s} {l crowncut1.s}} {l crowncut2.s}} {- {- {l crown_fill.s} {l crowncut2.s}} {l crownrcc.s}}} {- {- {- {l crowneto1.s} {l crownrcc.s}} {l crowncut2.s}} {l crown_fill.s}}}
put {bottomtor.s} tor V {0 0 9} H {6.12323399573676603586882E-17 0 1} r_a 11.78466675885103676080234 r_h 3.825815710827906279689614
put {bottometo.s} eto V {0 0 20} N {0 0 0.06032399549610674427402301} C {2.864077970686895735497046 1.71612229850775266370988 1.889299368274914403542653} r 7.93389995193779462567818 r_d 1.673109642593672896637713
put {head_fill.s} tgc V {0 0 67.65223912679090290112072} H {0 0 22.65963591768163354345234} A {5.387125525462328923254063 0 0} B {0 5.387125525462328923254063 0} C {5.200376920059111007788033 0 0} D {0 5.200376920059111007788033 0}
put {crowncut2.s} tgc V {0 0 86.89911600000084490602603} H {0 0 6.858375356511876574927555} A {9.438877285833902064382528 0 0} B {0 9.438877285833902064382528 0} C {15.49844917074207906182437 0 0} D {0 15.49844917074207906182437 0}
put {crowncut1.s} eto V {0 0 77.72700899999993850997271} N {0 0 0.6853489141366997383642001} C {7.936978064717960634766314 0.7583105325216803471732874 14.21238543732845016620558} r 19.09763828673395735791019 r_d 8.357084880198749843316364
put {crowneto1.s} eto V {1.577721810442023610823457E-30 0 87.39109400000032223942981} N {-1.573547818886363209483057E-17 0 -0.04282997677321952190165888} C {-1.665828485074095866025345 -1.27132480626570165682665 -1.898428097677101966667124} r 12.13000000000000078159701 r_d 1.123246664863733368378007
put {crownell8.s} ell V {-13.73660800000212844906855 2.220446049250313080847263E-14 87.68836799997369269021874} A {0 -2.442952198710223399302777 1.005777905178345307186806E-16} B {3.658968546871206317661063 0 3.323573023963026340510396} C {-0.7091037075487675034324297 0 0.7806623003868651267112}
put {crownell7.s} ell V {-9.713248667302867289663482 9.713248667302899264086591 87.68836799997369269021874} A {-1.727428065822585123711974 -1.727428065822585123711974 1.005777905178345307186806E-16} B {2.587281471640917818177741 -2.587281471640917818177741 3.323573023963026340510396} C {-0.5014120401722559350332631 0.5014120401722559350332631 0.7806623003868651267112}
put {crownell6.s} ell V {2.220446049250313080847263E-14 13.73660800000212844906855 87.68836799997369269021874} A {-2.442952198710223399302777 0 1.005777905178345307186806E-16} B {0 -3.658968546871206317661063 3.323573023963026340510396} C {0 0.7091037075487675034324297 0.7806623003868651267112}
put {crownell5.s} ell V {9.713248667302899264086591 9.713248667302867289663482 87.68836799997369269021874} A {-1.727428065822585123711974 1.727428065822585123711974 1.005777905178345307186806E-16} B {-2.587281471640917818177741 -2.587281471640917818177741 3.323573023963026340510396} C {0.5014120401722559350332631 0.5014120401722559350332631 0.7806623003868651267112}
put {crownell4.s} ell V {13.73660800000212844906855 -2.220446049250313080847263E-14 87.68836799997369269021874} A {0 2.442952198710223399302777 1.005777905178345307186806E-16} B {-3.658968546871206317661063 0 3.323573023963026340510396} C {0.7091037075487675034324297 0 0.7806623003868651267112}
put {crownell3.s} ell V {9.713248667302867289663482 -9.713248667302899264086591 87.68836799997369269021874} A {1.727428065822584901667369 1.727428065822584901667369 1.005777905178345307186806E-16} B {-2.587281471640917818177741 2.587281471640917818177741 3.323573023963026340510396} C {0.5014120401722559350332631 -0.5014120401722559350332631 0.7806623003868651267112}
put {crownell2.s} ell V {-2.220446049250313080847263E-14 -13.73660800000212844906855 87.68836799997369269021874} A {2.442952198710222955213567 0 1.005777905178345307186806E-16} B {0 3.658968546871206317661063 3.323573023963026340510396} C {0 -0.7091037075487675034324297 0.7806623003868651267112}
put {crownell1.s} ell V {-9.713248667302899264086591 -9.713248667302867289663482 87.68836799997369269021874} A {1.727428065822584679622764 -1.727428065822584679622764 1.005777905178345307186806E-16} B {2.587281471640917818177741 2.587281471640917818177741 3.323573023963026340510396} C {-0.5014120401722559350332631 -0.5014120401722559350332631 0.7806623003868651267112}
put {crownrcc.s} tgc V {0 0 70.52245129853007199471904} H {0 0 15.07198012589280011752635} A {14.92710113237911251360401 0 0} B {0 14.92710113237911251360401 0} C {14.92710113237911251360401 0 0} D {0 14.92710113237911251360401 0}
put {head_tip.s} ell V {0 0 94.91151499999973850663082} A {3.119016812725599496758377 0 0} B {0 3.119016812725599496758377 0} C {0 0 1.345488882629591875783603}
put {crownell.c} comb region no tree {u {u {u {l crownell1.s} {l crownell2.s}} {u {l crownell3.s} {l crownell4.s}}} {u {u {l crownell5.s} {l crownell6.s}} {u {l crownell7.s} {l crownell8.s}}}}
put {headeto1.s} eto V {0 0 89.57779000000000735326466} N {-5.519803738384860362821316E-18 0 -0.04507261801711288928817822} C {-4.376792271273803436315575 -1.09418866449798435347418 -4.1289869793813673837235} r 4.82069915201276888438997 r_d 2.281365997196153738713065
put {bodytor.s} tor V {0 0 25} H {6.12323399573676603586882E-17 0 1} r_a 9.140689709069368618088447 r_h 0.9710977822416242410952236
put {bodyjut.s} ell V {0 0 57.95812100000001976241037} A {13.30005660511547738167337 0 0} B {0 13.30005660511547738167337 0} C {0 0 3.569547284150617283415841}
put {bodycut.s} tor V {0 0 46.43319499999997646000338} H {6.12323399573676603586882E-17 0 1} r_a 84.47809976324354863663757 r_h 78.38786126059979153524182
put {necktor.s} tor V {0 0 70.41021300000004146113497} H {3.061616997868383634231992E-16 0 1} r_a 8.239894264539179502548905 r_h 0.9722303169289367996697138
put {baseeto.s} eto V {0 0 5} N {-5.470978323999804257192075E-18 0 -0.04467392825269222295103688} C {9.315747832292275987242647 -1.365449293915910411456593 -4.391804451322707691929281} r 10.59850529883725656077331 r_d 4.265499428605880716247611
put {necketo.s} eto V {4.688718984760804335454747E-15 0 67.98440800000000194813765} N {-7.947115565380555332745523E-18 0 -0.06489312323286719474957351} C {-4.236592184243099801221888 2.53851689495714083477651 -2.794683321910145679112247} r 6.747558139033351665148075 r_d 2.154325975943817361724086
put {bottom.c} comb region no tree {u {u {l bottometo.s} {l bottomtor.s}} {u {l baseeto.s} {l base_filler.s}}}
put {queen.r} comb region yes tree {l queen.c {1 0 0 0 0 1 0 0 0 0 1 0.960356 0 0 0 1}}
attr set {queen.r} {region} {R} {shader} {plastic {re 0.1 sp 0.9 di 0.1 sh 50 ex 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/217}
put {crown.c} comb region no tree {- {l crown_main.c} {l crownell.c}}
attr set {crown.c} {inherit} {1}
put {queen.c} comb region no tree {u {u {u {l head.c} {l neck.c}} {u {l crown.c} {l body.c}}} {l bottom.c}}
put {scene.g} comb region no tree {u {l queen.r} {l tile.r}}
put {body.s} tgc V {0 0 5.912562917080187219198706} H {0 0 59.45235824170033822611003} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {tile.s} arb8 V1 {28.5 -28.5 0} V2 {28.5 28.5 0} V3 {28.5 28.5 -1} V4 {28.5 -28.5 -1} V5 {-28.5 -28.5 0} V6 {-28.5 28.5 0} V7 {-28.5 28.5 -1} V8 {-28.5 -28.5 -1}
put {tile.r} comb region yes tree {l tile.s}
attr set {tile.r} {region} {R} {shader} {plastic {re 0.5 sh 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
put {body.c} comb region no tree {u {u {- {l body.s} {l bodycut.s}} {l bodytor.s}} {l bodyjut.s}}
put {neck.c} comb region no tree {u {u {l necketo.s} {l necktor.s}} {l neck_filler.s}}
put {head.c} comb region no tree {u {u {l head_tip.s} {l headeto1.s}} {l head_fill.s}}
put {base_filler.s} tgc V {0 0 -0.8138631382182293094729175} H {0 0 12.74035922868059600432389} A {16.38855503646686528895771 0 0} B {0 16.38855503646686528895771 0} C {9.863417071382475143082047 0 0} D {0 4.931708535691237571541023 0}
put {neck_filler.s} tgc V {5.044847376139677212870351E-16 0.11939600000000516466514 64.39600271525775099235034} H {0 0 13.56002315446382588959295} A {7.491481711620123995487575 0 0} B {0 7.491481711620123995487575 0} C {7.491481711620123995487575 0 0} D {0 7.491481711620123995487575 0}
-30
View File
@@ -1,30 +0,0 @@
title {Rook by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {crowninset.s} tgc V {0 0 58} H {0 0 0.5999999999999999777955395} A {16.89118510350817103926602 0 0} B {0 16.89118510350817103926602 0} C {16.89118510350817103926602 0 0} D {0 16.89118510350817103926602 0}
put {crowninner.s} tgc V {0 0 4} H {0 0 6} A {10.16165733953459060501245 0 0} B {0 10.16165733953459060501245 0} C {11.34243115837037585436065 0 0} D {0 11.34243115837037585436065 0}
put {crowninsetsolid.s} tgc V {0 0 58} H {0 0 0.5999999999999999777955395} A {12.45527182860042714196425 0 0} B {0 12.45527182860042714196425 0} C {12.45527182860042714196425 0 0} D {0 12.45527182860042714196425 0}
put {bottomtor.s} tor V {0 0 9} H {6.12323399573676603586882E-17 0 1} r_a 11.78466675885103676080234 r_h 3.825815710827906279689614
put {bottometo.s} eto V {0 0 20} N {0 0 0.07140720069529053748436098} C {3.390289200472452524337541 2.031421963671408370544214 2.236416504815224470803514} r 9.036682630367613100474955 r_d 1.980506679827312765951319
put {crowncut3.s} arb8 V1 {-13.99038105676657828269072 5.767949192431094829203175 4} V2 {11.9903810567665729536202 -9.232050807568883854514752 4.000000000000001776356839} V3 {11.9903810567665729536202 -9.232050807568883854514752 10.00000000000000355271368} V4 {-13.99038105676657828269072 5.767949192431094829203175 10} V5 {-11.99038105676654808462445 9.232050807568848327377964 4} V6 {13.99038105676657472997704 -5.767949192431118810020507 4.000000000000001776356839} V7 {13.99038105676657472997704 -5.767949192431118810020507 10.00000000000000355271368} V8 {-11.99038105676654808462445 9.232050807568848327377964 10}
put {crowncut2.s} arb8 V1 {-11.99038105676656940090652 -9.232050807568908723510503 3.999999999999998223643161} V2 {13.99038105676658183540439 5.767949192431108151879471 3.99999999999999866773237} V3 {13.99038105676658538811807 5.767949192431077065634781 10.00000000000000355271368} V4 {-11.99038105676654453191077 -9.232050807568926487078897 10} V5 {-13.99038105676658716447491 -5.767949192431157889870974 3.99999999999999866773237} V6 {11.99038105676657472997704 9.232050807568862538232679 3.99999999999999911182158} V7 {11.990381056766564071836 9.232050807568855432805321 10.00000000000000355271368} V8 {-13.99038105676657472997704 -5.767949192431152560800456 10}
put {crowncut1.s} arb8 V1 {1.999999999999999777955395 -14.99999999999999822364316 4} V2 {1.999999999999999777955395 14.99999999999999822364316 4} V3 {1.999999999999999777955395 14.99999999999999822364316 10} V4 {1.999999999999999777955395 -14.99999999999999822364316 10} V5 {-1.999999999999999777955395 -14.99999999999999822364316 4} V6 {-1.999999999999999777955395 14.99999999999999822364316 4} V7 {-1.999999999999999777955395 14.99999999999999822364316 10} V8 {-1.999999999999999777955395 -14.99999999999999822364316 10}
put {crownrcc.s} tgc V {0 0 -2.292185375575158445826673} H {0 0 12.29218537557515844582667} A {14.16165733953459238136929 0 0} B {0 14.16165733953459238136929 0} C {14.16165733953459238136929 0 0} D {0 14.16165733953459238136929 0}
put {bodyjut.s} tgc V {0 0 42} H {0 0 2.264716425774114583191476} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {bodytor.s} tor V {0 0 25} H {6.12323399573676603586882E-17 0 1} r_a 10.44723380101833853927928 r_h 0.9710977822416242410952236
put {bodytop.s} tgc V {0 0 45.57436401080622090375982} H {0 0 10.23282399021384136972301} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {bodycut.s} tor V {0 0 41} H {6.12323399573676603586882E-17 0 1} r_a 86.63076947877770805916953 r_h 78.38786126059979153524182
put {bodyeto.s} eto V {-0.2528320000000000011830537 0 53} N {0 0 0.03930267507158188844407221} C {11.02968444236560330296015 0 11.02968444236560330296015} r 16.28367943394245997978942 r_d 4.327199580192768735287245
put {baseeto.s} eto V {0 0 5} N {-5.470978323999804257192075E-18 0 -0.04467392825269222295103688} C {9.315747832292275987242647 -1.365449293915910411456593 -4.391804451322707691929281} r 10.59850529883725656077331 r_d 4.265499428605880716247611
put {bodytop.c} comb region no tree {- {l bodytop.s} {l bodyeto.s}}
put {bottom.c} comb region no tree {u {u {l bottometo.s} {l bottomtor.s}} {u {l baseeto.s} {l base_filler.s}}}
put {crown.c} comb region no tree {u {- {- {- {- {- {l crownrcc.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}} {l crowninner.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowncut1.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowncut2.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowncut3.s {1 0 0 0 0 1 0 0 0 0 1 58 0 0 0 1}}} {l crowninset.s}} {l crowninsetsolid.s}}
put {scene.g} comb region no tree {u {l rook.r} {l tile.r}}
put {body.s} tgc V {0 0 5.912562917080187219198706} H {0 0 49.90908570176724623479458} A {14.1579783735264754795935 0 0} B {0 14.1579783735264754795935 0} C {14.1579783735264754795935 0 0} D {0 14.1579783735264754795935 0}
put {rook.r} comb region yes tree {l rook.c {1 0 0 0 0 1 0 0 0 0 1 1.090422 0 0 0 1}}
attr set {rook.r} {region} {R} {shader} {plastic {re 0.1 sp 0.9 di 0.1 sh 50 ex 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/217}
put {tile.s} arb8 V1 {28.5 -28.5 0} V2 {28.5 28.5 0} V3 {28.5 28.5 -1} V4 {28.5 -28.5 -1} V5 {-28.5 -28.5 0} V6 {-28.5 28.5 0} V7 {-28.5 28.5 -1} V8 {-28.5 -28.5 -1}
put {tile.r} comb region yes tree {l tile.s}
attr set {tile.r} {oshader} {plastic {sh 1}} {region} {R} {shader} {plastic {re 0.5 sh 1}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
put {body.c} comb region no tree {u {u {- {l body.s} {l bodycut.s}} {l bodytor.s}} {l bodyjut.s}}
put {rook.c} comb region no tree {u {u {l crown.c} {l body.c}} {u {l bottom.c} {l bodytop.c}}}
put {base_filler.s} tgc V {0 0 -0.8138631382182293094729175} H {0 0 12.74035922868059600432389} A {16.38855503646686528895771 0 0} B {0 16.38855503646686528895771 0} C {9.863417071382475143082047 0 0} D {0 4.931708535691237571541023 0}
+28 -3
View File
@@ -2,13 +2,38 @@ set(COMGEOM_V5_MODELS
ADA073408.comgeom
)
macro(ADD_COMGEOM_V5_G_TARGET comgeom_model folder)
string(REGEX REPLACE "([0-9a-z]*).comgeom" "\\1" comgeom_model_root "${comgeom_model}")
set(output_file ${bin_root}/${DATA_DIR}/db/${comgeom_model_root}.g)
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${comgeom_model_root}.log)
add_custom_command(
OUTPUT ${output_file}
COMMAND ${CMAKE_COMMAND} -E remove ${output_file}
COMMAND comgeom-g -v 5 ${CMAKE_CURRENT_SOURCE_DIR}/${comgeom_model} ${output_file} > ${log_file} 2>&1
DEPENDS comgeom-g ${CMAKE_CURRENT_SOURCE_DIR}/${comgeom_model}
)
add_custom_target(${comgeom_model_root}.g ALL DEPENDS ${output_file})
set_target_properties(${comgeom_model_root}.g PROPERTIES FOLDER "${folder}")
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
if(NOT "${CMAKE_CFG_INTDIR}" STREQUAL "." AND CMAKE_CONFIGURATION_FILES)
string(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" output_file "${output_file}")
endif(NOT "${CMAKE_CFG_INTDIR}" STREQUAL "." AND CMAKE_CONFIGURATION_FILES)
install(FILES ${output_file} DESTINATION ${DATA_DIR}/db)
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
set(BUILT_MODELS "${BUILT_MODELS};${output_file}")
set(LOG_FILES "${LOG_FILES};${log_file}")
DISTCLEAN(${log_file})
endmacro(ADD_COMGEOM_V5_G_TARGET comgeom_model folder)
foreach(comgeom_input ${COMGEOM_V5_MODELS})
ADD_G_TARGET(${comgeom_input} "BRL-CAD Geometry Models/Sample")
ADD_COMGEOM_V5_G_TARGET(${comgeom_input} "BRL-CAD Geometry Models/Sample")
endforeach(comgeom_input ${COMGEOM_V5_MODELS})
CMAKEFILES(${COMGEOM_V5_MODELS})
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${BUILT_MODELS}")
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${LOG_FILES}")
CMAKEFILES(
${COMGEOM_V5_MODELS}
CMakeLists.txt
README_ADA073408
ADA073408_inputs.tar.gz
)
+1 -1
View File
@@ -2,7 +2,7 @@
# C U B E . R T
# BRL-CAD
#
# Copyright (c) 2004-2020 United States Government as represented by
# Copyright (c) 2004-2016 United States Government as represented by
# the U.S. Army Research Laboratory.
#
# Redistribution and use in source and binary forms, with or without
+1 -1
View File
@@ -2,7 +2,7 @@
/* D B . P H P
* BRL-CAD
*
* Copyright (c) 2004-2020 United States Government as represented by
* Copyright (c) 2004-2016 United States Government as represented by
* the U.S. Army Research Laboratory.
*
* This library is free software; you can redistribute it and/or
-45
View File
@@ -1,45 +0,0 @@
title {A Die by Jeff Sieu. Made for Google Code-in 2017}
units mm
put {body_outer.r} comb region yes tree {l body_outer.c}
attr set {body_outer.r} {oshader} {plastic} {region} {R} {shader} {plastic {re 0.1 ri 1.4 sh 12}} {region_id} {1000} {material_id} {1} {los} {100} {color} {255/255/255}
put {body_inner.r} comb region yes tree {l body_inner.c}
attr set {body_inner.r} {oshader} {plastic} {region} {R} {shader} {plastic {sp 0.9 di 0.1}} {region_id} {1001} {material_id} {1} {los} {100} {color} {0/0/0}
put {body_outer.c} comb region no tree {- {- {n {l body_rpp.s} {l body_sphere.s}} {l dots.c}} {l body_inner.c}}
put {body_inner.c} comb region no tree {- {n {l body_rpp_inner.s} {l body_sphere_inner.s}} {l dots.c}}
put {cube_edges.c} comb region no tree {u {u {l cube_rcc1.s} {l cube_rcc2.s}} {l cube_rcc3.s}}
put {cube_rcc3.s} tgc V {8 10 8} H {0 -20 0} A {0 0 -2} B {2 0 0} C {0 0 -2} D {2 0 0}
put {cube_rcc2.s} tgc V {8 8 10} H {0 0 -20} A {0 2 0} B {2 0 0} C {0 2 0} D {2 0 0}
put {cube_rcc1.s} tgc V {10 8 8} H {-20 0 0} A {0 0 2} B {0 2 0} C {0 0 2} D {0 2 0}
put {body_rpp_inner.s} arb8 V1 {9.900000000000000355271368 -9.900000000000000355271368 -9.900000000000000355271368} V2 {9.900000000000000355271368 9.899999999999986144416653 -9.900000000000000355271368} V3 {9.900000000000000355271368 9.899999999999986144416653 9.900000000000000355271368} V4 {9.900000000000000355271368 -9.900000000000000355271368 9.900000000000000355271368} V5 {-9.899999999999922195570434 -9.900000000000000355271368 -9.900000000000000355271368} V6 {-9.899999999999922195570434 9.899999999999986144416653 -9.900000000000000355271368} V7 {-9.899999999999922195570434 9.899999999999986144416653 9.900000000000000355271368} V8 {-9.899999999999922195570434 -9.900000000000000355271368 9.900000000000000355271368}
put {body_rpp.s} arb8 V1 {10 -10 -10} V2 {10 9.999999999999985789145285 -10} V3 {10 9.999999999999985789145285 10} V4 {10 -10 10} V5 {-9.999999999999921840299066 -10 -10} V6 {-9.999999999999921840299066 9.999999999999985789145285 -10} V7 {-9.999999999999921840299066 9.999999999999985789145285 10} V8 {-9.999999999999921840299066 -10 10}
put {body_sphere_inner.s} ell V {0 0 0} A {13.4143020316096475141876 0 0} B {0 13.4143020316096475141876 0} C {0 0 13.4143020316096475141876}
put {dots6.c} comb region no tree {u {u {u {l sph61.s} {l sph62.s}} {u {l sph63.s} {l sph64.s}}} {u {l sph65.s} {l sph66.s}}}
put {dots5.c} comb region no tree {u {u {u {l sph51.s} {l sph52.s}} {u {l sph53.s} {l sph54.s}}} {l sph55.s}}
put {dots4.c} comb region no tree {u {u {l sph41.s} {l sph42.s}} {u {l sph43.s} {l sph44.s}}}
put {dots3.c} comb region no tree {u {u {l sph31.s} {l sph32.s}} {l sph33.s}}
put {dots2.c} comb region no tree {u {l sph21.s} {l sph22.s}}
put {dots1.c} comb region no tree {l sph11.s}
put {sph66.s} ell V {5.5 -12 -3.5} A {2.751840000000000063806738 0 0} B {0 2.751840000000000063806738 0} C {0 0 2.751840000000000063806738}
put {sph65.s} ell V {-5.5 -12 -3.49999999999999955591079} A {2.751840000000000063806738 0 0} B {0 2.751840000000000063806738 0} C {0 0 2.751840000000000063806738}
put {sph55.s} ell V {12 4.5 4.5} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph64.s} ell V {-5.5 -12 3.5} A {2.751840000000000063806738 0 0} B {0 2.751840000000000063806738 0} C {0 0 2.751840000000000063806738}
put {sph54.s} ell V {12 -4.5 4.5} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph63.s} ell V {5.5 -12 3.5} A {2.751840000000000063806738 0 0} B {0 2.751840000000000063806738 0} C {0 0 2.751840000000000063806738}
put {sph44.s} ell V {-3.5 -3.5 12} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph53.s} ell V {12 -4.5 -4.5} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph62.s} ell V {0 -12 -3.5} A {2.751840000000000063806738 0 0} B {0 2.751840000000000063806738 0} C {0 0 2.751840000000000063806738}
put {sph43.s} ell V {-3.5 3.5 12} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph52.s} ell V {12 4.5 -4.5} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph61.s} ell V {0 -12 3.50000000000000044408921} A {2.751840000000000063806738 0 0} B {0 2.751840000000000063806738 0} C {0 0 2.751840000000000063806738}
put {sph33.s} ell V {-4.5 -4.5 -12} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph42.s} ell V {3.5 -3.5 12} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph51.s} ell V {12 0 0} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph32.s} ell V {0 0 -12} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph41.s} ell V {3.5 3.5 12} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph22.s} ell V {-11.99999999999999822364316 3.49999999999999911182158 3.49999999999999911182158} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph31.s} ell V {4.5 4.5 -12} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph21.s} ell V {-11.99999999999998934185896 -3.50000000000000088817842 -3.50000000000000088817842} A {2.86650000000000027000624 0 0} B {0 2.86650000000000027000624 0} C {0 0 2.86650000000000027000624}
put {sph11.s} ell V {0 12.5 0} A {2.211859722021807250769143 1.981446994437259911947535 1.852442813782255726096082} B {-1.916905671313780867848209 2.832975207637170811381111 -0.7414338272552269959447813} C {-1.919153255314234307604693 -0.5460030047066275482592346 2.875540210372395932836298}
put {dots.c} comb region no tree {u {u {u {l dots1.c} {l dots2.c}} {u {l dots3.c} {l dots4.c}}} {u {l dots5.c} {l dots6.c}}}
put {die.g} comb region no tree {u {l body_outer.r} {l body_inner.r}}
put {body_sphere.s} ell V {0 0 0} A {13.51430203160964715891623 0 0} B {0 13.51430203160964715891623 0} C {0 0 13.51430203160964715891623}
+27 -4
View File
@@ -3,16 +3,39 @@ set(FAA_SAMPLE_MODELS
Generic_Twin.fg4
)
foreach(faa_input ${FAA_SAMPLE_MODELS})
ADD_G_TARGET(${faa_input} "BRL-CAD Geometry Models/Sample")
endforeach(faa_input ${FAA_SAMPLE_MODELS})
macro(ADD_FAA_G_TARGET faa_model folder)
string(REGEX REPLACE "([0-9a-z]*).fg4" "\\1" faa_model_root "${faa_model}")
set(output_file ${bin_root}/${DATA_DIR}/db/${faa_model_root}.g)
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${faa_model_root}.log)
add_custom_command(
OUTPUT ${output_file}
COMMAND fast4-g ${CMAKE_CURRENT_SOURCE_DIR}/${faa_model} ${output_file} > ${log_file} 2>&1
DEPENDS fast4-g ${CMAKE_CURRENT_SOURCE_DIR}/${faa_model}
)
add_custom_target(${faa_model_root}.g ALL DEPENDS ${output_file})
set_target_properties(${faa_model_root}.g PROPERTIES FOLDER "${folder}")
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
if(NOT "${CMAKE_CFG_INTDIR}" STREQUAL "." AND CMAKE_CONFIGURATION_FILES)
string(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" output_file "${output_file}")
endif(NOT "${CMAKE_CFG_INTDIR}" STREQUAL "." AND CMAKE_CONFIGURATION_FILES)
install(FILES ${output_file} DESTINATION ${DATA_DIR}/db)
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
set(BUILT_MODELS "${BUILT_MODELS};${output_file}")
set(LOG_FILES "${LOG_FILES};${log_file}")
DISTCLEAN(${log_file})
endmacro(ADD_FAA_G_TARGET faa_model folder)
foreach(faa_input ${FAA_SAMPLE_MODELS})
ADD_FAA_G_TARGET(${faa_input} "BRL-CAD Geometry Models/Sample")
endforeach(faa_input ${FAA_SAMPLE_MODELS})
CMAKEFILES(
${FAA_SAMPLE_MODELS}
CMakeLists.txt
README
)
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${BUILT_MODELS}")
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${LOG_FILES}")
# Local Variables:
# tab-width: 8
# mode: cmake
+74319 -208548
View File
File diff suppressed because it is too large Load Diff
-5
View File
@@ -6,8 +6,3 @@ DOT/FAA/AR-04/16
Office of Aviation Research
Washington, D.C. 20591
http://www.tc.faa.gov/its/worldpac/techrpt/AR04-16.pdf
(Note: the Generic Twin images in that report show the model
prior to its most recent updates, which are reflected in the
version included in BRL-CAD.)
+91 -7
View File
@@ -1,21 +1,105 @@
set(NIST_SAMPLE_MODELS
set(NIST_SAMPLE_STEP_MODELS
NIST_MBE_PMI_1.stp
NIST_MBE_PMI_2.stp
NIST_MBE_PMI_3.stp
NIST_MBE_PMI_4.stp
NIST_MBE_PMI_5.stp
NIST_MBE_PMI_6.stp
NIST_MBE_PMI_7-10.3dm
NIST_MBE_PMI_11.stp
)
set(NIST_SAMPLE_3DM_MODELS
NIST_MBE_PMI_7-10.3dm
)
function(ADD_NIST_STEP_TARGET step_model folder)
# Base output file name on input file
string(REGEX REPLACE "([0-9a-z]*).stp" "\\1" step_model_root "${step_model}")
# Define a relative output path - the quirks of CMake require this...
set(output_file ${DATA_DIR}/db/${step_model_root}.g)
# One log file per target
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${step_model_root}.log)
# Define the target
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND step-g -O ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file} ${CMAKE_CURRENT_SOURCE_DIR}/${step_model} > ${log_file} 2>&1
DEPENDS step-g ${CMAKE_CURRENT_SOURCE_DIR}/${step_model}
)
add_custom_target(${step_model_root}.g ALL DEPENDS ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file})
# Assign a target folder for tools like Visual Studio
set_target_properties(${step_model_root}.g PROPERTIES FOLDER "${folder}")
# If we're installing geometry, set up the install rule
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
install(FILES ${CMAKE_CURRENT_BUILD_DIR_INSTALL}/${output_file} DESTINATION ${DATA_DIR}/db)
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
# Cleanup
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file};${log_file}")
DISTCLEAN(${log_file})
endfunction(ADD_NIST_STEP_TARGET step_model folder)
function(ADD_NIST_3DM_TARGET rhino_model folder)
# Base output file name on input file
string(REGEX REPLACE "([0-9a-z]*).3dm" "\\1" rhino_model_root "${rhino_model}")
# Define a relative output path - the quirks of CMake require this...
set(output_file ${DATA_DIR}/db/${rhino_model_root}.g)
# Because we won't know the output directory in the script reliably until run time,
# we append CURRENT_BUILD_DIR as a string to the arguments - it is the script's
# responsibility to handle it correctly at run time.
set(CMD_ARGS "-o" "CURRENT_BUILD_DIR/${output_file}" "${CMAKE_CURRENT_SOURCE_DIR}/${rhino_model}")
# One log file per target - we capture both stdout and stderror here
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${rhino_model_root}.log)
# Use the model name for the script as well, since the output file is specific to this input
set(script_file "${CMAKE_CURRENT_BINARY_DIR}/${rhino_model_root}.cmake")
# We know enough - write the script
generate_cmd_script(3dm-g "${script_file}" OLOG "${log_file}" ELOG "${log_file}" CARGS "${CMD_ARGS}")
# Define the target
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND ${CMAKE_COMMAND} -P "${script_file}"
DEPENDS 3dm-g ${CMAKE_CURRENT_SOURCE_DIR}/${rhino_model}
)
add_custom_target(${rhino_model_root}.g ALL DEPENDS ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file})
# Assign a target folder for tools like Visual Studio
set_target_properties(${rhino_model_root}.g PROPERTIES FOLDER "${folder}")
# If we're installing geometry, set up the install rule
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
install(FILES ${CMAKE_CURRENT_BUILD_DIR_INSTALL}/${output_file} DESTINATION ${DATA_DIR}/db)
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
# Cleanup
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file};${log_file}")
endfunction(ADD_NIST_3DM_TARGET rhino_model folder)
foreach(step_input ${NIST_SAMPLE_STEP_MODELS})
ADD_NIST_STEP_TARGET(${step_input} "BRL-CAD Geometry Models/Sample")
endforeach(step_input ${NIST_SAMPLE_STEP_MODELS})
CMAKEFILES(${NIST_SAMPLE_STEP_MODELS})
foreach(rhino_input ${NIST_SAMPLE_3DM_MODELS})
ADD_NIST_3DM_TARGET(${rhino_input} "BRL-CAD Geometry Models/Sample")
endforeach(rhino_input ${NIST_SAMPLE_3DM_MODELS})
CMAKEFILES(${NIST_SAMPLE_3DM_MODELS})
foreach(im ${NIST_SAMPLE_MODELS})
ADD_G_TARGET(${im} "BRL-CAD Geometry Models/Sample")
endforeach(im ${NIST_SAMPLE_MODELS})
CMAKEFILES(
${NIST_SAMPLE_MODELS}
CMakeLists.txt
README
pdf/1.pdf
pdf/2.pdf
-24
View File
@@ -1,24 +0,0 @@
title {Example rounding methods}
units mm
put {m2cuttop.tor} tor V {0 0 500} H {0 0 1} r_a 250 r_h 50
put {m2bottom.tor} tor V {0 0 -450} H {0 0 1} r_a 200 r_h 50
put {cylinder.rcc} tgc V {0 0 -500} H {0 0 1000} A {250 0 0} B {0 250 0} C {250 0 0} D {0 250 0}
put {fillends.rcc} tgc V {0 0 -550} H {0 0 1100} A {0 -200 0} B {200 0 0} C {0 -200 0} D {200 0 0}
put {filltop.rcc} tgc V {0 0 500} H {0 0 50} A {0 -200 0} B {200 0 0} C {0 -200 0} D {200 0 0}
put {bottom.tor} tor V {0 0 -500} H {0 0 -1} r_a 200 r_h 50
put {cylinder.r} comb region yes tree {l cylinder.rcc}
attr set {cylinder.r} {region} {R} {region_id} {1003} {material_id} {1} {los} {100}
put {m2top.tor} tor V {0 0 450} H {0 0 1} r_a 200 r_h 50
put {m2cutbottom.tor} tor V {0 0 -500} H {0 0 1} r_a 250 r_h 50
put {method3.r} comb region yes tree {l method3}
attr set {method3.r} {region} {R} {region_id} {1000} {material_id} {1} {los} {100}
put {method2.r} comb region yes tree {l method2}
attr set {method2.r} {region} {R} {region_id} {1002} {material_id} {1} {los} {100}
put {method1.r} comb region yes tree {l method1}
attr set {method1.r} {region} {R} {region_id} {1000} {material_id} {1} {los} {100}
put {top.tor} tor V {0 0 500} H {0 0 1} r_a 200 r_h 50
put {method3} comb region no tree {u {u {u {l cylinder.rcc} {l top.tor}} {u {l bottom.tor} {l filltop.rcc}}} {l fillbottom.rcc}}
put {method2} comb region no tree {u {u {- {- {l cylinder.rcc} {l m2cuttop.tor}} {l m2cutbottom.tor}} {l m2top.tor}} {l m2bottom.tor}}
put {method1} comb region no tree {u {u {l cylinder.rcc} {l fillends.rcc}} {u {l top.tor} {l bottom.tor}}}
put {fillbottom.rcc} tgc V {0 0 -550} H {0 0 50} A {0 -200 0} B {200 0 0} C {0 -200 0} D {200 0 0}
put {all.g} comb region no tree {u {u {l method1.r {1 0 0 1000 0 1 0 -1000 0 0 1 0 0 0 0 1}} {l method2.r {1 0 0 1000 0 1 0 0 0 0 1 0 0 0 0 1}}} {u {l method3.r {1 0 0 1000 0 1 0 1000 0 0 1 0 0 0 0 1}} {l cylinder.r}}}
+163 -350
View File
File diff suppressed because it is too large Load Diff
+9 -33
View File
@@ -1,4 +1,10 @@
verbose_add_subdirectory(doc docbook)
if(BRLCAD_EXTRADOCS)
verbose_add_subdirectory(doc docbook)
else(BRLCAD_EXTRADOCS)
include(${CMAKE_CURRENT_SOURCE_DIR}/docbook_files.cmake)
CMAKEFILES_IN_DIR(docbook_files docbook)
endif(BRLCAD_EXTRADOCS)
verbose_add_subdirectory(doc html)
verbose_add_subdirectory(doc legal)
@@ -28,10 +34,9 @@ set(documentation_DATA
TODO.shaded_displays
archer_ack.txt
benchmark.tr
bu_opt_design_notes.txt
brep.txt
BRL-CAD.bib
checklist.txt
code_review.txt
cvs.txt
description.txt
editors.txt
@@ -41,7 +46,6 @@ set(documentation_DATA
irprep.tr
mater.txt
matrix.txt
pre_BRL-CAD.bib
)
ADD_DOC(documentation_DATA ".")
@@ -224,45 +228,17 @@ configure_file(pad_file.xml.in "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" DESTINATION ${DOC_DIR})
CMAKEFILES(
CMakeLists.txt
README.OSCON-2014
STARTERS
STRATEGY
bsd_semaphore_bug.txt
cmake_vars.txt
csv_to_comgeom.txt
docbook_files.cmake
implicit_constraints.txt
lcov.txt
pad_file.xml.in
trunk_hierarchy.org
)
# Generic C/C++ examples
CMAKEFILES(
c_cxx_patterns/01_basic_C/CMakeLists.txt
c_cxx_patterns/01_basic_C/main.c
c_cxx_patterns/01_basic_C/nlib.c
c_cxx_patterns/01_basic_C/nlib.h
c_cxx_patterns/02_hidden_C/CMakeLists.txt
c_cxx_patterns/02_hidden_C/main.c
c_cxx_patterns/02_hidden_C/nlib.c
c_cxx_patterns/02_hidden_C/nlib.h
c_cxx_patterns/03_PImpl_C/CMakeLists.txt
c_cxx_patterns/03_PImpl_C/main.c
c_cxx_patterns/03_PImpl_C/nlib.c
c_cxx_patterns/03_PImpl_C/nlib.h
c_cxx_patterns/04_hidden_CXX/CMakeLists.txt
c_cxx_patterns/04_hidden_CXX/main.c
c_cxx_patterns/04_hidden_CXX/nlib.cxx
c_cxx_patterns/04_hidden_CXX/nlib.h
c_cxx_patterns/05_PImpl_CXX/CMakeLists.txt
c_cxx_patterns/05_PImpl_CXX/main.c
c_cxx_patterns/05_PImpl_CXX/nlib.cxx
c_cxx_patterns/05_PImpl_CXX/nlib.h
c_cxx_patterns/CMakeLists.txt
c_cxx_patterns/README
)
# Local Variables:
# tab-width: 8
# mode: cmake
+6 -7
View File
@@ -92,14 +92,13 @@ generation.
Redhat/Fedora
-------------
Development packages for building on Redhat/Fedora platforms:
Development packages needed to build on Redhat/Fedora platforms:
yum install libX11-devel
yum install libXext-devel # optional
yum install libXi-devel # optional
yum install freetype-devel # optional
yum install fontconfig-devel # optional
yum install mesa-libGL-devel # optional
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:
+4 -44
View File
@@ -8,52 +8,12 @@ Recent versions of both (as of this writing, MSVC 2013 and CMake
Scriptable Install System (NSIS) tool is also required.
In principle, BRL-CAD can be built using CMake and environments like
Cygwin and/or Mingw/Msys, but the latter is largely untested and
infrequently supported. Enhancements or bug reports are welcome.
Cygwin and/or Mingw/Msys, but the is largely untested and infrequently
supported. Enhancements or bug reports are welcome.
Visual Studio
-------------
=== Notes on Windows 10 with latest SDK ===
Because Tk before 8.6.8 cannot be built with the latest Windows SDK
(naming conflicts; see [1]), an earlier one (10.0.15063.0 is the
last working version) is needed (available at [2]).
Targets `tk`, `tkstub` and `libfb` need to be changed to use this SDK
(right click on a target -> Configuration Properties -> General;
select the SDK in Windows SDK Version).
Compilation is then unchanged from the below.
[1]: https://core.tcl.tk/tk/tktview?name=3d34589aa0
[2]: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
===========================================
=== Notes on Visual Studio 14 2015 ===
In order to build this version (required to build the Creo 3 converter)
with CMake, you must ensure that Microsoft's "rc.exe" program is
installed and findable by CMake.
To install "rc.exe", run or re-run the Visual Studio installer and enable
Visual C++ components and "Visual Studio Extensibility Tools Update 1" under
the "Common Tools" section.
The extensibility tools can become unselected by default in some
configurations. Verify "rc.exe" is installed in:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64"
Add that directory to your "Path" user variable so CMake will be able to
locate the rc executable.
See:
https://stackoverflow.com/questions/43847542/rc-exe-no-longer-found-in-vs-2015-command-prompt
======================================
To build with CMake and Visual Studio, the first step is to obtain the
BRL-CAD sources and create a build directory. In principle, it is not
*required* to have a separate build directory, but with Windows and
@@ -89,8 +49,8 @@ example, mged.exe would be in brlcad-svn-trunk\.build\Debug\bin if
brlcad-svn-trunk\.build is the build directory specified to CMake and
CMAKE_BUILD_TYPE was set to Debug.
You may want to produce an NSIS installer. If so, locate a target
named PACKAGE and run it. The end result should be an .exe file
You may want to produce an NSIS installer. If so, locate a target
named PACKAGE and run it. The end result should be an .exe file
capable of installing BRL-CAD.
MINGW (WORK IN PROGRESS - THIS DOES NOT YET WORK!!!)
-24
View File
@@ -278,27 +278,3 @@ BRL-CAD to IGES
* on what is and is not intersecting - perhaps it should? Potential trouble there with overlapping vs. non-
* overlapping regions.
*/
SOLID NURBS RAYTRACING ROBUSTNESS IMPROVEMENT/REFINEMENT
One of the difficult tasks with solid raytracing is determining reliably when we're inside or outside in cases where
BRep edges don't exactly join up geometrically. OpenNURBS has tolerances which define such shapes as "valid", but the
mathematics of the ray interesection will still report wonky results once hit points get inside those tolerance regions.
We have resolution logic that tries to handle ambiguous cases, but one potential technique we are not currently using
would use the bounding box information from the NURBS prep trees to augment that logic's robustness (or, more precisely,
bound the portions of the ray segment within which point ambiguities need to be resolved.)
The current thought is to use the not-on-surface-point bounding box points (which we can categorize as inside or outside
relative to the surface they are bounding by construting vectors from on surface points to those points and comparing
them to the surface normal vectors) and the surface points themselves to construct an outer and inner bounding volume
for the BRep (to be reliable, we would also have to take care that we refine enough to avoid self intersections in
those volumes.) The overall bounding box of the outer volume should always be larger than that of the inner volume,
so a comparison of those would allow us to flip them if the "wrong" box is too big to deal with a BRep with inverted
surface normals. (Might actually also allow us to reliably detect and fix such BReps, but that's a different topic.)
Once we have the outer bounding volume, we intersect that along with the NURBS BRep itself and use the ray segments
from the outer bounding volume as bounding regions within which we resolve any point ambiguities. This should allow
us to "locally" resolve issues in such a way that doesn't accidentally flag (say) a grazing corner hit as the in
hit for a clean hit pair much further down the shotline (which will result in a long "solid" segment through empty
space.)
-161
View File
@@ -1,161 +0,0 @@
The below backtraces were able to catch the infamous "fatal semaphore
acquisition failure" bug on BSD. This is a bit tricky to catch in the act, so
the below backtraces are added here to serve as references. They document both
the gdb backtrace and the trick used to successfully attach to it it (a long
sleep call compiled in to the key failure area prior to the run, allowing us to
get a debugger on the program before it actually vanishes.) This case is most
reliably seen when running make regress in parallel mode - it doesn't usually
trigger when running individual programs interactively, although those do
fail occasionally.
So far this has only been observed on FreeBSD.
Adjustment of the bombing message code reveals that the fatal error is
EPERM - The current thread does not own the mutex.
Maybe relevant (not sure if we have any code that might be using automatic variables after thread_exit(), but the symptoms sound similar...) Only other candidate I'm seeing is memory corruption of some sort...
https://stackoverflow.com/a/7612070
The first failure is from a GQA run:
Architecture set to: x86_64--freebsd11.2.
(lldb) bt
* thread #1, name = 'gqa'
* frame #0: 0x0000000817433f5c libthr.so.3`_umtx_op_err + 12
frame #1: 0x000000081743056a libthr.so.3`join_common(pthread=0x000000081ae18800, thread_return=0x0000000000000000, abstime=0x0000000000000000) at thr_join.c:125
frame #2: 0x0000000814b9b841 libbu.so.20`bu_parallel(func=(libged.so.20`plane_worker at gqa.c:1223), ncpu=16, arg=0x00007fffffffe660) at parallel.c:722
frame #3: 0x0000000800af161c libged.so.20`ged_gqa(gedp=0x000000081ae8d000, argc=11, argv=0x000000081ae1c300) at gqa.c:2449
frame #4: 0x00000000004010c3 gqa`main(argc=12, argv=0x00007fffffffe828) at gqa.c:102
frame #5: 0x0000000000400c05 gqa`_start + 149
(lldb) thread list
Process 56371 stopped
* thread #1: tid = 101853, 0x0000000817433f5c libthr.so.3`_umtx_op_err + 12, name = 'gqa'
thread #2: tid = 100989, 0x000000081792e6da libc.so.7`__sys_nanosleep + 10, name = 'gqa'
(lldb) thread select 2
* thread #2, name = 'gqa'
frame #0: 0x000000081792e6da libc.so.7`__sys_nanosleep + 10
libc.so.7`__sys_nanosleep:
-> 0x81792e6da <+10>: jb 0x8179a05a4 ; .cerror
0x81792e6e0 <+16>: retq
0x81792e6e1: int3
0x81792e6e2: int3
(lldb) bt
* thread #2, name = 'gqa'
* frame #0: 0x000000081792e6da libc.so.7`__sys_nanosleep + 10
frame #1: 0x0000000817428a2c libthr.so.3`__thr_nanosleep(time_to_sleep=<unavailable>, time_remaining=<unavailable>) at thr_syscalls.c:287
frame #2: 0x00000008178b19eb libc.so.7`__sleep(seconds=60000) at sleep.c:62
frame #3: 0x0000000814bb218c libbu.so.20`bu_semaphore_release(i=20) at semaphore.c:272
frame #4: 0x0000000800aebc31 libged.so.20`hit(ap=0x00007fffdd7f9dd8, PartHeadp=0x00007fffdd7f97e8, segs=0x00007fffdd7f98e8) at gqa.c:1093
frame #5: 0x0000000804062b12 librt.so.20`rt_shootray(ap=0x00007fffdd7f9dd8) at shoot.c:1273
frame #6: 0x0000000800aec6cf libged.so.20`plane_worker(cpu=5, ptr=0x00007fffffffe660) at gqa.c:1280
frame #7: 0x0000000814b9bdcb libbu.so.20`parallel_interface_arg(utd=0x000000081afedc80) at parallel.c:428
frame #8: 0x0000000817426026 libthr.so.3`thread_start(curthread=0x000000081ae18800) at thr_create.c:290
(lldb) up
frame #1: 0x0000000817428a2c libthr.so.3`__thr_nanosleep(time_to_sleep=<unavailable>, time_remaining=<unavailable>) at thr_syscalls.c:287
284
285 curthread = _get_curthread();
286 _thr_cancel_enter(curthread);
-> 287 ret = __sys_nanosleep(time_to_sleep, time_remaining);
288 _thr_cancel_leave(curthread, 1);
289
290 return (ret);
(lldb) up
frame #2: 0x00000008178b19eb libc.so.7`__sleep(seconds=60000) at sleep.c:62
59
60 time_to_sleep.tv_sec = seconds;
61 time_to_sleep.tv_nsec = 0;
-> 62 if (((int (*)(const struct timespec *, struct timespec *))
63 __libc_interposing[INTERPOS_nanosleep])(
64 &time_to_sleep, &time_remaining) != -1)
65 return (0);
(lldb) up
frame #3: 0x0000000814bb218c libbu.so.20`bu_semaphore_release(i=20) at semaphore.c:272
269 # if defined(HAVE_PTHREAD_H)
270 if (pthread_mutex_unlock(&bu_semaphores[i].mu)) {
271 fprintf(stderr, "bu_semaphore_acquire(): pthread_mutex_unlock() failed on [%d]\n", i);
-> 272 sleep(60000);
273 bu_bomb("fatal semaphore acquisition failure");
274 }
275 # endif
The second is from an rt raytrace of a bot:
bin/rt".
Architecture set to: x86_64--freebsd11.2.
(lldb) bt
* thread #1, name = 'rt'
* frame #0: 0x0000000800861f5c libthr.so.3`_umtx_op_err + 12
frame #1: 0x000000080085e56a libthr.so.3`join_common(pthread=0x000000081aa3a400, thread_return=0x0000000000000000, abstime=0x0000000000000000) at thr_join.c:125
frame #2: 0x000000081455d841 libbu.so.20`bu_parallel(func=(librt.so.20`_db_walk_dispatcher at db_tree.c:1955), ncpu=16, arg=0x00007fffffffd700) at parallel.c:722
frame #3: 0x00000008032b0f8e librt.so.20`db_walk_tree(dbip=0x000000081a861000, argc=1, argv=0x00007fffffffe888, ncpu=16, init_state=0x00007fffffffd988, reg_start_func=(librt.so.20`_rt_gettree_region_start at tree.c:109), reg_end_func=(librt.so.20`_rt_gettree_region_end at tree.c:146), leaf_func=(librt.so.20`_rt_gettree_leaf at tree.c:444), client_data=0x00007fffffffd978) at db_tree.c:2199
frame #4: 0x00000008036661d7 librt.so.20`rt_gettrees_muves(rtip=0x000000081a8a7000, attrs=0x0000000000000000, argc=1, argv=0x00007fffffffe888, ncpus=16) at tree.c:783
frame #5: 0x0000000803669021 librt.so.20`rt_gettrees_and_attrs(rtip=0x000000081a8a7000, attrs=0x0000000000000000, argc=1, argv=0x00007fffffffe888, ncpus=16) at tree.c:887
frame #6: 0x0000000803669142 librt.so.20`rt_gettrees(rtip=0x000000081a8a7000, argc=1, argv=0x00007fffffffe888, ncpus=16) at tree.c:914
frame #7: 0x0000000000406a00 rt`def_tree(rtip=0x000000081a8a7000) at do.c:575
frame #8: 0x000000000040bd52 rt`main(argc=6, argv=0x00007fffffffe860) at main.c:495
frame #9: 0x00000000004062e5 rt`_start + 149
(lldb) thread list
Process 7726 stopped
* thread #1: tid = 100805, 0x0000000800861f5c libthr.so.3`_umtx_op_err + 12, name = 'rt'
thread #2: tid = 101797, 0x0000000816ec76da libc.so.7`__sys_nanosleep + 10, name = 'rt'
(lldb) thread select 2
* thread #2, name = 'rt'
frame #0: 0x0000000816ec76da libc.so.7`__sys_nanosleep + 10
libc.so.7`__sys_nanosleep:
-> 0x816ec76da <+10>: jb 0x816f395a4 ; .cerror
0x816ec76e0 <+16>: retq
0x816ec76e1: int3
0x816ec76e2: int3
(lldb) bt
* thread #2, name = 'rt'
* frame #0: 0x0000000816ec76da libc.so.7`__sys_nanosleep + 10
frame #1: 0x0000000800856a2c libthr.so.3`__thr_nanosleep(time_to_sleep=<unavailable>, time_remaining=<unavailable>) at thr_syscalls.c:287
frame #2: 0x0000000816e4a9eb libc.so.7`__sleep(seconds=60000) at sleep.c:62
frame #3: 0x000000081457418c libbu.so.20`bu_semaphore_release(i=12) at semaphore.c:272
frame #4: 0x000000080366a193 librt.so.20`_rt_find_identical_solid(mat=0x0000000000000000, dp=0x000000081a8a2e98, rtip=0x000000081a8a7000) at tree.c:425
frame #5: 0x00000008036681e3 librt.so.20`_rt_gettree_leaf(tsp=0x000000081a9fa008, pathp=0x000000081a9fa150, ip=0x00007fffd69eecc0, client_data=0x00007fffffffd978) at tree.c:491
frame #6: 0x00000008032ae1b1 librt.so.20`db_recurse(tsp=0x000000081a9fa008, pathp=0x000000081a9fa150, region_start_statepp=0x00007fffd69eef60, client_data=0x00007fffffffd978) at db_tree.c:1170
frame #7: 0x00000008032b35c9 librt.so.20`_db_walk_subtree(tp=0x000000081a81f200, region_start_statepp=0x00007fffd69eef60, leaf_func=(librt.so.20`_rt_gettree_leaf at tree.c:444), client_data=0x00007fffffffd978, resp=0x000000000062e520) at db_tree.c:1898
frame #8: 0x00000008032b172f librt.so.20`_db_walk_dispatcher(cpu=16, arg=0x00007fffffffd700) at db_tree.c:1992
frame #9: 0x000000081455ddcb libbu.so.20`parallel_interface_arg(utd=0x000000081a9f85e0) at parallel.c:428
frame #10: 0x0000000800854026 libthr.so.3`thread_start(curthread=0x000000081aa3a400) at thr_create.c:290
(lldb) up
frame #1: 0x0000000800856a2c libthr.so.3`__thr_nanosleep(time_to_sleep=<unavailable>, time_remaining=<unavailable>) at thr_syscalls.c:287
284
285 curthread = _get_curthread();
286 _thr_cancel_enter(curthread);
-> 287 ret = __sys_nanosleep(time_to_sleep, time_remaining);
288 _thr_cancel_leave(curthread, 1);
289
290 return (ret);
(lldb) up
frame #2: 0x0000000816e4a9eb libc.so.7`__sleep(seconds=60000) at sleep.c:62
59
60 time_to_sleep.tv_sec = seconds;
61 time_to_sleep.tv_nsec = 0;
-> 62 if (((int (*)(const struct timespec *, struct timespec *))
63 __libc_interposing[INTERPOS_nanosleep])(
64 &time_to_sleep, &time_remaining) != -1)
65 return (0);
(lldb) up
frame #3: 0x000000081457418c libbu.so.20`bu_semaphore_release(i=12) at semaphore.c:272
269 # if defined(HAVE_PTHREAD_H)
270 if (pthread_mutex_unlock(&bu_semaphores[i].mu)) {
271 fprintf(stderr, "bu_semaphore_acquire(): pthread_mutex_unlock() failed on [%d]\n", i);
-> 272 sleep(60000);
273 bu_bomb("fatal semaphore acquisition failure");
274 }
275 # endif
(lldb) up
frame #4: 0x000000080366a193 librt.so.20`_rt_find_identical_solid(mat=0x0000000000000000, dp=0x000000081a8a2e98, rtip=0x000000081a8a7000) at tree.c:425
422 */
423 bu_semaphore_acquire(RT_SEM_STATS);
424 stp->st_bit = rtip->nsolids++;
-> 425 bu_semaphore_release(RT_SEM_STATS);
426
427 /*
428 * Fill in the last little bit of the structure in full parallel
(lldb)
-97
View File
@@ -1,97 +0,0 @@
Thoughts on expansion of bu_opt capability to include subcommands, other misc
notes...
Check over POSIX.1-2008 Utility Conventions - should guide (but not define) our
option handling. (In particular, we want long opts. On the other hand,
probably explicitly don't want the full GNU 'opts anywhere' convention as that
precludes structured subcommand parsing.)
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
* Define separate structure for subcommands, have as an optional pointer in
bu_opt structure.
* Explore + and -+ as opt/longopt specifiers for subcommands, directly mapping to
- and -- for options. Use +- to denote the end of a subcommand, like -- denotes
end of options.
Rule - options with optional arguments (e.g. --help JSON vs --help - both are
legal) will require that arguments needing to start with a "+" character (e.g.
--help "+arg1") be quoted. (For that matter, is the same true of normal "-"
option parsing?)
Can we allow "lazy" subcommand specification without +/-+ if we disqualify any
string in quotes from being a subcommand? (e.g. 'cmd arg1 arg2' treats arg1 as
a subcommand but 'cmd "arg1" arg2' treats arg1 as an arg? Do we need to worry
about this at all?
Can "leftover" operands from a subcommand be handed back up to parent commands?
Convention thoughts:
- or -- - option/long-option handling per POSIX and GNU convention.
+ or -+ - explicit specifier of subcommand.
-- - explicit 'exit option parsing' mode - remainder is operands (per POSIX)
except that a -+ option will indicate another subcommand or a +- will elevate
the parsing environment back to the parent level.
+- "exit subcommand" - returns parsing to the parent level command evaluation
environment: brep -a1 -+plot -p1 +- -o out.pl results in brep handling -o
out.pl, not plot.
Scope of "next arg" other than +- is current command/subcommand: e.g. brep -a1
-+plot -p1 will pass p1 to plot's option handling, not brep's
If subsequent -+ are specified, first check if the current command has the
specified subcommand. If not, return parsing to the parent level to see if it
has the specified subcommand, and so on until a command table claims the
subcommand. Allows for both a subcommand of a subcommand:
brep obj_csg.c -+bool_eval -+plot curve S1_S2
and subsequent subcommands:
brep obj_csg.c -+facetize -+simplify
to be specified without requiring +- unless a command and a subcommand both
have a matching subcommand.
With that feature present, +- is necessary to specify a parent command's version of
the subcommand unambiguously (i.e. requires explicit exiting of subcommand state with
a matching subcommand):
cmd arg1 +c +d -> runs d subcommand defined by c
cmd arg1 +c +- +d -> runs d subcommand defined by cmd
TODOs for bu_opt help routines:
Maybe have help as a default subcommand rather than a default option, to allow for fancy
stuff without bastardizing the help option?
* define a built-in bu_help to support docbook, json, etc. specification which
can be used by commands not wanting to define their own, more complex options.
* need a routine to generate a POSIX compliant one-line description of the
command's syntax
* need built-in help (option or subcommand, maybe both?) that is available for
commands not wanting to define their own help, but can be over-ridden by an
explicit specification of help in the options. We will need some "smart" help
options for JSON, DocBook, etc as well as subcommand listing (--help cmds
maybe?) so a calling script can systematically and automatically generate
documentation for all commands.
* explore the possibility of adding to the help system a generator of some sort
that can produce a JSON structure describing the structure of the commands and
options in such a way that a libbu routine could accept that structure as a
validation template and validate a command line string against it. Would
(potentially) allow for things like smart tab completion, valid/invalid syntax
highlighting, etc. without having to either explicitly duplicate the command
syntax in code or back such validation logic into each command. With this
setup we would run the "generate syntax" help option for every command/subcommand
in all of BRL-CAD (which just coincidentally would make the function of the
help system for every command in the code a build time requirement/check)
and supply a pre-built validation database in a data_dir location for libbu
to check.
@@ -1,12 +0,0 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library(nlib01 SHARED nlib.c)
add_executable(ntest01 main.c)
target_link_libraries(ntest01 nlib01)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-29
View File
@@ -1,29 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include "nlib.h"
int main(int argc, const char **argv) {
int i = 0;
int n_attempts = 10000;
struct nc c;
c.num_cnt = 0;
c.numbers = NULL;
for (i = 0; i < n_attempts; i++) {
add_number(&c, rand() % 10001);
}
printf("Tried %d numbers\n", n_attempts);
printf("Added %d unique numbers\n", c.num_cnt);
free(c.numbers);
return 0;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-26
View File
@@ -1,26 +0,0 @@
#include <malloc.h>
#include "nlib.h"
void
add_number(struct nc *n, int num)
{
int i = 0;
if (!n) return;
for (i = 0; i < n->num_cnt; i++) {
if (n->numbers[i] == num) return;
}
n->num_cnt++;
n->numbers = realloc(n->numbers, n->num_cnt * sizeof(int));
n->numbers[n->num_cnt - 1] = num;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-17
View File
@@ -1,17 +0,0 @@
struct nc {
int num_cnt;
int *numbers;
};
void add_number(struct nc *n, int num);
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
@@ -1,12 +0,0 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library(nlib02 SHARED nlib.c)
add_executable(ntest02 main.c)
target_link_libraries(ntest02 nlib02)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-28
View File
@@ -1,28 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include "nlib.h"
int main(int argc, const char **argv) {
int i = 0;
int n_attempts = 10000;
struct nc *c;
if (nc_create(&c)) return -1;
for (i = 0; i < n_attempts; i++) {
add_number(c, rand() % 10001);
}
printf("Tried %d numbers\n", n_attempts);
tally(c);
nc_destroy(c);
return 0;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-56
View File
@@ -1,56 +0,0 @@
#include <malloc.h>
#include "nlib.h"
struct nc {
int num_cnt;
int *numbers;
};
int
nc_create(struct nc **n)
{
if (!n) return -1;
(*n) = malloc(sizeof(struct nc));
if (!*n) return -1;
(*n)->num_cnt = 0;
(*n)->numbers = NULL;
return 0;
}
void
nc_destroy(struct nc *n)
{
if (!n) return;
if (n && n->numbers) free(n->numbers);
free(n);
}
void
add_number(struct nc *n, int num)
{
int i = 0;
if (!n) return;
for (i = 0; i < n->num_cnt; i++) {
if (n->numbers[i] == num) return;
}
n->num_cnt++;
n->numbers = realloc(n->numbers, n->num_cnt * sizeof(int));
n->numbers[n->num_cnt - 1] = num;
}
void
tally(struct nc *n){
if (!n) return;
printf("Added %d unique numbers\n", n->num_cnt);
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-18
View File
@@ -1,18 +0,0 @@
struct nc;
int nc_create(struct nc **n);
void nc_destroy(struct nc *n);
void add_number(struct nc *n, int num);
void tally(struct nc *n);
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
@@ -1,12 +0,0 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library(nlib03 SHARED nlib.c)
add_executable(ntest03 main.c)
target_link_libraries(ntest03 nlib03)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-46
View File
@@ -1,46 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include "nlib.h"
int main(int argc, const char **argv) {
int i = 0;
int n_attempts = 10000;
/* Example on stack */
{
struct nc c1;
nc_init(&c1);
for (i = 0; i < n_attempts; i++) {
add_number(&c1, rand() % 10001);
}
printf("Stack: Tried %d numbers\n", n_attempts);
tally(&c1);
nc_clear(&c1);
}
/* Example explicitly allocated */
{
struct nc *c2;
if (nc_create(&c2)) return -1;
for (i = 0; i < n_attempts; i++) {
add_number(c2, rand() % 10001);
}
printf("Allocated: Tried %d numbers\n", n_attempts);
tally(c2);
nc_destroy(c2);
}
return 0;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-73
View File
@@ -1,73 +0,0 @@
#include <malloc.h>
#include "nlib.h"
struct nc_impl {
int num_cnt;
int *numbers;
};
int
nc_init(struct nc *n)
{
if (!n) return -1;
n->i = malloc(sizeof(struct nc_impl));
if (!n->i) return -1;
n->i->num_cnt = 0;
n->i->numbers = NULL;
return 0;
}
void
nc_clear(struct nc *n)
{
if (!n) return;
if (n->i && n->i->numbers) free(n->i->numbers);
if (n->i) free(n->i);
}
int
nc_create(struct nc **n)
{
if (!n) return -1;
(*n) = malloc(sizeof(struct nc));
if (!*n) return -1;
return nc_init(*n);
}
void
nc_destroy(struct nc *n)
{
if (!n) return;
nc_clear(n);
free(n);
}
void
add_number(struct nc *n, int num)
{
int i = 0;
if (!n) return;
for (i = 0; i < n->i->num_cnt; i++) {
if (n->i->numbers[i] == num) return;
}
n->i->num_cnt++;
n->i->numbers = realloc(n->i->numbers, n->i->num_cnt * sizeof(int));
n->i->numbers[n->i->num_cnt - 1] = num;
}
void
tally(struct nc *n){
if (!n || !n->i) return;
printf("Added %d unique numbers\n", n->i->num_cnt);
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-24
View File
@@ -1,24 +0,0 @@
struct nc_impl;
struct nc {
struct nc_impl *i;
};
int nc_create(struct nc **n);
void nc_destroy(struct nc *n);
int nc_init(struct nc *n);
void nc_clear(struct nc *n);
void add_number(struct nc *n, int num);
void tally(struct nc *n);
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
@@ -1,12 +0,0 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library(nlib04 SHARED nlib.cxx)
add_executable(ntest04 main.c)
target_link_libraries(ntest04 nlib04)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-28
View File
@@ -1,28 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include "nlib.h"
int main(int argc, const char **argv) {
int i = 0;
int n_attempts = 10000;
struct nc *c;
if (nc_create(&c)) return -1;
for (i = 0; i < n_attempts; i++) {
add_number(c, rand() % 10001);
}
printf("Tried %d numbers\n", n_attempts);
tally(c);
nc_destroy(c);
return 0;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-45
View File
@@ -1,45 +0,0 @@
#include <iostream>
#include <set>
#include "nlib.h"
struct nc {
std::set<int> numbers;
};
int
nc_create(struct nc **n)
{
if (!n) return -1;
(*n) = new nc;
return (!*n) ? -1 : 0;
}
void
nc_destroy(struct nc *n)
{
if (!n) return;
delete n;
}
void
add_number(struct nc *n, int num)
{
if (!n) return;
n->numbers.insert(num);
}
void
tally(struct nc *n){
std::cout << "Added " << n->numbers.size() << " unique numbers" << std::endl;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-26
View File
@@ -1,26 +0,0 @@
#if defined(__cplusplus)
extern "C" {
#endif
struct nc;
int nc_create(struct nc **n);
void nc_destroy(struct nc *n);
void add_number(struct nc *n, int num);
void tally(struct nc *n);
#if defined(__cplusplus)
}
#endif
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
@@ -1,12 +0,0 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library(nlib05 SHARED nlib.cxx)
add_executable(ntest05 main.c)
target_link_libraries(ntest05 nlib05)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-46
View File
@@ -1,46 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include "nlib.h"
int main(int argc, const char **argv) {
int i = 0;
int n_attempts = 10000;
/* Example on stack */
{
struct nc c1;
nc_init(&c1);
for (i = 0; i < n_attempts; i++) {
add_number(&c1, rand() % 10001);
}
printf("Stack: Tried %d numbers\n", n_attempts);
tally(&c1);
nc_clear(&c1);
}
/* Example explicitly allocated */
{
struct nc *c2;
if (nc_create(&c2)) return -1;
for (i = 0; i < n_attempts; i++) {
add_number(c2, rand() % 10001);
}
printf("Allocated: Tried %d numbers\n", n_attempts);
tally(c2);
nc_destroy(c2);
}
return 0;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-63
View File
@@ -1,63 +0,0 @@
#include <iostream>
#include <set>
#include "nlib.h"
struct nc_impl {
std::set<int> numbers;
};
int
nc_init(struct nc *n)
{
if (!n) return -1;
n->i = new nc_impl;
return (!n->i) ? -1 : 0;
}
void
nc_clear(struct nc *n)
{
if (!n) return;
n->i->numbers.clear();
delete n->i;
}
int
nc_create(struct nc **n)
{
if (!n) return -1;
(*n) = new nc;
return nc_init(*n);
}
void
nc_destroy(struct nc *n)
{
if (!n) return;
nc_clear(n);
delete n;
}
void
add_number(struct nc *n, int num)
{
if (!n || !n->i) return;
n->i->numbers.insert(num);
}
void
tally(struct nc *n){
if (!n || !n->i) return;
std::cout << "Added " << n->i->numbers.size() << " unique numbers" << std::endl;
}
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-32
View File
@@ -1,32 +0,0 @@
#if defined(__cplusplus)
extern "C" {
#endif
struct nc_impl;
struct nc {
struct nc_impl *i;
};
int nc_create(struct nc **n);
void nc_destroy(struct nc *n);
int nc_init(struct nc *n);
void nc_clear(struct nc *n);
void add_number(struct nc *n, int num);
void tally(struct nc *n);
#if defined(__cplusplus)
}
#endif
/*
* Local Variables:
* mode: C
* tab-width: 8
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
-37
View File
@@ -1,37 +0,0 @@
cmake_minimum_required(VERSION 3.1.3)
project(EXAMPLES)
if(NOT MSVC)
add_definitions(-g)
add_definitions(-Wall)
endif(NOT MSVC)
# Example 1 - basic C implementation
add_subdirectory(01_basic_C)
# Example 2 - information hiding C implementation
add_subdirectory(02_hidden_C)
# Example 3 - PImpl C implementation
add_subdirectory(03_PImpl_C)
# Example 4 - information hiding CXX implementation
add_subdirectory(04_hidden_CXX)
# Example 5 - PImpl CXX implementation
add_subdirectory(05_PImpl_CXX)
include(CTest)
enable_testing()
add_test(01_basic_C 01_basic_C/ntest01)
add_test(02_hidden_C 02_hidden_C/ntest02)
add_test(03_PImpl_C 03_PImpl_C/ntest03)
add_test(04_hidden_CXX 04_hidden_CXX/ntest04)
add_test(05_PImpl_CXX 05_PImpl_CXX/ntest05)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-22
View File
@@ -1,22 +0,0 @@
BRL-CAD has long followed a pattern of library interface design that exposes
Application Programming Interfaces (APIs) using the C programming language.
The universality and relative simplicity of working with C libraries makes that
language an appealing one to standardize on when defining externally visible
interfaces.
However, modern trends in language development and compiler implementation have
concentrated many interesting new features in the C++ language. That means
coders designing and implementing BRL-CAD libraries need to be aware of how and
when to "hide" implementation details (and when not to) and what the potential
pitfalls are of various approaches. The Pointer to Implementation (or "PImpl")
pattern is the preferred pattern for BRL-CAD, except in cases where using it
has significant negative performance implications.
The examples implement various approaches to a simple unique number set
construction problem to illustrate various approaches and why the PImpl pattern
is preferred for BRL-CAD's code base. The overall paradigm is a calling
application that uses routines from a library to do the work (not necessary for
such a simple problem, but illustrative of how larger problems are approached.)
The examples work from a very basic exposed C structure up to a PImpl
implementation using C++ under the hood.
-77
View File
@@ -1,77 +0,0 @@
BRL-CAD Code Review Checklist
=============================
Included below is a list of criteria used when reviewing code changes.
While not comprehensive, it's a good checklist for new contributors to
evaluate against their changes prior to submission. The checklist is
part of common criteria used for core development and peer review.
The answer to all questions should be "yes".
Legal
-----
00. Are all changes under legally compatible license? No GPL, no NC.
01. Are all contributors documented? AUTHORS if new.
02. Do all new files have correct license header, copyright line, year?
Organization
------------
03. Are changes in an appropriate location with similar/related logic?
04. Do all new files have a consistent name? c/cpp/h extension.
05. Do the changes NOT introduce a cyclic dependency?
Style
-----
06. Does the file have the right style footer?
07. Is the code indented consistently? 4 char per level, 8 char tabs.
08. Is whitespace correct (no EOL spaces, internal tabs, or space around ops)?
09. Are braces consistent with existing code? Typically BSD KNF / K&R style.
Documentation
-------------
10. Publicly visible changes / features are documented? NEWS entry.
11. Does referencing documentation reflect interface changes? Check manpages.
12. Are new public symbols documented? Doxygen comment in include/ dir.
13. Are changed public symbols documented? CHANGES entry, DEPRECATED comment.
14. Is all dead or conditional debugging code documented? Comment or remove.
15. Are new numeric constants documented? Comment or eliminate.
Declaration
-----------
16. Do changed files include and only include headers in use by that file?
17. Are new public symbols named consistently? Prefixed according to library.
18. Are new private symbols NOT prefixed like they're public?
19. Are new functions NOT referenced in other files marked static?
20. Are new global variables avoided? No new ones allowed in libraries.
Definition
----------
21. Do changes avoid platform/compiler-specific constructs? libbu exempt.
22. Do new structures / classes have static size? No preprocessor toggles.
23. Do changes avoid exact floating point math? Use NEAR_EQUAL, see vmath.h
24. Do changes use wrapped system functions? See libbu API and HACKING.
25. Do changes avoid duplication, or refactor accordingly to shared code?
Compilation
-----------
26. Does the code compile without warnings? All enabled.
27. Reasonable to think changes will trivially compile on all major platforms?
Testing
-------
28. Are any new inputs checked, sanitized?
29. For changes fixing a recurrant bug, is there an accompanying test?
30. Does performance testing pass and NOT decrease? No slow downs.
31. Do all regression tests pass? No new failures.
The following guidelines are also desirable ideals, but not as
strictly measurable:
** should minimize new public API, less is more
** should leverage standard libraries and standards, C++11 in particular
** should leverage demonstrably robust 3rd-party dependencies
** should resist new 3rd-party dependencies with duplicate functionality
** should keep code robust to different configurations and change
** should resist or eliminate changes not taken to some useful completion
** should prefer simple over complex or clever, except that which has merit
-99
View File
@@ -1,99 +0,0 @@
# This is a worksheet to help with organizing our CMake options with
# an eye towards consistency, clarity, and simplification.
#
# TODO:
# * consistent naming convention
# * eliminate aliases
# * drop unnecessary/unhelpful/obsolete flags
# * audit what ccmake presents by default
#
### HOW TO COMPILE ###
CMAKE_BUILD_TYPE := Release | Debug
BRLCAD_ENABLE_VERBOSE_PROGRESS "verbose output" OFF
BRLCAD_ENABLE_COVERAGE "Build with coverage enabled" OFF
ENABLE_ALL_CXX_COMPILE "Build all C and C++ files with a C++ compiler." OFF
ENABLE_ALL_CXX
ENABLE_POSIX_COMPLIANCE
ENABLE_POSIX
BRLCAD_ENABLE_PROFILING
BRLCAD_ENABLE_DTRACE "Build with dtrace support" OFF
BRLCAD_ENABLE_SMP "Enable SMP architecture parallel computation support" ON
BRLCAD_ENABLE_RUNTIME_DEBUG
ENABLE_RUNTIME_DEBUG
ENABLE_RUN_TIME_DEBUG
ENABLE_RUNTIME_DEBUGGING
ENABLE_RUN_TIME_DEBUGGING
BRLCAD_FLAGS_DEBUG
ENABLE_DEBUG
ENABLE_FLAGS_DEBUG
ENABLE_DEBUG_FLAGS
BRLCAD_ENABLE_COMPILER_WARNINGS
ENABLE_WARNINGS
ENABLE_COMPILER_WARNINGS
BRLCAD_ENABLE_STRICT
ENABLE_STRICT
ENABLE_STRICT_COMPILE
ENABLE_STRICT_COMPILE_FLAGS
ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE "Build with strict ISO C compliance checking. Defaults to OFF." OFF
### WHAT TO COMPILE ###
BRLCAD_ENABLE_MINIMAL "Skip GUI support and docs. Faster builds." OFF
BUILD_SHARED_LIBS "Build shared libraries" ON
BUILD_STATIC_LIBS "Build static libraries" ON
BRLCAD_ENABLE_BRLCAD_LIBRARY "Build the brlcad.dll" OFF
BRLCAD_BUNDLED_LIBS := AUTO | BUNDLED | SYSTEM
ENABLE_ALL
BRLCAD_ENABLE_AQUA "Use Aqua instead of X11 whenever possible on OSX." OFF
BRLCAD_ENABLE_X11 "Use X11." OFF
BRLCAD_ENABLE_TK "Enable features requiring the Tk toolkit" ON
BRLCAD_ENABLE_OPENGL "Enable support for OpenGL based Display Managers in BRL-CAD." ON
OFF "Disabled - NOT BRLCAD_ENABLE_X11 and NOT BRLCAD_ENABLE_AQUA"
ENABLE_OPENGL
BRLCAD_ENABLE_QT "Enable features requiring Qt" OFF
BRLCAD_ENABLE_OSG "Enable features requiring OpenSceneGraph" OFF
BRLCAD_ENABLE_RTGL "Enable experimental RTGL code." OFF
BRLCAD_ENABLE_BULLET "Enable features requiring the Bullet Physics Library" ON
BRLCAD_ENABLE_GCT "Enable features requiring GCT" ON
BRLCAD_ENABLE_GDAL "Enable features requiring the Geospatial Data Abstraction Library" ON
BRLCAD_ENABLE_SPR "Enable features requiring Screened Poisson Surface Reconstruction" OFF
BRLCAD_ENABLE_BINARY_ATTRIBUTES "Enable support for binary attributes" OFF
BRLCAD_ENABLE_OPENCL "Enable features requiring OpenCL" OFF
BRLCAD_EXTRADOCS
ENABLE_DOCS
ENABLE_EXTRA_DOCS
ENABLE_DOCBOOK
BRLCAD_EXTRADOCS_VALIDATE "Perform validation for DocBook documentation" ON
BRLCAD_EXTRADOCS_HTML "Build MAN page output from DocBook documentation" ON
BRLCAD_EXTRADOCS_PHP "Build MAN page output from DocBook documentation" OFF
BRLCAD_EXTRADOCS_PPT "Build MAN page output from DocBook documentation" ON
BRLCAD_EXTRADOCS_MAN "Build MAN page output from DocBook documentation" ON
BRLCAD_EXTRADOCS_PDF "Build PDF output from DocBook documentation" OFF
BRLCAD_ENABLE_TARGETS "controls all DocBook based documentation. Keys off what target level is enabled."
EXTRADOCS_DEFAULT is ON when <= 2 ; OFF when > 2
### HOW TO INSTALL ###
BRLCAD_ENABLE_WIX
BRLCAD_INSTALL_EXAMPLE_GEOMETRY "Install the example BRL-CAD geometry files." ON
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
+48
View File
@@ -0,0 +1,48 @@
BRL-CAD Code Review
===================
...what to look for during a review...
Legal:
* proper copyright statement and compatible license?
* any indication contribution disagrees with copyright assignment?
* if incorporating 3rd party code, prefer bsd/mit-style options
Architecture:
* proper location in hierarchy?
* proper file name(s)?
* is a dependency being introduced?
* is a cyclic dependency being introduced?
* are any global variables being introduced?
Design:
* is public API minimized?
* is a platform symbol being used?
* does the change reduce or violate modularity?
* is the approach being taken reasonable?
* is the code easy to understand?
Testing:
* compiles cleanly?
* are warnings handled cleanly?
* any blatant logic errors?
* are all data inputs checked properly, sanitized?
* if fixing a bug more than once, is there a test?
* is a unit test warranted?
* are there major robustness issues?
Documentation:
* if publicly visible, is NEWS updated?
* if public API changed, is CHANGES updated?
* if public API introduced, does every symbol have a comment?
* if interface changed, are man page or other docs updated?
* are numeric constants documented?
* is suspicious, complex, risky code commented?
Code:
* conforms with style and coding standards?
* proper indentation, formatting, whitespace?
* are symbol names consistent?
* is duplication being introduced, refactoring warranted?
* is there undocumented dead / commented-out code?
* can any code be replaced with library calls?
-24
View File
@@ -15,8 +15,6 @@ TABLE OF CONTENTS
Project Name
Internet Resources
Keywords & Categories
Mission
Community Overview
Terse Description (70 characters or less)
Short Description (255 characters or less)
Brief Description (512 characters or less)
@@ -117,28 +115,6 @@ interface bindings to a subset of the provided ray-trace and geometry
representation facilities. Includes a PHP geometry server interface.
MISSION
-------
BRL-CAD's open source development is persistently and passionately
obsessed with implementing a robust, powerful, flexible, and
comprehensive solid modeling system that provides faithful
high-performance geometric representation, efficient and intuitive
geometry editing, conversion support for all common solid geometry
formats, and geometric analysis tools for 3D computer-aided design
(CAD).
COMMUNITY OVERVIEW
------------------
BRL-CAD is developed by a collective of open source contributors all
around the world. Over the project's lifetime, there have been more
than 65 direct committing contributors to BRL-CAD and many more
indirect contributors and supporters. BRL-CAD has been an open source
project since 2004 expanding and accelerating development ever since.
TERSE DESCRIPTION (70-char)
-----------------
-1
View File
@@ -54,7 +54,6 @@ add_subdirectory(system)
CMAKEFILES(README fop.xconf.in log4j.properties)
CMAKEFILES(README.DB_authors_notes)
CMAKEFILES(css/brlcad.css)
CMAKEFILES(CMakeLists.txt)
# Local Variables:
# tab-width: 8
+1 -157
View File
@@ -23,167 +23,11 @@ set(XSL_PHP_STYLESHEET "${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/wordpres
set(XSL_HTML_STYLESHEET "${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-xhtml-stylesheet.xsl")
set(XSL_FO_STYLESHEET "${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-fo-stylesheet.xsl")
set(articles_EN
TEMPLATE.xml
about.xml
build_pattern.xml
build_region.xml
camo_shader.xml
ebm_primitive.xml
gcv.xml
ged.xml
mgedrc.xml
nirt.xml
oed.xml
pipes.xml
projection_shader.xml
tire.xml
mged.xml
main_menu.xml
overlap_tool.xml
)
set(articles_EN_IMAGES
images/Lee_tux.gif
images/build_pattern_fig01.png
images/build_pattern_fig02.png
images/build_pattern_fig03.png
images/build_pattern_fig04.png
images/build_pattern_fig05.png
images/build_pattern_fig06.png
images/build_pattern_fig07.png
images/build_region_fig01.png
images/build_region_fig02.png
images/build_region_fig03.png
images/build_region_fig04.png
images/ebm_primitive_fig01.png
images/ebm_primitive_fig02.png
images/ebm_primitive_fig03.png
images/gcv_architecture.png
images/gcv_unsupported_tessellation.png
images/gcv_using_gdiff.png
images/mgedrc_fig01.png
images/mgedrc_fig02.png
images/mgedrc_fig03.png
images/moss_ssm.gif
images/nirt_fig01.png
images/nirt_fig02.png
images/nirt_fig03.png
images/nirt_fig04.png
images/nirt_fig05.png
images/nirt_fig06.png
images/nirt_fig07.png
images/nirt_fig08.png
images/nirt_fig09.png
images/nirt_fig10.png
images/nirt_fig11.png
images/nirt_fig12.png
images/nirt_fig13.png
images/nirt_fig14.png
images/nirt_fig15.png
images/nirt_fig16.png
images/nirt_fig17.png
images/nirt_fig18.png
images/nirt_fig19.png
images/nirt_fig20.png
images/nirt_fig21.png
images/nirt_fig22.png
images/nirt_fig23.png
images/nirt_fig24.png
images/oed_fig01.png
images/oed_fig02.png
images/oed_fig03.png
images/oed_fig04.png
images/oed_fig05.png
images/oed_fig06.png
images/oed_fig07.png
images/oed_fig08.png
images/oed_fig09.png
images/oed_fig10.png
images/oed_fig11.png
images/oed_fig12.png
images/oed_fig13.png
images/overlap_tool_fig01.gif
images/overlap_tool_fig02.gif
images/overlap_tool_fig03.png
images/pipes_fig01.png
images/pipes_fig02.png
images/pipes_fig03.png
images/pipes_fig04.png
images/pipes_fig05.png
images/pipes_fig06.png
images/pipes_fig07.png
images/pipes_fig08.png
images/pipes_fig09.png
images/pipes_fig10.png
images/pipes_fig11.png
images/pipes_fig12.png
images/pipes_fig13.png
images/projection_shader_fig01.png
images/projection_shader_fig02.png
images/projection_shader_fig03.png
images/projection_shader_fig04.png
images/projection_shader_fig05.png
images/projection_shader_fig06.png
images/projection_shader_fig07.png
images/tire_fig01.png
images/tire_fig02.png
images/tire_fig03.png
images/tire_fig04.png
images/tire_fig05.png
images/tire_fig06.png
images/tire_fig07.png
images/tire_fig08.png
images/tire_fig09.png
images/tire_fig10.png
images/tire_fig11.png
images/tire_fig12.png
images/tire_fig13.png
images/tire_fig14.png
images/base.gif
images/bool.gif
images/coord-axes.gif
images/cup_and_mug.gif
images/cup_and_mug_small.gif
images/cup_out+in.gif
images/cup_outside.gif
images/cup_w_handle.gif
images/faceplate.gif
images/faceplate_menu.gif
images/faceplate_menu_sm.gif
images/faceplate_sm.gif
images/fillet.gif
images/fillet.jpg
images/handle.gif
images/handle.jpg
images/mug_camo.gif
images/mug_camo.jpg
images/mug_green.gif
images/mug_green.jpg
images/prims.gif
images/rim.gif
images/rim.jpg
)
if(BRLCAD_EXTRADOCS)
ADD_DOC(articles_EN_IMAGES articles/images)
else(BRLCAD_EXTRADOCS)
CMAKEFILES(${articles_EN_IMAGES})
endif(BRLCAD_EXTRADOCS)
ADD_DOCBOOK("HTML;PHP;PDF" articles_EN articles articles_EN_IMAGES_cp)
CMAKEFILES(
CMakeLists.txt
images/tire_fig12.svg
images/tire_fig13.svg
)
add_subdirectory(en)
add_subdirectory(hy)
add_subdirectory(it)
add_subdirectory(ru)
CMAKEFILES(CMakeLists.txt)
# Local Variables:
# tab-width: 8
# mode: cmake
+171
View File
@@ -0,0 +1,171 @@
set(articles_EN
TEMPLATE.xml
about.xml
animation_tutorial.xml
build_pattern.xml
build_region.xml
camo_shader.xml
ebm_primitive.xml
gcv.xml
ged.xml
mgedrc.xml
nirt.xml
oed.xml
pipes.xml
projection_shader.xml
tire.xml
mged.xml
main_menu.xml
)
set(articles_EN_IMAGES
images/Lee_tux.gif
images/animtbl.gif
images/build_pattern_fig01.png
images/build_pattern_fig02.png
images/build_pattern_fig03.png
images/build_pattern_fig04.png
images/build_pattern_fig05.png
images/build_pattern_fig06.png
images/build_pattern_fig07.png
images/build_region_fig01.png
images/build_region_fig02.png
images/build_region_fig03.png
images/build_region_fig04.png
images/dagtbl.gif
images/ebm_primitive_fig01.png
images/ebm_primitive_fig02.png
images/ebm_primitive_fig03.png
images/ell.mpg
images/ell_sm.gif
images/ell_ssm.gif
images/equation.gif
images/film.gif
images/fn.gif
images/gcv_architecture.png
images/gcv_unsupported_tessellation.png
images/gcv_using_gdiff.png
images/matrix.gif
images/mgedrc_fig01.png
images/mgedrc_fig02.png
images/mgedrc_fig03.png
images/moss.mpg
images/moss_sm.gif
images/moss_ssm.gif
images/nirt_fig01.png
images/nirt_fig02.png
images/nirt_fig03.png
images/nirt_fig04.png
images/nirt_fig05.png
images/nirt_fig06.png
images/nirt_fig07.png
images/nirt_fig08.png
images/nirt_fig09.png
images/nirt_fig10.png
images/nirt_fig11.png
images/nirt_fig12.png
images/nirt_fig13.png
images/nirt_fig14.png
images/nirt_fig15.png
images/nirt_fig16.png
images/nirt_fig17.png
images/nirt_fig18.png
images/nirt_fig19.png
images/nirt_fig20.png
images/nirt_fig21.png
images/nirt_fig22.png
images/nirt_fig23.png
images/nirt_fig24.png
images/oed_fig01.png
images/oed_fig02.png
images/oed_fig03.png
images/oed_fig04.png
images/oed_fig05.png
images/oed_fig06.png
images/oed_fig07.png
images/oed_fig08.png
images/oed_fig09.png
images/oed_fig10.png
images/oed_fig11.png
images/oed_fig12.png
images/oed_fig13.png
images/pipes_fig01.png
images/pipes_fig02.png
images/pipes_fig03.png
images/pipes_fig04.png
images/pipes_fig05.png
images/pipes_fig06.png
images/pipes_fig07.png
images/pipes_fig08.png
images/pipes_fig09.png
images/pipes_fig10.png
images/pipes_fig11.png
images/pipes_fig12.png
images/pipes_fig13.png
images/projection_shader_fig01.png
images/projection_shader_fig02.png
images/projection_shader_fig03.png
images/projection_shader_fig04.png
images/projection_shader_fig05.png
images/projection_shader_fig06.png
images/projection_shader_fig07.png
images/tire_fig01.png
images/tire_fig02.png
images/tire_fig03.png
images/tire_fig04.png
images/tire_fig05.png
images/tire_fig06.png
images/tire_fig07.png
images/tire_fig08.png
images/tire_fig09.png
images/tire_fig10.png
images/tire_fig11.png
images/tire_fig12.png
images/tire_fig13.png
images/tire_fig14.png
images/trans.gif
images/transboth.gif
images/transboth_sm.gif
images/v_eqn1.gif
images/v_eqn2.gif
images/azel.jpg
images/az_el.gif
images/az_el.jpg
images/az_el_sm.gif
images/base.gif
images/base.jpg
images/bool.gif
images/coord-axes.gif
images/cup_and_mug.gif
images/cup_and_mug_small.gif
images/cup_out+in.gif
images/cup_outside.gif
images/cup_w_handle.gif
images/faceplate.gif
images/faceplate_menu.gif
images/faceplate_menu_sm.gif
images/faceplate_sm.gif
images/fillet.gif
images/fillet.jpg
images/handle.gif
images/handle.jpg
images/mug_camo.gif
images/mug_camo.jpg
images/mug_green.gif
images/mug_green.jpg
images/prims.gif
images/rim.gif
images/rim.jpg
)
ADD_DOC(articles_EN_IMAGES html/articles/en/images)
ADD_DOCBOOK("HTML;PHP;PDF" articles_EN articles/en articles_EN_IMAGES_cp)
CMAKEFILES(images/tire_fig12.svg images/tire_fig13.svg)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
@@ -82,14 +82,14 @@
<imageobject role="html">
<!--
NOTE: fileref will normally be something like
"../../articles/images/nirt_fig02.png" NOT http: URL
"../../articles/en/images/nirt_fig02.png" NOT http: URL
-->
<imagedata align="center" fileref="http://brlcad.org/images/logo/BRL-CAD_gear_logo_w_name_256.png" format="PNG" width="256"/>
</imageobject>
<imageobject role="fo">
<!--
NOTE: fileref will normally be something like
"../../articles/images/nirt_fig02.png" NOT http: URL
"../../articles/en/images/nirt_fig02.png" NOT http: URL
-->
<imagedata align="center" fileref="http://brlcad.org/images/logo/BRL-CAD_gear_logo_w_name_256.png" format="PNG" width="256"/>
</imageobject>
File diff suppressed because it is too large Load Diff
@@ -2,7 +2,7 @@
<info><title>Using the Build Pattern Tool</title>
<xi:include href="../books/tutorial_series_authors.xml" xpointer="Intro_MGED_Tutorial_Series_III_authors"/>
<xi:include href="../../books/en/tutorial_series_authors.xml" xpointer="Intro_MGED_Tutorial_Series_III_authors"/>
<legalnotice>
<para>Approved for public release; distribution is unlimited</para>
@@ -77,10 +77,10 @@
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig01.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig01.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig01.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig01.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -131,7 +131,7 @@ part.s26 part.s26-1 part.s27 part.s28 part.s28+1 part.s28-1 part.s29
thorough and name each primitive, region, and assembly properly. Consider
the following example:
<inlinemediaobject><imageobject role="html"><imagedata fileref="../../articles/images/build_pattern_fig07.png"/></imageobject><imageobject role="fo"><imagedata fileref="../../articles/images/build_pattern_fig07.png"/></imageobject></inlinemediaobject>
<inlinemediaobject><imageobject role="html"><imagedata fileref="../../articles/en/images/build_pattern_fig07.png"/></imageobject><imageobject role="fo"><imagedata fileref="../../articles/en/images/build_pattern_fig07.png"/></imageobject></inlinemediaobject>
</para>
<para>
Top-level duplications copy the patterned object and reference its entire
@@ -186,10 +186,10 @@ part.s26 part.s26-1 part.s27 part.s28 part.s28+1 part.s28-1 part.s29
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig02.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig02.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig02.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig02.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -243,10 +243,10 @@ part.s26 part.s26-1 part.s27 part.s28 part.s28+1 part.s28-1 part.s29
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig03.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig03.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig03.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig03.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -269,10 +269,10 @@ part.s26 part.s26-1 part.s27 part.s28 part.s28+1 part.s28-1 part.s29
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig04.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig04.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig04.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig04.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -282,10 +282,10 @@ part.s26 part.s26-1 part.s27 part.s28 part.s28+1 part.s28-1 part.s29
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig05.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig05.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig05.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig05.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -310,10 +310,10 @@ part.s26 part.s26-1 part.s27 part.s28 part.s28+1 part.s28-1 part.s29
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig06.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig06.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_pattern_fig06.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_pattern_fig06.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -2,7 +2,7 @@
<info><title>Using the build_region Command</title>
<xi:include href="../books/tutorial_series_authors.xml" xpointer="Intro_MGED_Tutorial_Series_III_authors"/>
<xi:include href="../../books/en/tutorial_series_authors.xml" xpointer="Intro_MGED_Tutorial_Series_III_authors"/>
<legalnotice>
<para>Approved for public release; distribution is unlimited</para>
@@ -48,10 +48,10 @@
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_region_fig01.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig01.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_region_fig01.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig01.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -70,10 +70,10 @@
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_region_fig02.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig02.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_region_fig02.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig02.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -107,10 +107,10 @@ u wgn.s2 + wgn.s2+1 - wgn.s2-1
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_region_fig03.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig03.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_region_fig03.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig03.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -125,10 +125,10 @@ u wgn.s2 + wgn.s2+1 - wgn.s2-1
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/build_region_fig04.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig04.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/build_region_fig04.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/build_region_fig04.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -2,7 +2,7 @@
<info><title>Using the Extruded Bitmap Primitive</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../books/tutorial_series_authors.xml" xpointer="Intro_MGED_Tutorial_Series_III_authors"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../books/en/tutorial_series_authors.xml" xpointer="Intro_MGED_Tutorial_Series_III_authors"/>
<legalnotice>
<para>Approved for public release; distribution is unlimited</para>
@@ -27,10 +27,10 @@
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/ebm_primitive_fig01.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/ebm_primitive_fig01.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/ebm_primitive_fig01.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/ebm_primitive_fig01.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -39,10 +39,10 @@
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/ebm_primitive_fig02.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/ebm_primitive_fig02.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/ebm_primitive_fig02.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/ebm_primitive_fig02.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -51,10 +51,10 @@
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="../../articles/images/ebm_primitive_fig03.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/ebm_primitive_fig03.png" format="PNG"/>
</imageobject>
<imageobject role="fo">
<imagedata align="center" fileref="../../articles/images/ebm_primitive_fig03.png" format="PNG"/>
<imagedata align="center" fileref="../../articles/en/images/ebm_primitive_fig03.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
@@ -34,7 +34,7 @@
<title>GCV architecture</title>
<mediaobject>
<imageobject>
<imagedata fileref="../../articles/images/gcv_architecture.png"/>
<imagedata fileref="../../articles/en/images/gcv_architecture.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -283,7 +283,7 @@ LIBGCV_ADD_PLUGIN(foo "foo_read.c" "librt;libbu")
<title>Tessellation of incompatible entities</title>
<mediaobject>
<imageobject>
<imagedata fileref="../../articles/images/gcv_unsupported_tessellation.png"/>
<imagedata fileref="../../articles/en/images/gcv_unsupported_tessellation.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -341,7 +341,7 @@ LIBGCV_ADD_PLUGIN(foo "foo_read.c" "librt;libbu")
<title>Using MGED's gdiff utility</title>
<mediaobject>
<imageobject>
<imagedata fileref="../../articles/images/gcv_using_gdiff.png"/>
<imagedata fileref="../../articles/en/images/gcv_using_gdiff.png"/>
</imageobject>
</mediaobject>
</figure>

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 322 KiB

Before

Width:  |  Height:  |  Size: 360 KiB

After

Width:  |  Height:  |  Size: 360 KiB

Some files were not shown because too many files have changed in this diff Show More