Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0830f9a775 | ||
|
|
1ce0af8cfd | ||
|
|
6a3845e234 | ||
|
|
735d5b771b | ||
|
|
63138217b0 | ||
|
|
3fc4a6b002 | ||
|
|
7597ed5c32 | ||
|
|
8a3772a563 | ||
|
|
4bec8c4978 | ||
|
|
ba0fb75ef6 | ||
|
|
f94e664234 | ||
|
|
685cd2a125 | ||
|
|
6b4777119c | ||
|
|
d7a6082d02 | ||
|
|
73a885eb64 | ||
|
|
4178370307 | ||
|
|
6ed0824d8c | ||
|
|
6e21822be0 | ||
|
|
665ef5d1a0 | ||
|
|
feb21dc425 | ||
|
|
4ef7b84876 | ||
|
|
fd7469ea47 | ||
|
|
185be6c10e | ||
|
|
40b4cfee0e | ||
|
|
730e8e0080 | ||
|
|
e5f3a95985 | ||
|
|
d6cde9df03 | ||
|
|
a7cff1900c | ||
|
|
b7569cc417 | ||
|
|
d817c9f9d2 | ||
|
|
893b083e76 | ||
|
|
2b600af618 | ||
|
|
c814183dc1 | ||
|
|
021ff3274f | ||
|
|
60a259b41e | ||
|
|
5461ce1a24 | ||
|
|
437c3e5c7f | ||
|
|
5fe05c461d | ||
|
|
f28a5524d3 | ||
|
|
57670f4332 | ||
|
|
6f84ebb3fa | ||
|
|
13f5ec173a | ||
|
|
87485c5f44 | ||
|
|
d5dcaf6507 | ||
|
|
b084927113 | ||
|
|
b704346c1e | ||
|
|
e4d7350117 | ||
|
|
25b3929e7e | ||
|
|
a0b0f77b53 | ||
|
|
aacb2d37ea | ||
|
|
cfe5c331ca | ||
|
|
32718907b6 | ||
|
|
291f158e23 | ||
|
|
27c61cea20 | ||
|
|
e31cd5fcff | ||
|
|
0256af67a3 | ||
|
|
ef1b7458b0 | ||
|
|
fd8bb66896 | ||
|
|
393f423dd5 | ||
|
|
7f1c8325f4 | ||
|
|
d15cca258e | ||
|
|
2510e84cf8 | ||
|
|
b78c4878df | ||
|
|
a5e70e4d6b | ||
|
|
be9631385b | ||
|
|
912f76d3ee | ||
|
|
10c2389c5d |
@@ -279,7 +279,6 @@ Schueler, Betty J.
|
||||
|
||||
Edwards, Eric
|
||||
SURVICE Engineering, Inc.
|
||||
Open Source (Doc Camp)
|
||||
|
||||
Kregel, Dwayne
|
||||
SURVICE Engineering, Inc.
|
||||
@@ -335,37 +334,6 @@ Perez, Alex
|
||||
2012 November
|
||||
Open Source (GCI)
|
||||
|
||||
Singh, Harmanpreet
|
||||
nicknames harmanpreet
|
||||
2013 October
|
||||
Open Source (Doc Camp)
|
||||
|
||||
Kamga, Isaac
|
||||
nicknames Izak, iiizzzaaakkk
|
||||
2013 October
|
||||
Open Source (Doc Camp)
|
||||
|
||||
Check, Nyah
|
||||
nicknames Ch3ck
|
||||
2013 October
|
||||
Open Source (Doc Camp)
|
||||
|
||||
Scott Nesbitt
|
||||
2013 October
|
||||
Open Source (Doc Camp)
|
||||
|
||||
Wood, David
|
||||
2013 November
|
||||
Open Source (GCI)
|
||||
|
||||
Agarwal, Yatharth
|
||||
2013 November
|
||||
Open Source (GCI)
|
||||
|
||||
McDonald, Rob
|
||||
2013 November
|
||||
Open Source
|
||||
|
||||
Tannous, Marc
|
||||
2014 December
|
||||
Open Source (GCI)
|
||||
@@ -385,10 +353,6 @@ nicknames sofat
|
||||
2015 June
|
||||
Open Source (GSoC)
|
||||
|
||||
Sieu, Jeff
|
||||
2017 December
|
||||
Open Source (GCI)
|
||||
|
||||
|
||||
CODE CONTRIBUTIONS
|
||||
------------------
|
||||
@@ -721,11 +685,6 @@ Govindjee, Arjun
|
||||
2012 December
|
||||
Open Source (GCI)
|
||||
|
||||
Ramirez, Daniel
|
||||
nicknames javamonn
|
||||
2012 December
|
||||
Open Source (GCI)
|
||||
|
||||
Nagy, Csaba
|
||||
nicknames ncsaba
|
||||
2013 April
|
||||
@@ -803,7 +762,7 @@ nicknames huskmate13
|
||||
2014 January
|
||||
Open Source
|
||||
|
||||
Granroth, Gustave
|
||||
Gustave Granroth
|
||||
2014 May
|
||||
Open Source
|
||||
|
||||
@@ -861,43 +820,6 @@ Hanji, Param
|
||||
2016 March
|
||||
Open Source (GSoC)
|
||||
|
||||
Wu, Bojian
|
||||
2016 June
|
||||
Open Source (GSoC)
|
||||
|
||||
Bagavathy, Rakshika
|
||||
nicknames tandoorichick
|
||||
2016 October
|
||||
Open Source (GSoC)
|
||||
|
||||
Gao, Tianyue
|
||||
2016 December
|
||||
Open Source (GCI)
|
||||
|
||||
Rathore, Shubham
|
||||
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)
|
||||
|
||||
|
||||
SPECIAL THANKS
|
||||
--------------
|
||||
@@ -1204,14 +1126,6 @@ nicknames bchepkwny
|
||||
2015 December
|
||||
Open Source
|
||||
|
||||
Sagarwal
|
||||
2017 January
|
||||
Open Source (GCI)
|
||||
|
||||
Liu, Jeffrey
|
||||
2019 December
|
||||
Open Source (GCI)
|
||||
|
||||
|
||||
CORPORATE AND ORGANIZATION SUPPORT
|
||||
----------------------------------
|
||||
|
||||
@@ -15,138 +15,9 @@ 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.
|
||||
Looks like this may be only in situations where the "-" is the
|
||||
lead character and on Windows? Been hard to reproduce...
|
||||
|
||||
* dsp does not facetize correctly with zero elevation areas in the
|
||||
data - need robustness improvements
|
||||
|
||||
* dsp primitives specifying data using Windows style file paths
|
||||
don't work.
|
||||
|
||||
* attempting to create a dsp using a binary object caused a crash on
|
||||
Linux - need to figure out if this was caused by feeding it the wrong
|
||||
kind of binary object or some other error...
|
||||
|
||||
* screengrab on windows does not work
|
||||
|
||||
* Recursive submodel predictably goes infinite, need stack-based
|
||||
db_walk_tree(): mged> in submodel submodel submodel grid test.g
|
||||
|
||||
* running rt -s20 -F file.pix ... does not result in an 20x20 image
|
||||
being written out. it ends up being 512x512.
|
||||
|
||||
* running rt -C255/0/0 -o file.pix ... does not result in the
|
||||
background color getting used. It does work with -F file.pix, going
|
||||
through libfb instead of libicv.
|
||||
|
||||
* ogl display manager and framebuffer are creating windows with
|
||||
transparent backgrounds (the glClear color is not being drawn) on
|
||||
Linux. Presumably a driver-related issue, alpha channel, or expose
|
||||
event issue. Inspecting further, it may be related to environments
|
||||
where shmget() fails (or is requested via /dev/oglp) and we get
|
||||
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.
|
||||
@@ -197,6 +68,14 @@ Recent Bugs
|
||||
* report of g-iges crashing (on Windows) when exporting a 1.2MB BoT
|
||||
mesh (presumably imported via stl-g). worked for smaller models.
|
||||
|
||||
* ogl display manager and framebuffer are creating windows with
|
||||
transparent backgrounds (the glClear color is not being drawn) on
|
||||
Linux. Presumably a driver-related issue, alpha channel, or expose
|
||||
event issue. Inspecting further, it may be related to environments
|
||||
where shmget() fails (or is requested via /dev/oglp) and we get
|
||||
private memory -- looks like private memory is not initialized
|
||||
(observed on Mac 10.6).
|
||||
|
||||
* autoview [scale] isn't updating the wireframe when opening a
|
||||
database, drawing geometry, then running autoview. the status bar
|
||||
shows the scale change, but the graphics window remains unaffected
|
||||
@@ -344,6 +223,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 +246,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 +287,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
|
||||
@@ -449,10 +336,9 @@ Recent Bugs
|
||||
|
||||
* File->Export seems to not work on Windows
|
||||
|
||||
* xpush fails to properly create a hierarchy killing existing objects
|
||||
resulting in dangling references. This may have been fixed by
|
||||
r69256, but a model that exposes the issue has to be tested to be
|
||||
sure.
|
||||
* xpush fails to properly create a hierarchy leaving some as top-level
|
||||
objects and killing other existing objects resulting in dangling
|
||||
references.
|
||||
|
||||
* mged on Mac OS X will crash on an X11 call if compiled against
|
||||
system Tcl/Tk (at least on 10.4 linking against 8.4), see TODO
|
||||
@@ -529,6 +415,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 +457,13 @@ Recent Bugs
|
||||
* triangulation of some pipe in toyjeep.g fails (rather reliably) on
|
||||
some given bend. fails in nmg_triangulate model().
|
||||
|
||||
* tgc reports one hit errors though hit point has 0,0,0 direction
|
||||
implying that maybe the point was supposedly deleted.
|
||||
|
||||
* 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
|
||||
|
||||
@@ -2,185 +2,152 @@
|
||||
BRL-CAD Interface Change Policy
|
||||
===============================
|
||||
|
||||
This policy describes formal rules for changing an interface that
|
||||
potentially impacts developers or users. The scope is limited to
|
||||
public interfaces including developer application programming
|
||||
interfaces (APIs), user application command-line interfaces (CLIs),
|
||||
and graphical user interfaces (GUIs). The policy aims to balance
|
||||
developer agility with interface stability.
|
||||
Included below are details of BRL-CAD public interface changes that
|
||||
potentially impact external developers and users. Public interfaces
|
||||
include developer application programming interface (API) calls as
|
||||
well as user application command-line interface (CLI) and graphical
|
||||
user interface (GUI) behaviors. Changes are characterized as:
|
||||
|
||||
1) those affecting a new interface,
|
||||
2) being minimally impacting, or
|
||||
3) requiring adherence to deprecation policy.
|
||||
|
||||
This policy is intentionally designed to balance developer agility,
|
||||
helping accelerate development, with interface stability, helping
|
||||
preserve application developer and user investments.
|
||||
|
||||
All changes to BRL-CAD are expected to conform to this change policy.
|
||||
Changes MUST either be:
|
||||
|
||||
A) MINIMALLY IMPACTING, or
|
||||
B) FORMALLY DEPRECATED.
|
||||
|
||||
NEW INTERFACE
|
||||
-------------
|
||||
|
||||
Changes to interfaces that have been recently introduced are often
|
||||
subject to further change and should not yet be relied upon by
|
||||
application developers or users until they stabilize. They are
|
||||
allowed to change from release to release and are not subject to
|
||||
change policy restrictions until they have been included in at least
|
||||
TWO releases without any change.
|
||||
|
||||
|
||||
MINIMALLY IMPACTING
|
||||
-------------------
|
||||
|
||||
Changes deemed "minimally impacting" can be made at any time. For a
|
||||
change to be considered as such, its effect must be strictly limited.
|
||||
Most are itemized under MINIMALLY IMPACTING CHANGES. They MUST be:
|
||||
If a change to an interface has a suitable and completely equivalent
|
||||
alternative, the change is deemed to be "minimally impacting" and can
|
||||
be made during any release. Examples of such changes include renaming
|
||||
an interface, reordering parameters, adding optional parameters,
|
||||
adding additional parameters for previously implicit behavior, and
|
||||
removing unused parameters.
|
||||
|
||||
A.1) a relatively new interface
|
||||
|
||||
Interfaces introduced recently are often subject to rapid
|
||||
development change. New interfaces are not subject to formal
|
||||
deprecation rules until they have been included in at least
|
||||
TWO releases without change.
|
||||
|
||||
A.2) an appreciably broken interface
|
||||
|
||||
Interfaces that have been unusable for at least TWO releases
|
||||
may be fixed, changed, or removed without notice. A broken
|
||||
interface is one that does not perform its intended function
|
||||
and does not have secondary utility.
|
||||
|
||||
A.3) an elementary change
|
||||
|
||||
Simple changes that are trivially accommodated without
|
||||
conditional logic or manual inspection can be made at will.
|
||||
It includes mechanical changes that can be automatically
|
||||
updated by a single static regular expression substitution.
|
||||
|
||||
Examples include renaming, reordering parameters, adding
|
||||
optional parameters, eliminating a duplicate equivalent
|
||||
interface, adding parameters for implicit behavior, and
|
||||
removing unused parameters.
|
||||
Generally, the impact can usually be considered minimally impacting if
|
||||
a static regular expression search-and-replace is all that is needed
|
||||
to update calling code, and no manual intervention is required.
|
||||
|
||||
|
||||
FORMALLY DEPRECATED
|
||||
-------------------
|
||||
DEPRECATION POLICY
|
||||
------------------
|
||||
|
||||
Changes not minimally impacting must follow formal deprecation
|
||||
process. This defers significant changes to major release points or
|
||||
requires public notification in advance. Changes are documented in
|
||||
this file first as DEPRECATED CHANGES then later as OBSOLETED CHANGES.
|
||||
An interface may be changed:
|
||||
If a change will intentionally alter, replace, or remove functionality
|
||||
that has been documented and published in at least TWO releases, it
|
||||
must first be announced as DEPRECATED. Otherwise, changes to
|
||||
interfaces that have not been publicly announced or are not publicly
|
||||
documented for at least two releases may be changed without notice.
|
||||
|
||||
B.1) during a major release (e.g. from 7.*.* to 8.*.*)
|
||||
The general practice is that public interface changes may go from
|
||||
deprecated to obsolete, whereby previous behavior is removed or
|
||||
changed, during one of the following events:
|
||||
|
||||
Any change may be made without notice. Major version number
|
||||
releases imply intrinsic incompatibility or interface change.
|
||||
a) during a major release (e.g. going from 7.*.* to 8.*.*)
|
||||
|
||||
B.2) during a minor release (e.g., from 7.26.* to 7.28.*)
|
||||
b) during a minor release provided the change was publicly announced
|
||||
as deprecated beforehand AND sufficient deprecation warning was
|
||||
given via i) TWO minor releases included the deprecation notice,
|
||||
and ii) at least THREE months (90 days) have passed since the
|
||||
deprecation was announced
|
||||
|
||||
The interface must be publicly deprecated beforehand with
|
||||
advance notice given in at least TWO minor releases and after
|
||||
at least 90 days elapsed since initial release announcement.
|
||||
c) during any release provided there still exists an EQUIVALENT
|
||||
alternative interface that does not impose an undue burden on users
|
||||
or developers (see "MINIMALLY IMPACTING")
|
||||
|
||||
Public interfaces scheduled for change should be noted in this file
|
||||
and visibly marked in the source code. This marking may be the
|
||||
DEPRECATED keyword on function declarations, #warning "DEPRECATED ..."
|
||||
pre-processor statements, @DEPRECATED source code comments, and
|
||||
combinations thereof.
|
||||
Public interfaces scheduled for removal should be visibly marked as
|
||||
deprecated during compilation with the DEPRECATED keyword on function
|
||||
declarations, with #warning "DEPRECATED ..." pre-processor statements,
|
||||
and with @DEPRECATED in source code comments. Where users are not
|
||||
adversely affected, a run-time DEPRECATION statement may be printed.
|
||||
|
||||
Where usage is not adversely affected, a run-time statement may be
|
||||
displayed (typically "DEPRECATION WARNING: ..."). All call references
|
||||
and documentation should be updated prior to obsoleting.
|
||||
Whenever published functionality is finally removed, move its entry
|
||||
from the DEPRECATED section below to the REMOVED section for the
|
||||
version in which it was removed. Make sure the entry retains a
|
||||
reference to the version in which the item was marked as deprecated.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
Example #1: rt_shootray() removal
|
||||
Example #1: Say we decided during 7.50.3 development to remove
|
||||
rt_shootray() from the API without a replacement. That does NOT
|
||||
qualify as "minimally impacting" because there's no replacement and
|
||||
rt_shootray() has been published and documented in more than two
|
||||
releases. We'd annotate the deprecation in the CHANGES file, mark the
|
||||
function as DEPRECATED in the API header, and post the 7.50.4 release.
|
||||
The soonest that function could be removed would be in the 7.54.0
|
||||
release during 7.53 development. It could NOT be removed in 7.54.2
|
||||
since it's a patch version, prior to the 7.54 release line, nor even
|
||||
during 7.54.0 if less than 90 days had passed since 7.50.6 was posted.
|
||||
|
||||
It's decided during 7.50.3 development to remove the rt_shootray()
|
||||
function. That does NOT qualify as "minimally impacting" because
|
||||
there's no equivalent replacement and rt_shootray() has been published
|
||||
and documented in more than two releases. The function gets listed as
|
||||
DEPRECATED in the CHANGES file, marked as DEPRECATED in the API
|
||||
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
|
||||
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.
|
||||
|
||||
Example #2: bu_log() mod
|
||||
|
||||
It's decided during 7.48.1 development to modify bu_log() by adding an
|
||||
additional optional enum parameter denoting a message type, e.g.,
|
||||
bu_log(INFO, ...). This change is considered "minimally impacting"
|
||||
because it can be characterized by a simple regular expression (e.g.,
|
||||
"s/bu_log\(/bu_log(INFO, /g)" and calling codes are trivially
|
||||
accommodated. All calls to bu_log() should be updated to the new form
|
||||
prior to change announcement.
|
||||
|
||||
The function could be changed at any time so long as it's documented
|
||||
under MINIMALLY IMPACTING CHANGES.
|
||||
Example #2: Say we decide during 7.48.0 development to modify bu_log()
|
||||
by adding a new additional enum parameter denoting a message type.
|
||||
This change is considered minimally impacting because it can be
|
||||
characterized by a simple regular expression (e.g.,
|
||||
s/bu_log(/bu_log(PRINT, /g). Updates to calling codes are considered
|
||||
trivial. The change would get documented in the CHANGES file and all
|
||||
calls that can be updated must be updated at that time.
|
||||
|
||||
|
||||
**********************************************************************
|
||||
*** DEPRECATED CHANGES ***
|
||||
**********************************************************************
|
||||
(reverse chronological order)
|
||||
**************
|
||||
* DEPRECATED *
|
||||
**************
|
||||
|
||||
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
|
||||
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
|
||||
The items listed below are interfaces that are deprecated. They are
|
||||
categorized by the release in which the change was made. If the
|
||||
change involved a removal of a command or function, both the original
|
||||
and new names should be listed for reference. If an item is marked
|
||||
with a "'" (single quote), that means it was not documented and may be
|
||||
removed at any time.
|
||||
|
||||
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
|
||||
Removed as inconsistent and unused API [deprecated 7.28]
|
||||
|
||||
MGED commands
|
||||
?devel, ?lib, aproposdevel, aproposlib, %, animmate, db_glob,
|
||||
debugbu, debugdir, debuglib, debugmem, debugnmg, expand,
|
||||
loadtk, match, memprint, preview, regdebug, regdef, rmats, rrt,
|
||||
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 +156,31 @@ 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
|
||||
ssamp-bw, ssampview', ssampview.tcl'
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
misc tools
|
||||
fix_polysolids' : obsolete primitive
|
||||
remapid : superseded by reid+remat
|
||||
buffer : unnecesary network/stream buffering tool
|
||||
hex : superseded by hexdump
|
||||
Removed as part of distillation effort [deprecated 7.26]
|
||||
include/bu/ptbl.h
|
||||
BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, BU_PTBL_END
|
||||
Removed as private implementation detail [deprecated 7.26
|
||||
include/bu/hash.h
|
||||
bu_hash_tbl_find, bu_set_hash_value, bu_get_hash_value, bu_get_hash_key,
|
||||
bu_hash_tbl_add, bu_hash_tbl_print, bu_hash_tbl_free, bu_hash_tbl_first,
|
||||
bu_hash_tbl_next, bu_hash_tbl_traverse, public structs bu_hash_entry and
|
||||
bu_hash_tbl will be made private.
|
||||
Replaced with new API [deprecated 7.26]
|
||||
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 +194,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 +208,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 +222,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 +244,12 @@ 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]
|
||||
librtserver
|
||||
becoming stand-alone project, removes optional java dependency [deprecated 7.22]
|
||||
mged
|
||||
em, e_muves, l_muves, lm, read_muves, and t_muves MUVES-specific commands [deprecated 7.22]
|
||||
|
||||
7.20
|
||||
----
|
||||
@@ -261,6 +265,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
|
||||
----
|
||||
@@ -350,87 +355,13 @@ include/raytrace.h
|
||||
struct hit.hit_normal -> RT_HIT_NORMAL [deprecated pre-7.0]
|
||||
|
||||
|
||||
**********************************************************************
|
||||
*** 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]
|
||||
***********
|
||||
* REMOVED *
|
||||
***********
|
||||
|
||||
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]
|
||||
Below are the interfaces that have followed deprecation policy or were
|
||||
deemed minimally impacting and, regardless, are now no longer a part
|
||||
of BRL-CAD.
|
||||
|
||||
7.26.0
|
||||
------
|
||||
@@ -463,7 +394,7 @@ Dunn camera and Canon printer tools
|
||||
genptr_t/GENPTR_NULL
|
||||
genptr_t -> void* [deprecated 7.16]
|
||||
include/bu.h
|
||||
bu_argv0() -> bu_basename(bu_argv0_full_path(), NULL) [deprecated 7.16]
|
||||
bu_argv0() -> bu_basename(bu_argv0_full_path()); [deprecated 7.16]
|
||||
include/dm_color.h
|
||||
dm_color.h -> dm.h [deprecated 7.14]
|
||||
include/fb.h
|
||||
@@ -493,7 +424,7 @@ mged
|
||||
SGI-specific tools
|
||||
pl-sgi -> pl-fb [deprecated 7.16]
|
||||
src/gtools
|
||||
g_diff, g_lint, g_qa, g_transfer -> gdiff, glint, gqa, gtransfer [deprecated 7.14]
|
||||
g_[toolname] -> g[toolname] [deprecated 7.14]
|
||||
src/librt/cmd.c
|
||||
rt_split_cmd() -> bu_argv_from_string() [deprecated 7.12]
|
||||
any-png.sh
|
||||
@@ -673,29 +604,22 @@ include/[library].h (several)
|
||||
[library]_version -> [library]_version() [private]
|
||||
|
||||
|
||||
**********************************************************************
|
||||
*** MINIMALLY IMPACTING CHANGES ***
|
||||
**********************************************************************
|
||||
(forward chronological order)
|
||||
***********************************
|
||||
* MINIMALLY IMPACTING API CHANGES *
|
||||
***********************************
|
||||
|
||||
All minimally impacting changes are listed by release as regular
|
||||
expressions. Unless noted otherwise, expressions are shown using Perl
|
||||
syntax (i.e., the '(', ')', and '|' characters pertain to
|
||||
subexpression captures, escaping with '\' matches literally.
|
||||
Expressions should apply via:
|
||||
Included in following are various minimally impacting API changes that
|
||||
have been identified in chronological order. As expressions are not
|
||||
extensively tested, use with caution.
|
||||
|
||||
perl -0777 -pi -e 'EXPRESSION' FILE
|
||||
|
||||
To apply an expression to an entire source tree, the following pattern
|
||||
may work:
|
||||
Unless noted otherwise, expressions are shown using Perl syntax and
|
||||
may need adjustment (particularly quoting of '(', ')', and '|'
|
||||
characters) for other environments. Most expressions will apply with:
|
||||
perl -0777 -pi -e 'EXPRESSION' FILE
|
||||
|
||||
To apply them to an entire SVN checkout, the following pattern is useful:
|
||||
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.
|
||||
|
||||
|
||||
6.0 (sed lines)
|
||||
---
|
||||
g/struct structparse/s//struct bu_structparse/g
|
||||
@@ -1286,242 +1210,3 @@ s/bu_dir_list/bu_file_list/g
|
||||
bu_dir_list -> bu_file_list [7.25]
|
||||
s/BU_FNMATCH_NOMATCH/1/g
|
||||
don't use an explicit define for the non-matching case [7.25]
|
||||
s/bu_basename\(([^\)]*)\)/bu_basename(\1, NULL)/g
|
||||
pass NULL argument to get a dynamically allocated buffer back [7.25]
|
||||
|
||||
7.28
|
||||
----
|
||||
s/bu_free_array/bu_free_args/g
|
||||
fixed misleading name [7.26]
|
||||
s/(#[[:space:]]*include[[:space:]]+["<])bu\/rb\.h/\1bu\/redblack.h/g
|
||||
clearer header name [7.26]
|
||||
s/rt_plot_vlblock/bn_plot_vlblock/g
|
||||
s/rt_vlist_to_uplot/bn_vlist_to_uplot/g
|
||||
move vlist functions to libbn [7.26]
|
||||
s/rt_nurb_bezier/nmg_nurb_bezier/g
|
||||
s/rt_nurb_c_split/nmg_nurb_c_split/g
|
||||
s/rt_nurb_free_cnurb/nmg_nurb_free_cnurb/g
|
||||
s/rt_nurb_free_snurb/nmg_nurb_free_snurb/g
|
||||
s/rt_nurb_intersect/nmg_nurb_intersect/g
|
||||
s/rt_nurb_new_cnurb/nmg_nurb_new_cnurb/g
|
||||
s/rt_nurb_new_snurb/nmg_nurb_new_snurb/g
|
||||
s/rt_nurb_s_eval/nmg_nurb_s_eval/g
|
||||
s/rt_nurb_s_norm/nmg_nurb_s_norm/g
|
||||
s/rt_nurb_uv_hit/nmg_nurb_uv_hit/g
|
||||
s/rt_arc2d_to_cnurb/nmg_arc2d_to_cnurb/g
|
||||
s/rt_join_cnurbs/nmg_join_cnurbs/g
|
||||
s/rt_nurb_c_eval/nmg_nurb_c_eval/g
|
||||
s/rt_nurb_c_print/nmg_nurb_c_print/g
|
||||
s/rt_nurb_kvgen/nmg_nurb_kvgen/g
|
||||
s/rt_nurb_kvmerge/nmg_nurb_kvmerge/g
|
||||
s/rt_nurb_s_print/nmg_nurb_s_print/g
|
||||
s/rt_nurb_s_refine/nmg_nurb_s_refine/g
|
||||
s/rt_bez_check/nmg_bez_check/g
|
||||
s/rt_nurb_back_solve/nmg_nurb_back_solve/g
|
||||
s/rt_nurb_basis_eval/nmg_nurb_basis_eval/g
|
||||
s/rt_nurb_c_bound/nmg_nurb_c_bound/g
|
||||
s/rt_nurb_c_check/nmg_nurb_c_check/g
|
||||
s/rt_nurb_c_diff/nmg_nurb_c_diff/g
|
||||
s/rt_nurb_c_refine/nmg_nurb_c_refine/g
|
||||
s/rt_nurb_c_xsplit/nmg_nurb_c_xsplit/g
|
||||
s/rt_nurb_calc_oslo/nmg_nurb_calc_oslo/g
|
||||
s/rt_nurb_cinterp/nmg_nurb_cinterp/g
|
||||
s/rt_nurb_clean_cnurb/nmg_nurb_clean_cnurb/g
|
||||
s/rt_nurb_clip_srf/nmg_nurb_clip_srf/g
|
||||
s/rt_nurb_crv_copy/nmg_nurb_crv_copy/g
|
||||
s/rt_nurb_crv_flat/nmg_nurb_crv_flat/g
|
||||
s/rt_nurb_curvature/nmg_nurb_curvature/g
|
||||
s/rt_nurb_doolittle/nmg_nurb_doolittle/g
|
||||
s/rt_nurb_eval_crv/nmg_nurb_eval_crv/g
|
||||
s/rt_nurb_forw_solve/nmg_nurb_forw_solve/g
|
||||
s/rt_nurb_free_oslo/nmg_nurb_free_oslo/g
|
||||
s/rt_nurb_gen_knot_vector/nmg_nurb_gen_knot_vector/g
|
||||
s/rt_nurb_knot_index/nmg_nurb_knot_index/g
|
||||
s/rt_nurb_kvcheck/nmg_nurb_kvcheck/g
|
||||
s/rt_nurb_kvcopy/nmg_nurb_kvcopy/g
|
||||
s/rt_nurb_kvextract/nmg_nurb_kvextract/g
|
||||
s/rt_nurb_kvknot/nmg_nurb_kvknot/g
|
||||
s/rt_nurb_kvmult/nmg_nurb_kvmult/g
|
||||
s/rt_nurb_kvnorm/nmg_nurb_kvnorm/g
|
||||
s/rt_nurb_map_oslo/nmg_nurb_map_oslo/g
|
||||
s/rt_nurb_mesh_diff/nmg_nurb_mesh_diff/g
|
||||
s/rt_nurb_mk_poly/nmg_nurb_mk_poly/g
|
||||
s/rt_nurb_p_mat/nmg_nurb_p_mat/g
|
||||
s/rt_nurb_plot_cnurb/nmg_nurb_plot_cnurb/g
|
||||
s/rt_nurb_plot_snurb/nmg_nurb_plot_snurb/g
|
||||
s/rt_nurb_poly/nmg_nurb_poly/g
|
||||
s/rt_nurb_pr_crv/nmg_nurb_pr_crv/g
|
||||
s/rt_nurb_pr_kv/nmg_nurb_pr_kv/g
|
||||
s/rt_nurb_pr_mesh/nmg_nurb_pr_mesh/g
|
||||
s/rt_nurb_pr_oslo/nmg_nurb_pr_oslo/g
|
||||
s/rt_nurb_print_pt_type/nmg_nurb_print_pt_type/g
|
||||
s/rt_nurb_project_srf/nmg_nurb_project_srf/g
|
||||
s/rt_nurb_region_from_srf/nmg_nurb_region_from_srf/g
|
||||
s/rt_nurb_s_bound/nmg_nurb_s_bound/g
|
||||
s/rt_nurb_s_check/nmg_nurb_s_check/g
|
||||
s/rt_nurb_s_diff/nmg_nurb_s_diff/g
|
||||
s/rt_nurb_s_flat/nmg_nurb_s_flat/g
|
||||
s/rt_nurb_s_plot/nmg_nurb_s_plot/g
|
||||
s/rt_nurb_s_split/nmg_nurb_s_split/g
|
||||
s/rt_nurb_s_xsplit/nmg_nurb_s_xsplit/g
|
||||
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]
|
||||
s/RTG.NMG_debug/nmg_debug/g
|
||||
make nmg debug flag top level, like libbu's [7.27]
|
||||
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]
|
||||
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
|
||||
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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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,
|
||||
@@ -281,6 +285,13 @@ libfft: The Fast-Fourier Transform library is a signal processing
|
||||
library for performing FFTs or inverse FFTs efficiently.
|
||||
Depends on: libm
|
||||
|
||||
libmultispectral: The multispectral optics library is a separate
|
||||
compilation mode of the optics library where support for additional
|
||||
bands of energy are added. By providing a defined spectrum of energy,
|
||||
the raytrace library will produce different signal analyses for a
|
||||
given set of geometry.
|
||||
Depends on: librt libbn libbu libtcl
|
||||
|
||||
liboptical: The optical library is the basis for BRL-CAD's shaders.
|
||||
This includes shaders such as the Phong and Cook-Torrence lighting
|
||||
models, as well as various visual effects such as texturing, marble,
|
||||
@@ -398,29 +409,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 +518,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:
|
||||
|
||||
@@ -539,7 +548,7 @@ math for portability and performance reasons. When floating point
|
||||
comparisons are necessary, use the NEAR_EQUAL and NEAR_ZERO macros
|
||||
with a specified tolerance or the EQUAL and ZERO macros where a
|
||||
tolerance is indeterminate (all the macros are available by including
|
||||
vmath.h). Examples:
|
||||
bn.h, part of libbn). Examples:
|
||||
|
||||
For known tolerances:
|
||||
|
||||
@@ -560,27 +569,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 +587,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 +1079,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 +1104,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 +1200,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 +1263,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
|
||||
|
||||
@@ -1336,8 +1330,6 @@ Release steps are as follows:
|
||||
#####################################################################
|
||||
# 09: Sync RELEASE to STABLE branch:
|
||||
|
||||
# Update the NEWS release date for the current release to today's date
|
||||
|
||||
# NON-AUTO: Review the log and obtain the last merge revision
|
||||
# number from comments.
|
||||
svn log --stop-on-copy https://svn.code.sf.net/p/brlcad/code/brlcad/branches/STABLE | less
|
||||
@@ -1409,32 +1401,32 @@ Release steps are as follows:
|
||||
SFUSERNAME=`ls ~/.subversion/auth/svn.simple/* | xargs -n 1 grep -A4 sourceforge | tail -1`
|
||||
echo "SFUSERNAME=$SFUSERNAME MAJOR=$MAJOR MINOR=$MINOR PATCH=$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net create
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/b/br/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH"
|
||||
|
||||
# create binary dirs (as needed)
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ Runtime\ Libraries/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ BSD/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ Linux/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ Mac\ OS\ X/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/brlcad/BRL-CAD\ for\ Windows/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/b/br/brlcad/BRL-CAD\ Runtime\ Libraries/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/b/br/brlcad/BRL-CAD\ for\ BSD/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/b/br/brlcad/BRL-CAD\ for\ Linux/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/b/br/brlcad/BRL-CAD\ for\ Mac\ OS\ X/$MAJOR.$MINOR.$PATCH"
|
||||
ssh -v $SFUSERNAME,brlcad@shell.sf.net mkdir "/home/frs/project/b/br/brlcad/BRL-CAD\ for\ Windows/$MAJOR.$MINOR.$PATCH"
|
||||
|
||||
# upload source dist and any binaries
|
||||
scp brlcad-$MAJOR.$MINOR.$PATCH* "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH/."
|
||||
scp brlcad-$MAJOR.$MINOR.$PATCH* "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/b/br/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH/."
|
||||
|
||||
# extract and upload release notes to source dir
|
||||
cat ../NEWS | tr '\n' '@' | perl -p -e "s/.*?(@---[[:space:]@-]*[0-9]{4}-[0-9]{2}-[0-9]{2}[[:space:]]*Release[[:space:]]*${MAJOR}\.${MINOR}\.${PATCH}[[:space:]@-]*.*?)@---.*/\1/" | tr '@' '\n' > README-${MAJOR}-${MINOR}-${PATCH}.txt
|
||||
cat ../NEWS | tr '\n' '@' | perl -pi -e "s/.*?(@---[[:space:]@-]*[0-9]{4}-[0-9]{2}-[0-9]{2}[[:space:]]*Release[[:space:]]*${MAJOR}\.${MINOR}\.${PATCH}[[:space:]@-]*.*?)@---.*/\1/" | tr '@' '\n' > README-${MAJOR}-${MINOR}-${PATCH}.txt
|
||||
echo "Release notes for $MAJOR.$MINOR.$PATCH" && echo "==="
|
||||
cat README-$MAJOR-$MINOR-$PATCH.txt && echo "==="
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/b/br/brlcad/BRL-CAD\ Source/$MAJOR.$MINOR.$PATCH/."
|
||||
|
||||
# NON-AUTO: Following the NAMING A BINARY RELEASE convention,
|
||||
# upload any release binaries and platform-specific release notes.
|
||||
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ Runtime\ Libraries/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ BSD/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ Linux/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ Mac\ OS\ X/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/brlcad/BRL-CAD\ for\ Windows/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/b/br/brlcad/BRL-CAD\ Runtime\ Libraries/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/b/br/brlcad/BRL-CAD\ for\ BSD/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/b/br/brlcad/BRL-CAD\ for\ Linux/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/b/br/brlcad/BRL-CAD\ for\ Mac\ OS\ X/$MAJOR.$MINOR.$PATCH/."
|
||||
scp README-$MAJOR-$MINOR-$PATCH.txt "$SFUSERNAME,brlcad@shell.sf.net:/home/frs/project/b/br/brlcad/BRL-CAD\ for\ Windows/$MAJOR.$MINOR.$PATCH/."
|
||||
|
||||
# NON-AUTO: Be sure to mark binaries as default download, then
|
||||
# close shell session
|
||||
@@ -1464,9 +1456,6 @@ Release steps are as follows:
|
||||
Slackware maintainer
|
||||
http://slackbuilds.org/result/?search=brlcad
|
||||
|
||||
Fedora maintainer
|
||||
https://fedoraproject.org/wiki/User:Germano#Contact
|
||||
|
||||
#####################################################################
|
||||
# 18: Announce the new release.
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
The Installation Guide to BRL-CAD
|
||||
=================================
|
||||
|
||||
Please read this document if you are interested in installing BRL-CAD.
|
||||
|
||||
This document covers the basics of installing BRL-CAD from either a
|
||||
source or binary distribution. Please see the 'Reporting Problems'
|
||||
section if you run into any trouble installing BRL-CAD.
|
||||
@@ -412,6 +414,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 +536,14 @@ first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
Aliases: ENABLE_ZLIB, ENABLE_LIBZ
|
||||
|
||||
|
||||
--- BRLCAD_LZ4 ---
|
||||
--- BRLCAD_TINYCTHREAD ---
|
||||
|
||||
Option for enabling and disabling compilation of the lz4 data
|
||||
compression 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 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_LZ4
|
||||
Aliases: ENABLE_TINYCTHREAD
|
||||
|
||||
|
||||
--- BRLCAD_FREETYPE ---
|
||||
@@ -533,6 +556,18 @@ 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
|
||||
@@ -641,6 +676,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
|
||||
@@ -664,14 +712,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 ---
|
||||
@@ -684,6 +732,16 @@ first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
|
||||
Aliases: ENABLE_SCL, ENABLE_STEP, ENABLE_STEP_CLASS_LIBRARIES
|
||||
|
||||
|
||||
--- BRLCAD_GECODE ---
|
||||
|
||||
Option for enabling and disabling compilation of the Gecode Constraint
|
||||
Solving 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_GECODE
|
||||
|
||||
|
||||
--- BRLCAD_VDS ---
|
||||
|
||||
Option for enabling and disabling compilation of the libvds triangle
|
||||
@@ -716,26 +774,15 @@ AUTO.
|
||||
Aliases: ENABLE_GDIAM
|
||||
|
||||
|
||||
--- BRLCAD_PROJ4 ---
|
||||
--- BRLCAD_BULLET ---
|
||||
|
||||
Option for enabling and disabling compilation of the PROJ.4 geographic
|
||||
projection 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 Bullet Realtime
|
||||
Physics Simulation Libraries 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_PROJ4
|
||||
|
||||
|
||||
--- BRLCAD_GDAL ---
|
||||
|
||||
Option for enabling and disabling compilation of the GDAL geographic
|
||||
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_GDAL
|
||||
Aliases: ENABLE_BULLET
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,295 +9,27 @@ first and are grouped by release. Each release also includes optional
|
||||
descriptive text that emphasizes or further describes significant
|
||||
changes made. See document footer for additional details.
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 20XX-XX-XX Release 7.XX.X ---
|
||||
--- 2016-07-XX Release 7.26.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* add .r suffixes to region names in 3dm-g conversion - Cliff Yapp
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2020-03-19 Release 7.30.6 ---
|
||||
--- 2016-06-XX Release 7.26.0 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* 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
|
||||
This major release update of BRL-CAD culminates several years of
|
||||
development efforts to provide robust boundary representation (BREP)
|
||||
NURBS import and ray tracing support. Our NURBS capability gets us a
|
||||
step closer to full hybrid representation modeling, supporting
|
||||
seamless transitioning and mixing of boundary representation geometry
|
||||
(e.g., NURBS or polygonal meshes) with implicit representation
|
||||
geometry (e.g., primitives with CSG).
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 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
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2017-09-22 Release 7.26.4 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2017-06-10 Release 7.26.2 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Among a variety of bugs fixed, the patch corrects a critical error in
|
||||
BoT triangle mesh ray tracing. For improved performance, it also
|
||||
changes the default frame buffer display behavior to fully buffer ray
|
||||
tracing images instead of displaying them incrementally. A variety of
|
||||
MGED commands see improvements too with 'ls' now supporting listing
|
||||
objects by their on-disk size and the 'simulate' command applying
|
||||
forces on objects (e.g., gravity) with greater ease. Not yet
|
||||
complete, there is a new interface being developed for resolving
|
||||
overlaps more efficiently, currently under development and usability
|
||||
testing with select users. Lastly, a number of dependencies were
|
||||
upgraded, including Tcl/Tk, in order to patch security vulnerabilities
|
||||
and address portability issues.
|
||||
|
||||
* upgraded Tcl/Tk from 8.5.9 to 8.5.19 - Sean Morrison
|
||||
* fixed background color setting in MGED - Cliff Yapp
|
||||
* upgraded libpng to version 1.6.29 - Cliff Yapp
|
||||
* upgraded zlib to version 1.2.11 - Cliff Yapp
|
||||
* reduced 'shade_inputs' flipped normal reporting - Sean Morrison
|
||||
* numerous 'simulate' command enhancements and fixes - Jon Engbert
|
||||
* fixed rtweight .density file loading on Windows - Cliff Yapp
|
||||
* fixed dsp handling of invalid uniform binary objects - Sean Morrison
|
||||
* fixed brlman problem with viewing benchmark man page - Cliff Yapp
|
||||
* fixed name of dbfind man page (was listed as 'find') - Cliff Yapp
|
||||
* added -H option to ls for human readable size reporting - Cliff Yapp
|
||||
* added -S option to ls command for size based sorting - Cliff Yapp
|
||||
* improved 'loadview' command view script handling - Sean Morrison
|
||||
* fixed TIE raytracing for zero thickness BoTs - Cliff Yapp
|
||||
* added Wavefront OBJ File->Open GUI support in Archer - Cliff Yapp
|
||||
* fixed attr show error printing large attribute values - Cliff Yapp
|
||||
* 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
|
||||
* added support for .rtwizardrc configuration file - Cliff Yapp
|
||||
* renamed MGED gdiff grid spacing -t option to -g - Cliff Yapp
|
||||
* updated MGED gdiff default drawing options to -l -r - Cliff Yapp
|
||||
* removed MGED gdiff -R option, now default behavior - Cliff Yapp
|
||||
* replaced obsolete 'g_diff' manual page with 'gdiff' - Cliff Yapp
|
||||
* improved 'keep' error message when file is not created - Cliff Yapp
|
||||
* improved rtwizard window sizing and "RtWizard" titling - Cliff Yapp
|
||||
* brep command attaches .brep suffix instead of _brep - Sean Morrison
|
||||
* changed ogl & wgl framebuffer delayed write behavior - Sean Morrison
|
||||
* upgraded freetype to version 2.6.5 - Cliff Yapp
|
||||
* fix rtedge foreground/background color options - Jon Engbert
|
||||
* support rt -C colors specified as 0-255 or 0.0-1.0 - Jon Engbert
|
||||
* fixed xpush bug leaving stray top-level objects - Nick Reed
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--- 2016-08-08 Release 7.26.0 ---
|
||||
----------------------------------------------------------------------
|
||||
|
||||
This major release of BRL-CAD culminates several years of development
|
||||
effort to provide robust explicit boundary representation (BREP)
|
||||
Non-uniform Rational Basis Spline (NURBS) import and ray tracing
|
||||
analysis support. Compared to previous polygonal mesh (BoT) methods,
|
||||
NURBS offer superior interoperability with other CAD systems, faithful
|
||||
shape-preserving import, and significantly reduced model sizes. NURBS
|
||||
may be imported from the ISO STEP (AP203) and Rhino 3DM file formats,
|
||||
both with improved hierarchy preservation and entity support.
|
||||
|
||||
Unprecedented in BRL-CAD's history, this release initiates steps to
|
||||
significantly reduce complexity and improve usability. Many features
|
||||
are being consolidated, reorganized, and removed via BRL-CAD's
|
||||
deprecation process. There are widespread documentation system
|
||||
enhancements including new manual pages, improved command usage,
|
||||
better help facilities, and more.
|
||||
|
||||
This release introduces the 'gcv' and 'icv' tools for geometry and
|
||||
image conversion respectively. These plugin-architecture tools are
|
||||
intended to eventually consolidate and replace all of BRL-CAD's
|
||||
conversion and processing functionality into an easy universal
|
||||
interface for users and application developers. GCV currently
|
||||
supports import and export of STL, 3DM, OBJ, VRML, and FASTGEN
|
||||
geometry as well as mesh decimation, facetization, and solidity
|
||||
testing. The new FASTGEN exporter implements extensive compatibility
|
||||
feature mapping for round-trip geometry conversion.
|
||||
|
||||
Ray tracing performance on Windows is vastly improved on symmetric
|
||||
multiprocessing (SMP) multicore and multiple CPU systems. Implemented
|
||||
as 'datum' objects, BRL-CAD provides new modeling support for
|
||||
reference points, lines (axes), and planes. Major features still
|
||||
under experimental development include NURBS Boolean evaluation, a new
|
||||
marching cubes method for polygonal mesh export, rigging joints for
|
||||
constrained geometry articulation, and an OpenCL-accelerated high
|
||||
performance ray tracing pipeline.
|
||||
|
||||
* mass-deprecation of 121 command-line utilities - BRL-CAD Developers
|
||||
* fixed bad args crash in metaball 'in' command - Cliff Yapp
|
||||
* added manual page for lt comb child listing command - Cliff Yapp
|
||||
* added lt -c option for specifying separation character - Bob Parker
|
||||
* mass-deprecation of 121 command-line utilities - BRL-CAD Developers
|
||||
* improved hierarchy preservation in 3dm-g importer - Jon Engbert
|
||||
* fixed upside down 'screengrab' images on some platforms - Nick Reed
|
||||
* updated wireframe drawing to respect primitive colors - Cliff Yapp
|
||||
@@ -314,16 +46,6 @@ performance ray tracing pipeline.
|
||||
* extended nirt to list current and available formats - Sean Morrison
|
||||
* fixed NURBS wireframe drawing crash - Cliff Yapp
|
||||
* fixed firing of single rays using the rtshot tool - Sean Morrision
|
||||
* removed pixread.sh, pixwrite.sh; obsolete hardware - Sean Morrison
|
||||
* removed cray.sh and sgisnap.sh; obsolete hardware - Sean Morrison
|
||||
* removed cadbug.sh - use sourceforge tracker - Sean Morrison
|
||||
* removed any-png.sh - use pix tools - Sean Morrison
|
||||
* removed librtserver interface - Cliff Yapp
|
||||
* removed MGED per_line command - Sean Morrison
|
||||
* updated MGED tops command: default to -g -u behavior- Sean Morrison
|
||||
* removed MGED -n option; use -c instead - Sean Morrison
|
||||
* removed MGED commands pl, pov and polybinout - Sean Morrison
|
||||
* removed UtahRLE image tools - Cliff Yapp
|
||||
* improved rcodes command feedback in the no changes case - Cliff Yapp
|
||||
* added brlman -S option to specify man page section - Cliff Yapp
|
||||
* modified rtg3 to avoid outputting excessive LOS - Nick Gerstner
|
||||
@@ -341,7 +63,6 @@ performance ray tracing pipeline.
|
||||
* added draw -L# to draw bounding boxes for large objects - Cliff Yapp
|
||||
* added 3dm-g instance reference and definition import - Jon Engbert
|
||||
* minor rtwizard graphical user interface reorganization - Cliff Yapp
|
||||
* fixed rtwizard edge and ghosted image bug on Windows - Bob Parker
|
||||
* ported 'brlman' manual page viewer with GUI to Windows - Cliff Yapp
|
||||
* added gdiff -h help command-line option - Cliff Yapp
|
||||
* added facetize -m marching cubes option - Erik Greenwald
|
||||
@@ -353,7 +74,6 @@ performance ray tracing pipeline.
|
||||
* added new algorithm to bot_decimate (via -f option) - Jon Engbert
|
||||
* fixed benchmark bug running from paths with spaces - Sean Morrison
|
||||
* fixed adjust command crash when working with BoTs - Daniel Roßberg
|
||||
* removed fb-orle, orle-fb, orle-pix, and pix-orle tools - Cliff Yapp
|
||||
* removed support for RLE v1 and v2 ('orle') image format - Cliff Yapp
|
||||
* fixed datum type 'in' command unit conversion bug - Cliff Yapp
|
||||
* fixed rpatch / patch-g line handling on Windows - Daniel Roßberg
|
||||
@@ -365,19 +85,15 @@ performance ray tracing pipeline.
|
||||
* improved point cloud plot visualization - Sean Morrison
|
||||
* fixed program freezing bug in MGED grouper command - Bob Parker
|
||||
* added 'rhc' reporting to analyze command - Kalpit Thakkar
|
||||
* improved command option and manual page consistency - Carl Moore
|
||||
* improved help option consistency across numerous tools - Carl Moore
|
||||
* added prefatory FASTGEN4 geometry export support - Jon Engbert
|
||||
* added FASTGEN4 illegal thickness CCONE1 entity import - Cliff Yapp
|
||||
* improved help message for 'tire' command - Cliff Yapp, Carl Moore
|
||||
* improved option parsing and output options for gencolor - Carl Moore
|
||||
* fixed saveview usage help string and running from archer - Nick Reed
|
||||
* fixed and improved killtree man page - Nick Reed
|
||||
* fixed composition bugs in pixmatte and pixmerge - Carl Moore
|
||||
* fixed definition of "light year" in unit conversions - Cliff Yapp
|
||||
* fixed duplicate name errors in dbconcat - Daniel Roßberg
|
||||
* modernized documents and improved infrastructure - Hitesh Sofat
|
||||
* added mirroring support for hrt primitive objects - Isaac Kamga
|
||||
* added manual page documenting the STEP geometry format - Cliff Yapp
|
||||
* ported the mged Overlap Tool to Windows - Sean Morrison
|
||||
* improved NURBS prep performance for UV-remapped surfaces - Nick Reed
|
||||
* fixed dbconcat -c crash when color table does not exist - Nick Reed
|
||||
@@ -386,7 +102,6 @@ performance ray tracing pipeline.
|
||||
* updated libregex to apply a fix for CVE-2015-2305 - Cliff Yapp
|
||||
* upgraded libpng to version 1.6.20 - Cliff Yapp
|
||||
* added command window option for pasting tree view paths - Nick Reed
|
||||
* improved 'bb' command digits and units output - Keith Bowman
|
||||
* improved robustness of bb command oriented box option - Peter Amidon
|
||||
* added example NURBS B-Rep geometry files from NIST - Cliff Yapp
|
||||
* removed "high resolution" options from all commands - Carl Moore
|
||||
@@ -412,15 +127,12 @@ performance ray tracing pipeline.
|
||||
* renamed 'make_bb' mged command name to 'bb' - Cliff Yapp
|
||||
* added g-ply exporter for Stanford PLY geometry format - Rishub Jain
|
||||
* added ply-g importer for Stanford PLY geometry format - Rishub Jain
|
||||
* improved rtedge help option output - Carl Moore
|
||||
* fixed texture mapping crash with bad image dimensions - Ștefan Mirea
|
||||
* fixed g2asc and asc2g handling of dsp primitive - Cliff Yapp
|
||||
* rewrote gdiff with improved output & reporting options - Cliff Yapp
|
||||
* fixed pix-ps -S -W -N output size options being ignored - Carl Moore
|
||||
* fixed crash exporting mixed mode merged BoT meshes - Sean Morrison
|
||||
* fixed submodel primitive crash - Cliff Yapp, Sean Morrison
|
||||
* added fbclear command to archer - Bob Parker
|
||||
* improved rtwizard command-line mode manual page docs - Cliff Yapp
|
||||
* support non-.g file import in Archer's file open dialog - Cliff Yapp
|
||||
* added brep support to g2asc and asc2g - Cliff Yapp
|
||||
* fixed a CPU affinity locking bug on Linux platforms - Sean Morrison
|
||||
@@ -438,33 +150,22 @@ performance ray tracing pipeline.
|
||||
* fixed memory leaks in a number of pix utilities - Cezar Elnazli
|
||||
* improved NURBS ray tracing & tessellation robustness - Keith Bowman
|
||||
* improved step-g NURBS geometry import robustness - Keith Bowman
|
||||
* added -f vertex fuse option to obj-g importer - Jon Engbert
|
||||
* added -v verbose output option to mged 'search' command - Cliff Yapp
|
||||
* fixed g_lint and pixcount red-black tree memory leaks - Tom Browder
|
||||
* added conversion time reporting to step-g importer - Keith Bowman
|
||||
* fixed crash of extrude with special case bezier curves - huskmate13
|
||||
* improved performance of 'terrain' & numerous shaders - Sean Morrison
|
||||
* new manual pages for rtexample and brep_simple - Shardul Chiplunkar
|
||||
* added key binding to reopen/focus mged command window - Emory Huff
|
||||
* added menu option to restore mged command window - Cezar Elnazli
|
||||
* improved DocBook documentation output formatting
|
||||
- David Wood, Yatharth Agarwal
|
||||
* added 'search' -params option for geometric parameters - Cliff Yapp
|
||||
* search command now recognizes hyp and metaball types - Cliff Yapp
|
||||
* improved spec formatting, added v5 timestamp proposal - Tom Browder
|
||||
* improved search command documentation examples - Cliff Yapp
|
||||
* improved archer interface's behavior on start-up - Nick Reed
|
||||
* added -depth option to mged 'search' command - Cliff Yapp
|
||||
* initial support for rigging joints and constrained articulation
|
||||
- Nick Reed, Keith Bowman, Cliff Yapp, Sean Morrison
|
||||
* improved 'search' with 'flat' search path modifier - Cliff Yapp
|
||||
* improved 'search' with above/equal/below depth limits - Cliff Yapp
|
||||
* improved support for sub-millimeter (tiny) meshes - Keith Bowman
|
||||
* added comb -S option to stop when object already exists - Cliff Yapp
|
||||
* improved comb command documentation with many examples - Cliff Yapp
|
||||
* implemented new 'hrt' heart-shaped primitive object - Isaac Kamga
|
||||
* added support for multicore / SMP ray tracing on Windows
|
||||
- Adrián Calle, Arjun Govindjee, Daniel Roßberg, Sean Morrison
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
BRL-CAD
|
||||
Release 7.30.6
|
||||
Release 7.26.2
|
||||
http://brlcad.org/
|
||||
|
||||
BRL-CAD is a powerful cross-platform open source combinatorial
|
||||
@@ -31,7 +31,7 @@ TABLE OF CONTENTS
|
||||
|
||||
|
||||
GETTING STARTED
|
||||
---------------
|
||||
----------------
|
||||
|
||||
This README file exists only to provide you a brief roadmap to the
|
||||
contents of the BRL-CAD distribution.
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -76,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))) {
|
||||
@@ -122,17 +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;
|
||||
|
||||
long int bytes = 0;
|
||||
|
||||
/* process opts */
|
||||
while ((c = bu_getopt(argc, argv, "lbi:s")) != -1) {
|
||||
@@ -205,7 +206,7 @@ main(int argc, char *argv[])
|
||||
stat(argv[1], &sf2);
|
||||
|
||||
if (sf1.st_size != sf2.st_size) {
|
||||
bu_exit(FILE_ERROR, "Different file sizes found: %s(%d) and %s(%d). Cannot perform pixcmp.\n", argv[0], (int)sf1.st_size, argv[1], (int)sf2.st_size);
|
||||
bu_exit(FILE_ERROR, "Different file sizes found: %s(%d) and %s(%d). Cannot perform pixcmp.\n", argv[0], sf1.st_size, argv[1], sf2.st_size);
|
||||
}
|
||||
|
||||
if (!print_bytes) {
|
||||
@@ -214,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",
|
||||
@@ -224,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",
|
||||
@@ -300,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);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ BRLCAD_ADDDATA(PIX_LOG pix)
|
||||
|
||||
CMAKEFILES(${BENCHMARK_PIX})
|
||||
CMAKEFILES(${PIX_LOG})
|
||||
CMAKEFILES(CMakeLists.txt)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,9 +10,9 @@ while [ "$1" != "" ]
|
||||
do
|
||||
case $1
|
||||
in
|
||||
--enable-all) options="$options -DBRLCAD_BUNDLED_LIBS=BUNDLED";
|
||||
--enable-all) options="$options -DBRLCAD_BUNDLED_LIBS=ON";
|
||||
shift;;
|
||||
--disable-all) options="$options -DBRLCAD_BUNDLED_LIBS=SYSTEM";
|
||||
--disable-all) options="$options -DBRLCAD_BUNDLED_LIBS=OFF";
|
||||
shift;;
|
||||
--enable-opengl) options="$options -DBRLCAD_ENABLE_OPENGL=ON";
|
||||
shift;;
|
||||
@@ -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,14 +126,18 @@ do
|
||||
shift;;
|
||||
--disable-libz) options="$options -DBRLCAD_ZLIB=SYSTEM";
|
||||
shift;;
|
||||
--enable-lz4) options="$options -DBRLCAD_LZ4=BUNDLED";
|
||||
--enable-tinycthread) options="$options -DBRLCAD_TINYCTHREAD=BUNDLED";
|
||||
shift;;
|
||||
--disable-lz4) options="$options -DBRLCAD_LZ4=SYSTEM";
|
||||
--disable-tinycthread) options="$options -DBRLCAD_TINYCTHREAD=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";
|
||||
@@ -162,6 +174,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";
|
||||
@@ -170,9 +186,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;;
|
||||
@@ -186,6 +202,10 @@ do
|
||||
shift;;
|
||||
--disable-step-class-libraries) options="$options -DBRLCAD_SC=SYSTEM";
|
||||
shift;;
|
||||
--enable-gecode) options="$options -DBRLCAD_GECODE=BUNDLED";
|
||||
shift;;
|
||||
--disable-gecode) options="$options -DBRLCAD_GECODE=SYSTEM";
|
||||
shift;;
|
||||
--enable-vds) options="$options -DBRLCAD_VDS=BUNDLED";
|
||||
shift;;
|
||||
--disable-vds) options="$options -DBRLCAD_VDS=SYSTEM";
|
||||
@@ -198,13 +218,9 @@ do
|
||||
shift;;
|
||||
--disable-gdiam) options="$options -DBRLCAD_GDIAM=SYSTEM";
|
||||
shift;;
|
||||
--enable-proj4) options="$options -DBRLCAD_PROJ4=BUNDLED";
|
||||
--enable-bullet) options="$options -DBRLCAD_BULLET=BUNDLED";
|
||||
shift;;
|
||||
--disable-proj4) options="$options -DBRLCAD_PROJ4=SYSTEM";
|
||||
shift;;
|
||||
--enable-gdal) options="$options -DBRLCAD_GDAL=BUNDLED";
|
||||
shift;;
|
||||
--disable-gdal) options="$options -DBRLCAD_GDAL=SYSTEM";
|
||||
--disable-bullet) options="$options -DBRLCAD_BULLET=SYSTEM";
|
||||
shift;;
|
||||
--prefix=*) inputstr=$1;
|
||||
options="$options -DCMAKE_INSTALL_PREFIX=${inputstr#--prefix=}";
|
||||
|
||||
@@ -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
|
||||
@@ -132,9 +8,7 @@ set(G_BENCHMARK_MODELS
|
||||
)
|
||||
|
||||
set(G_SAMPLE_MODELS
|
||||
aet.asc
|
||||
axis.asc
|
||||
bearing.asc
|
||||
boolean-ops.asc
|
||||
castle.asc
|
||||
cornell.asc
|
||||
@@ -143,7 +17,6 @@ set(G_SAMPLE_MODELS
|
||||
crod.asc
|
||||
cube.asc
|
||||
demo.asc
|
||||
die.asc
|
||||
galileo.asc
|
||||
goliath.asc
|
||||
havoc.asc
|
||||
@@ -154,7 +27,6 @@ set(G_SAMPLE_MODELS
|
||||
pic.asc
|
||||
pinewood.asc
|
||||
prim.asc
|
||||
rounds.asc
|
||||
tank_car.asc
|
||||
terra.asc
|
||||
toyjeep.asc
|
||||
@@ -163,7 +35,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,60 +79,23 @@ 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
|
||||
db.php
|
||||
include/ctype.inc
|
||||
include/debug.inc
|
||||
include
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
title {Untitled BRL-CAD Database}
|
||||
units mm
|
||||
put {xyzringtrc.s} tgc V {0.31168735027313232421875 0.31356084346771240234375 0.2343517243862152099609375} H {-0.02296111360192298889160156 -0.02476786263287067413330078 0.03948847576975822448730469} A {-0.003937630914151668548583984 -0.02411045134067535400390625 -0.01741208322346210479736328} B {0.02662250958383083343505859 -0.01068659685552120208740234 0.008777192793786525726318359} C {-3.937628207495436072349548E-05 -0.0002411044843029230833053589 -0.0001741207961458712816238403} D {0.0002662249607965350151062012 -0.0001068659257725812494754791 8.77717902767471969127655E-05}
|
||||
put {viewdirtrc.s} tgc V {0.08660250157117843627929688 0.08660250157117843627929688 0.08660250157117843627929688} H {-0.07794228941202163696289062 -0.07794228941202163696289062 -0.07794228941202163696289062} A {0 0.02828427031636238098144531 -0.02828427031636238098144531} B {0.03265986219048500061035156 -0.01632993109524250030517578 -0.01632993109524250030517578} C {0 0.000212132028536871075630188 -0.000212132028536871075630188} D {0.0002449489838909357786178589 -0.0001224744919454678893089294 -0.0001224744919454678893089294}
|
||||
put {twistpanel.r} comb region yes tree {l twistpanel.c}
|
||||
attr set {twistpanel.r} {color} {232/198/232} {shader} {glass {tr 0.6}} {region} {R} {region_id} {1000} {material_id} {1} {los} {100}
|
||||
put {xyzringcut.c} comb region no tree {- {- {- {- {- {- {- {- {- {- {l ringxyztor.s} {l cut0.s}} {l cut1.s}} {l cut2.s}} {l cut4.s}} {l xrcc.s}} {l yrcc.s}} {l zrcc.s}} {l viewdirrcc.s}} {l xyzcutrcc.s}} {l xyzringtrc.s}}
|
||||
put {viewdirrcc.s} tgc V {0.779421329498291015625 0.779421329498291015625 0.779421329498291015625} H {-0.6928203105926513671875 -0.6928203105926513671875 -0.6928203105926513671875} A {0 0.007071067579090595245361328 -0.007071067579090595245361328} B {0.008164965547621250152587891 -0.004082482773810625076293945 -0.004082482773810625076293945} C {0 0.007071067579090595245361328 -0.007071067579090595245361328} D {0.008164965547621250152587891 -0.004082482773810625076293945 -0.004082482773810625076293945}
|
||||
put {twistpanel.c} comb region no tree {- {- {- {l twistrcc.s} {l twisttor.s}} {l twisttrc.s}} {l viewdirrcc.s}}
|
||||
put {ringxytor.s} tor V {0 0 0} H {0 0 1} r_a 0.5 r_h 0.009999999776482582092285156
|
||||
put {twistring.r} comb region yes tree {l twistring.c}
|
||||
attr set {twistring.r} {color} {232/198/232} {shader} {mirror {tr .1 re 0.4}} {region} {R} {region_id} {1000} {material_id} {1} {los} {100}
|
||||
put {xyringtrc.s} tgc V {0.3913685381412506103515625 0.3006020486354827880859375 -0.0009004921885207295417785645} H {-0.03143119439482688903808594 0.04401883110404014587402344 -0.0006720747915096580982208252} A {0.02089671231806278228759766 0.01464617997407913208007812 -0.01800444535911083221435547} B {-0.01446941774338483810424805 -0.01072130445390939712524414 -0.02551533468067646026611328} C {0.0002089670742861926555633545 0.0001464617671445012092590332 -0.0001800443860702216625213623} D {-0.0001446941751055419445037842 -0.0001072130180546082556247711 -0.0002551533398218452930450439}
|
||||
put {xyzcutrcc.s} arb8 V1 {0.285196959972381591796875 0.223926544189453125 0.2792418301105499267578125} V2 {0.3270788453519344329833984 0.2655878327786922454833984 0.2198253460228443145751953} V3 {0.3691307827830314636230469 0.3075636327266693115234375 0.2788994473521597683429718} V4 {0.3272488489747047424316406 0.2659022919833660125732422 0.3383159413933753967285156} V5 {0.2260562554001808166503906 0.2832767628133296966552734 0.2791691728780278936028481} V6 {0.2679381202906370162963867 0.3249380290508270263671875 0.2197526805102825164794922} V7 {0.3099901042878627777099609 0.366913974285125732421875 0.2788267984578851610422134} V8 {0.2681080885231494903564453 0.3252525255084037780761719 0.3382433503866195678710938}
|
||||
put {xyringcut.c} comb region no tree {- {- {- {- {- {- {- {- {- {l ringxytor.s} {l cut0.s}} {l cut1.s}} {l cut3.s}} {l xrcc.s}} {l yrcc.s}} {l zrcc.s}} {l ringxyztor.s}} {l xycutrcc.s}} {l xyringtrc.s}}
|
||||
put {testdisks.c} comb region no tree {u {- {- {- {l xyzrcc.s} {l cut0.s}} {l cut1.s}} {l cut2.s}} {- {- {- {- {- {l xyrcc.s} {l cut0.s}} {l cut1.s}} {l cut2.s}} {l cut3.s}} {l cut0.s}}}
|
||||
put {twistring.c} comb region no tree {u {- {- {l twisttor.s} {l twistcut.s}} {l twisttrc.s}} {l twisttrc.s}}
|
||||
put {halfplane.s} half N {0 0 1} d -0.536277353763580322265625
|
||||
put {halfplane.r} comb region yes tree {l halfplane.s}
|
||||
attr set {halfplane.r} {color} {255/255/255} {shader} {stack {{phong {sp 0.05 di 0.95}} }} {region} {R} {region_id} {1002} {material_id} {1} {los} {100}
|
||||
put {twisttor.s} tor V {0.449999988079071044921875 0.449999988079071044921875 0.449999988079071044921875} H {-0.577350269189625731058868 -0.577350269189625731058868 -0.577350269189625731058868} r_a 0.1500000016475442066177237 r_h 0.01000000030444709100962974
|
||||
put {twistcut.s} part V {0.3950000000000000177635684 0.3850000000000000088817842 0.5649999999999999467092948} H {0.0003640000000000000114804 -0.0003699999999999999946917462 -0.0005000000000000000104083409} r_v 0.02800000000000000058286709 r_h 0.02800000000000000058286709
|
||||
put {twisttrc.s} tgc V {0.37255561351776123046875 0.40711653232574462890625 0.57051956653594970703125} H {0.03641721233725547790527344 -0.03706122934818267822265625 -0.0005011741304770112037658691} A {0.01779515855014324188232422 0.01750466972589492797851562 -0.001385415205731987953186035} B {0.001156966434791684150695801 0.0007993413601070642471313477 0.02496042102575302124023438} C {0.0001779512967914342880249023 0.0001750463998178020119667053 -1.385413543175673112273216E-05} D {1.156978123617591336369514E-05 7.993325198185630142688751E-06 0.0002496042288839817047119141}
|
||||
put {xyzpanel.r} comb region yes tree {l xyzcut.c}
|
||||
attr set {xyzpanel.r} {color} {205/253/172} {shader} {glass {tr 0.6}} {region} {R} {region_id} {1003} {material_id} {1} {los} {100}
|
||||
put {twistrcc.s} tgc V {0.4472982883453369140625 0.4472982883453369140625 0.4472982883453369140625} H {0.005773502867668867111206055 0.005773502867668867111206055 0.005773502867668867111206055} A {0 -0.1060660183429718017578125 0.1060660183429718017578125} B {0.1224744841456413269042969 -0.06123724207282066345214844 -0.06123724207282066345214844} C {0 -0.1060660183429718017578125 0.1060660183429718017578125} D {0.1224744841456413269042969 -0.06123724207282066345214844 -0.06123724207282066345214844}
|
||||
put {xycutrcc.s} arb8 V1 {0.4098457992076873779296875 0.330240428447723388671875 -0.03679068386554718017578125} V2 {0.3675903864204883575439453 0.3863152638077735900878906 -0.03679068386160150305741467} V3 {0.3675903864204883575439453 0.3863152638077735900878906 0.03342260420322418212890625} V4 {0.4098457992100617008901509 0.3302404284445723536833839 0.03342260420322418212890625} V5 {0.3537709638476371765136719 0.2879850156605243682861328 -0.03679068386554718017578125} V6 {0.3115155547857284545898438 0.3440598426386713981628418 -0.03679068386160150305741467} V7 {0.3115155547857284545898438 0.3440598426386713981628418 0.03342260420322418212890625} V8 {0.3537709638476371765136719 0.2879850156605243682861328 0.03342260420322418212890625}
|
||||
put {cutdisks.c} comb region no tree {- {- {- {- {- {l disks.c} {l cut0.s}} {l cut1.s}} {l cut2.s}} {l cut3.s}} {l cut4.s}}
|
||||
put {twistcut.s.backu} ell V {0.3945335447788238525390625 0.383843958377838134765625 0.5655720233917236328125} A {0.03095294535160064697265625 -0.0002858481311704963445663452 -0.0002035317302215844392776489} B {0.0002871743054129183292388916 0.03095294535160064697265625 0.0002016565413214266300201416} C {0.0002016565558733418583869934 -0.0002035317156696692109107971 0.03095364384353160858154297}
|
||||
put {xyzring.r} comb region yes tree {u {l xyzringcut.c} {l xyzringtrc.s}}
|
||||
attr set {xyzring.r} {color} {230/253/215} {shader} {mirror {tr .1 re 0.4}} {region} {R} {region_id} {1005} {material_id} {1} {los} {100}
|
||||
put {viewdir.r} comb region yes tree {l viewdir.c}
|
||||
attr set {viewdir.r} {color} {253/227/198} {shader} {phong {tr .1 ri 1.5 sh 2}} {region} {R} {region_id} {1001} {material_id} {1} {los} {100}
|
||||
put {xypanel.r} comb region yes tree {l xycut.c}
|
||||
attr set {xypanel.r} {color} {178/221/243} {shader} {glass {tr 0.6}} {region} {R} {region_id} {1002} {material_id} {1} {los} {100}
|
||||
put {diagram.r} comb region no tree {u {u {u {l arrows.r} {l twistpanel.r}} {u {l twistring.r} {l xypanel.r}}} {u {u {l xyring.r} {l xyzpanel.r}} {u {l xyzring.r} {l viewdir.r}}}}
|
||||
put {viewdir.c} comb region no tree {u {l viewdirrcc.s} {- {- {- {l viewdirtrc.s} {l xrcc.s}} {l yrcc.s}} {l zrcc.s}}}
|
||||
put {arrows.r} comb region yes tree {l coordinates.c}
|
||||
attr set {arrows.r} {color} {217/217/254} {shader} {mirror {tr .1 re 0.4}} {region} {R} {region_id} {1001} {material_id} {1} {los} {100}
|
||||
put {xyring.r} comb region yes tree {u {l xyringcut.c} {l xyringtrc.s}}
|
||||
attr set {xyring.r} {color} {206/230/242} {shader} {mirror {tr .1 re 0.4}} {region} {R} {region_id} {1004} {material_id} {1} {los} {100}
|
||||
put {ground.s} ell V {0 0 -10000.08984375} A {10000 0 0} B {0 6.12303176911188629105709E-13 10000} C {0 -10000 6.12303176911188629105709E-13}
|
||||
put {xyzcut.c} comb region no tree {- {- {- {- {- {- {- {- {- {- {- {l xyzrcc.s} {l cut0.s}} {l cut1.s}} {l cut2.s}} {l cut4.s}} {l xrcc.s}} {l yrcc.s}} {l zrcc.s}} {l viewdirtrc.s}} {l viewdirrcc.s}} {l ringxyztor.s}} {l xyzringtrc.s}}
|
||||
put {ground.r} comb region yes tree {l ground.c}
|
||||
attr set {ground.r} {color} {255/255/255} {shader} {stack {{checker {b {192 192 192} s 8192.0}} {phong {sp 0.8 sh 4 em .5}} }} {region} {R} {region_id} {1001} {material_id} {1} {los} {100}
|
||||
put {xyzrcc.s} tgc V {0.005014000460505485534667969 -0.004998999647796154022216797 7.123547086408665851564592E-19} H {-0.009999999776482582092285156 0.009999999776482582092285156 0} A {-0.356000006198883056640625 -0.356000006198883056640625 0} B {0 0 0.5} C {-0.356000006198883056640625 -0.356000006198883056640625 0} D {0 0 0.5}
|
||||
put {ground.c} comb region no tree {l ground.s}
|
||||
put {disks2.c} comb region no tree {u {- {- {- {- {l xyzrcc.s} {l cut0.s}} {l cut1.s}} {l cut2.s}} {l xyrcc.s}} {- {- {- {l xyrcc.s} {l cut0.s}} {l cut1.s}} {l cut2.s}}}
|
||||
put {light.s} ell V {-98.451141357421875 103.03456878662109375 200.0417633056640625} A {14 0 0} B {0 14 0} C {0 0 14}
|
||||
put {light.r} comb region yes tree {l light.s}
|
||||
attr set {light.r} {color} {255/255/255} {shader} {light {a 270 d {1 0 0} s 16 v 0}} {region} {R} {region_id} {1002} {material_id} {1} {los} {100}
|
||||
put {xyrcc.s} tgc V {0 0 -0.004999999888241291046142578} H {0 0 0.009999999776482582092285156} A {0 -0.5 0} B {0.5 0 0} C {0 -0.5 0} D {0.5 0 0}
|
||||
put {xycut.c} comb region no tree {- {- {- {- {- {- {- {- {- {- {- {l xyrcc.s} {l cut0.s}} {l cut1.s}} {l cut3.s}} {l xrcc.s}} {l yrcc.s}} {l zrcc.s}} {l xyzrcc.s}} {l ringxytor.s}} {l viewdirtrc.s}} {l xyringtrc.s}} {l viewdirrcc.s}}
|
||||
put {disks.c} comb region no tree {u {- {l xyzrcc.s} {l xyrcc.s}} {l xyrcc.s}}
|
||||
put {rings.c} comb region no tree {u {l ringxytor.s} {l ringxyztor.s}}
|
||||
put {ztec.s} tgc V {0 0 1} H {0 0 0.1000000014901161193847656} A {0.02999999932944774627685547 0 0} B {0 0.02999999932944774627685547 0} C {0.0003000000142492353916168213 0 0} D {0 0.0003000000142492353916168213 0}
|
||||
put {ytec.s} tgc V {0 1 0} H {0 0.1000000014901161193847656 0} A {0.02999999932944774627685547 0 0} B {0 0 0.02999999932944774627685547} C {0.0003000000142492353916168213 0 0} D {0 0 0.0003000000142492353916168213}
|
||||
put {xtec.s} tgc V {1 0 0} H {0.1000000014901161193847656 0 0} A {0 0.02999999932944774627685547 0} B {0 0 0.02999999932944774627685547} C {0 0.0003000000142492353916168213 0} D {0 0 0.0003000000142492353916168213}
|
||||
put {zrcc.s} tgc V {0 0 0} H {0 0 1} A {0 -0.009999999776482582092285156 0} B {0.009999999776482582092285156 0 0} C {0 -0.009999999776482582092285156 0} D {0.009999999776482582092285156 0 0}
|
||||
put {yrcc.s} tgc V {0 0 0} H {0 1 0} A {0 0 0.009999999776482582092285156} B {0.009999999776482582092285156 0 0} C {0 0 0.009999999776482582092285156} D {0.009999999776482582092285156 0 0}
|
||||
put {xrcc.s} tgc V {0 0 0} H {1 0 0} A {0 0 -0.009999999776482582092285156} B {0 0.009999999776482582092285156 0} C {0 0 -0.009999999776482582092285156} D {0 0.009999999776482582092285156 0}
|
||||
put {cut4.s} arb8 V1 {1 1 1} V2 {1 -1 1} V3 {-1 -1 1} V4 {-1 1 1} V5 {-1 -1 -1} V6 {-1 -1 -1} V7 {-1 -1 -1} V8 {-1 -1 -1}
|
||||
put {cut3.s} arb8 V1 {1.010072231292724609375 1.0000178813934326171875 1.010089874267578125} V2 {1.010072231292724831419605 1.0000178813934326171875 -1.0000002384185791015625} V3 {-1.0000178813934326171875 -1.010072231292724609375 -1.0000002384185791015625} V4 {-1.0000178813934326171875 -1.010072231292724609375 1.01008987426757901317842} V5 {-1.0000178813934326171875 1.0000178813934326171875 -1.0000002384185791015625} V6 {-1.0000178813934326171875 1.0000178813934326171875 -1.0000002384185791015625} V7 {-1.0000178813934326171875 1.0000178813934326171875 -1.0000002384185791015625} V8 {-1.0000178813934326171875 1.0000178813934326171875 -1.0000002384185791015625}
|
||||
put {cut2.s} arb8 V1 {1 -1 -1.0051000118255615234375} V2 {1 1 -1.0051000118255615234375} V3 {1 1 -0.0051000118255615234375} V4 {1 -1 -0.0051000118255615234375} V5 {-1 -1 -1.0051000118255615234375} V6 {-1 1 -1.0051000118255615234375} V7 {-1 1 -0.0051000118255615234375} V8 {-1 -1 -0.0051000118255615234375}
|
||||
put {cut1.s} arb8 V1 {0 -1 -1} V2 {0 1 -1} V3 {0 1 1} V4 {0 -1 1} V5 {-1 -1 -1} V6 {-1 1 -1} V7 {-1 1 1} V8 {-1 -1 1}
|
||||
put {cut0.s} arb8 V1 {1 -1 -1} V2 {1 0 -1} V3 {1 0 1} V4 {1 -1 1} V5 {-1 -1 -1} V6 {-1 0 -1} V7 {-1 0 1} V8 {-1 -1 1}
|
||||
put {coordinates.c} comb region no tree {u {u {u {u {u {- {- {l xrcc.s} {l yrcc.s}} {l zrcc.s}} {- {- {l yrcc.s} {l xrcc.s}} {l zrcc.s}}} {- {- {l zrcc.s} {l xrcc.s}} {l yrcc.s}}} {l xtec.s}} {l ytec.s}} {l ztec.s}}
|
||||
put {ringxyztor.s} tor V {0 0 0} H {-0.7071067811865475727373109 0.7071067811865475727373109 0} r_a 0.4999999914428644998132256 r_h 0.009999999670806607177109271
|
||||
@@ -1,13 +0,0 @@
|
||||
#!/bin/sh
|
||||
rt -M -p50 -W \
|
||||
$*\
|
||||
aet.g\
|
||||
'diagram.r' \
|
||||
<<EOF
|
||||
viewsize 3.58095758486442e+00;
|
||||
orientation 4.58468551319667e-01 5.46381543126676e-01 5.36927647047512e-01 4.50535790606452e-01;
|
||||
eye_pt 2.16300884070308e+00 6.60866025843505e-01 3.68751836397137e-01;
|
||||
start 0; clean;
|
||||
end;
|
||||
|
||||
EOF
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
@@ -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
|
||||
|
||||
@@ -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.)
|
||||
|
||||
|
||||
@@ -1,35 +1,107 @@
|
||||
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
|
||||
)
|
||||
|
||||
foreach(im ${NIST_SAMPLE_MODELS})
|
||||
ADD_G_TARGET(${im} "BRL-CAD Geometry Models/Sample")
|
||||
endforeach(im ${NIST_SAMPLE_MODELS})
|
||||
macro(ADD_NIST_STEP_TARGET step_model folder)
|
||||
string(REGEX REPLACE "([0-9a-z]*).stp" "\\1" step_model_root "${step_model}")
|
||||
set(output_file ${bin_root}/${DATA_DIR}/db/${step_model_root}.g)
|
||||
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${step_model_root}.log)
|
||||
add_custom_command(
|
||||
OUTPUT ${output_file}
|
||||
COMMAND step-g -O ${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 ${output_file})
|
||||
set_target_properties(${step_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_NIST_STEP_TARGET step_model folder)
|
||||
|
||||
# Get our root path
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
set(bin_root "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
set(bin_root "${CMAKE_BINARY_DIR}")
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
|
||||
# The general pattern of the BRL-CAD build is to use CMAKE_CFG_INTDIR when
|
||||
# multi-configuration builds complicate the location of binaries. In this
|
||||
# case, however, we are using a generated script with a different mechanism
|
||||
# for handling this situation, and we need to update the executable paths
|
||||
# accordingly if they are configuration dependent.
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" rbin_root "${bin_root}")
|
||||
else(CMAKE_CONFIGURATION_TYPES)
|
||||
set(rbin_root "${bin_root}")
|
||||
endif(CMAKE_CONFIGURATION_TYPES)
|
||||
|
||||
# Use the CMake executable to figure out if we need an extension
|
||||
get_filename_component(EXE_EXT "${CMAKE_COMMAND}" EXT)
|
||||
|
||||
|
||||
macro(ADD_NIST_3DM_TARGET rhino_model folder)
|
||||
set(CMD_EXEC ${rbin_root}/${BIN_DIR}/3dm-g${EXE_EXT})
|
||||
string(REGEX REPLACE "([0-9a-z]*).3dm" "\\1" rhino_model_root "${rhino_model}")
|
||||
set(output_file ${rbin_root}/${DATA_DIR}/db/${rhino_model_root}.g)
|
||||
set(log_file ${CMAKE_CURRENT_BINARY_DIR}/${rhino_model_root}.log)
|
||||
set(STDOUT_LOG "${log_file}")
|
||||
set(STDERR_LOG "${log_file}")
|
||||
set(CMD_ARGS "-o \"${output_file}\" \"${CMAKE_CURRENT_SOURCE_DIR}/${rhino_model}\"")
|
||||
configure_file(${BRLCAD_CMAKE_DIR}/builddir_cmd.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/3dm-g.cmake @ONLY)
|
||||
set(output_file ${bin_root}/${DATA_DIR}/db/${rhino_model_root}.g)
|
||||
add_custom_command(
|
||||
OUTPUT ${output_file}
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/3dm-g.cmake
|
||||
DEPENDS 3dm-g ${CMAKE_CURRENT_SOURCE_DIR}/${rhino_model}
|
||||
)
|
||||
add_custom_target(${rhino_model_root}.g ALL DEPENDS ${output_file})
|
||||
set_target_properties(${rhino_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_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})
|
||||
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${BUILT_MODELS}")
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${LOG_FILES}")
|
||||
|
||||
CMAKEFILES(
|
||||
${NIST_SAMPLE_MODELS}
|
||||
CMakeLists.txt
|
||||
README
|
||||
pdf/1.pdf
|
||||
pdf/2.pdf
|
||||
pdf/3.pdf
|
||||
pdf/4.pdf
|
||||
pdf/5.pdf
|
||||
pdf/6.pdf
|
||||
pdf/7-10_assem.pdf
|
||||
pdf/7.pdf
|
||||
pdf/8.pdf
|
||||
pdf/9.pdf
|
||||
pdf/10.pdf
|
||||
pdf/11.pdf
|
||||
)
|
||||
pdf
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
@@ -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}}}
|
||||
@@ -1,17 +1,13 @@
|
||||
verbose_add_subdirectory(doc docbook)
|
||||
if(BRLCAD_EXTRADOCS)
|
||||
verbose_add_subdirectory(doc docbook)
|
||||
else(BRLCAD_EXTRADOCS)
|
||||
CMAKEFILES(docbook)
|
||||
endif(BRLCAD_EXTRADOCS)
|
||||
|
||||
verbose_add_subdirectory(doc html)
|
||||
verbose_add_subdirectory(doc legal)
|
||||
|
||||
CMAKEFILES(
|
||||
parsers/bison_to_lemon.txt
|
||||
parsers/flex_to_re2c.txt
|
||||
parsers/templates/CMakeLists.txt
|
||||
parsers/templates/main.c
|
||||
parsers/templates/main.h
|
||||
parsers/templates/parser.lemon
|
||||
parsers/templates/scanner.perplex
|
||||
parsers/writing_perplex_lemon_parsers.txt
|
||||
)
|
||||
CMAKEFILES(parsers)
|
||||
|
||||
set(documentation_DATA
|
||||
IDEAS
|
||||
@@ -26,12 +22,12 @@ set(documentation_DATA
|
||||
README.Windows
|
||||
TODO.BREP
|
||||
TODO.shaded_displays
|
||||
anim.txt
|
||||
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 +37,6 @@ set(documentation_DATA
|
||||
irprep.tr
|
||||
mater.txt
|
||||
matrix.txt
|
||||
pre_BRL-CAD.bib
|
||||
)
|
||||
ADD_DOC(documentation_DATA ".")
|
||||
|
||||
@@ -211,10 +206,13 @@ set(documentation_mged_old_DATA
|
||||
mged/wm-prims.ps
|
||||
mged/wm-tube.ps
|
||||
mk.tr
|
||||
movie.txt
|
||||
old-mged.tr
|
||||
pkg.tr
|
||||
regions.txt
|
||||
rounding.txt
|
||||
sun.txt
|
||||
tube.txt
|
||||
tool_categories.txt
|
||||
ecosystem.dot
|
||||
)
|
||||
@@ -224,44 +222,15 @@ 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
|
||||
cmake_vars.txt
|
||||
csv_to_comgeom.txt
|
||||
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
|
||||
|
||||
@@ -15,7 +15,7 @@ familiar with the project.
|
||||
|
||||
* Render some pictures using rt and rtedge
|
||||
|
||||
* Perform basic geometric analysis using rtarea, rtweight, and gqa
|
||||
* Perform basic geometric analysis using rtarea, rtweight, and g_qa
|
||||
|
||||
* Write a procedural geometry tool (see examples in src/proc-db)
|
||||
|
||||
|
||||
@@ -86,7 +86,8 @@ testing tool for TCP implementers via Network Working Group RFC 2398.
|
||||
This product does not yet exist but is a long term goal. It's
|
||||
basically several of the core libraries form BRL-CAD's geometry
|
||||
modeling kernel including the present libbu, libbn, librt, libwdb,
|
||||
liboptical, and the ray-trace interface application back-end.
|
||||
liboptical, libmultispectral, and the ray-trace interface application
|
||||
back-end.
|
||||
|
||||
This modeling kernel provides fundamental geometric representation,
|
||||
ray-trace analysis, and geometric processing capabilities via a
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -42,20 +42,3 @@ compiled as libpng.so). If this happens, it likely indicates a problem
|
||||
with the CMake build logic and should be reported as a bug - you may also
|
||||
need to install a shared version of the library. Another possibility
|
||||
would be to add -mipure-text to the linker flags.
|
||||
|
||||
OpenIndiana
|
||||
-----------
|
||||
|
||||
To build with gcc and CMake on OpenIndiana, you need to install the
|
||||
following packages:
|
||||
|
||||
pkg install pkg:/developer/gcc-7
|
||||
pkg install pkg:/developer/build/cmake
|
||||
pkg install pkg:/developer/versioning/subversion
|
||||
pkg install pkg:/system/header
|
||||
pkg install pkg:/developer/lexer/flex
|
||||
|
||||
(Note that gcc-7 building doesn't work as of 2017-08-23 - the above
|
||||
install list is a starting point, but the repo currently doesn't
|
||||
build and isn't close to building. It may be an older gcc would
|
||||
have better luck...)
|
||||
|
||||
@@ -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
|
||||
@@ -83,15 +43,9 @@ BRL-CAD on Windows will generate over 800 of them) and a large list of
|
||||
targets will appear. To build everything look for a target named
|
||||
ALL_BUILD. Start compiling that target.
|
||||
|
||||
Once compilation is successfully complete, you can find the compiled
|
||||
executables in a 'bin' directory in your build directory. For
|
||||
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
|
||||
capable of installing BRL-CAD.
|
||||
Once compilation is successfully complete, 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!!!)
|
||||
-----
|
||||
|
||||
@@ -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.)
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
Date: Fri, 30 Oct 87 3:58:14 EST
|
||||
From: Phil Dykstra <phil@BRL.ARPA>
|
||||
Subject: Re: Animation querry.
|
||||
|
||||
I have been meaning to put a few notes together about animation in
|
||||
BRL-CAD for some time now. Your message presses the point so here's
|
||||
a really quick basic overview. Note that animation control is
|
||||
still very early and experimental. Don't be surprised if much of
|
||||
it changes in the future.
|
||||
------
|
||||
|
||||
The earliest form of animation was just changing the viewpoint.
|
||||
So that RT could ray trace the "current" MGED view, a -M flag was
|
||||
added which tells RT to read the viewing matrix from stdin.
|
||||
This matrix is written on six lines in the form:
|
||||
|
||||
viewsize
|
||||
xpos ypos zpos
|
||||
[4x4 rotation matrix, 4 elements per line]
|
||||
|
||||
Such data can be saved along with an RT shell script by the "saveview"
|
||||
command in MGED. To get just this data (i.e. without the shell script),
|
||||
the "savekey" command can be used. Thus one can save a string of
|
||||
viewpoint keyframes via "savekey." ["Times" can also be added to
|
||||
the keyframes for the purposes of some interpolation programs.]
|
||||
|
||||
Several tools were written (not in the distribution) which generate
|
||||
sequences of such views, interpolate a set a keyframes, etc.
|
||||
|
||||
The "rmats" command was added to allow a file of these views to be
|
||||
read in to MGED so you could watch the keyframes go by. Feeding the
|
||||
same data to RT (via the -M flag) computes an image for each view.
|
||||
The views either go to the frame buffer, or if an output filename
|
||||
is given, they go into files with frame number suffixes.
|
||||
|
||||
Animation previews are typically made via low resolution ray traces,
|
||||
composited into one large image via "pixtile," and viewed on a frame
|
||||
buffer via "fbanim" (preferably one with hardware pan and zoom).
|
||||
|
||||
Later we wished to articulate the models themselves, so a command
|
||||
script language was created for RT. These are also fed to RT
|
||||
via the -M flag. RT figures out whether it is given the old form
|
||||
above or a real script. An animation description script contains
|
||||
transformation matrices to be applied to the model tree. A simple
|
||||
one might look like:
|
||||
|
||||
start 42;
|
||||
clean;
|
||||
anim frob/nitz matrix rmul
|
||||
1 0 0 1
|
||||
0 1 0 2
|
||||
0 0 1 0
|
||||
0 0 0 0;
|
||||
end;
|
||||
etc.
|
||||
|
||||
start - says to start frame number 42.
|
||||
clean - make RT clean up after itself (this may not be needed any more...).
|
||||
anim - says to apply an matrix animation to the arc connecting frob to
|
||||
nitz. The type of matrix operation is a right multiply (choices
|
||||
include right or left multiply, replace, or reroot (i.e. world
|
||||
coordinates)).
|
||||
end - tells it to go ahead and shoot this frame.
|
||||
|
||||
Eventually there will be things besides "matrix" animations to allow
|
||||
material properties etc. to be animated.
|
||||
|
||||
Various outboard tools generate motions, merge animation scripts
|
||||
together, allow the previewing/editing of motions, etc. For the
|
||||
most part these tools are sufficiently ad hoc and experimental
|
||||
that we aren't giving any of them away yet. Next year some time....
|
||||
|
||||
-------
|
||||
I didn't explain any of it in much detail, but hopefully it
|
||||
gives you an overview. One of these days we will write some
|
||||
more about it - like when we start including some motion tools.
|
||||
|
||||
==============================
|
||||
Date: Fri, 30 Oct 87 16:42:14 EST
|
||||
From: Phil Dykstra <phil@BRL.ARPA>
|
||||
Subject: Re: Animation querry.
|
||||
|
||||
Here's a bit more about the matrix operations available in RT
|
||||
animation scripts.
|
||||
-----
|
||||
|
||||
RT Matrix Animation Operations:
|
||||
==============================
|
||||
|
||||
In BRL-CAD, matrices are handled in their usual mathematical form
|
||||
(the transpose of the Newman and Sproull "computer graphics form").
|
||||
That is, a matrix looks like this:
|
||||
|
||||
r1 r2 r3 dx
|
||||
r4 r5 r6 dy
|
||||
r7 r8 r9 dz
|
||||
0 0 0 1/s
|
||||
|
||||
Points are *column* vectors, so a point is transformed by:
|
||||
|
||||
newpoint = Matrix * oldpoint;
|
||||
|
||||
Thus the world coordinate system is on the "left" end of a stack of
|
||||
matrix operations; the local coordinate system being that of the point
|
||||
on the extreme right.
|
||||
|
||||
In walking a model tree (such as "prep'ing" the model for ray tracing),
|
||||
each arc crossed from root to leaf normally gets its matrix multiplied on
|
||||
the right side of the current matrix stack[1]. Rigid body articulations
|
||||
of a model can then be described by changing or adding matrices at the
|
||||
appropriate points in this stack.
|
||||
|
||||
The matrix animation operations currently recognized by RT are:
|
||||
|
||||
rstack replace the entire stack up to this point
|
||||
rarc replace the matrix on the specified arc
|
||||
rboth replace the entire stack and the arc matrix
|
||||
rmul arc = arc * Matrix
|
||||
lmul arc = Matrix * arc
|
||||
|
||||
The path specifying where in the model tree the operation is to
|
||||
be applied can either be an absolute path, e.g.
|
||||
|
||||
/body/left/arm/hand
|
||||
|
||||
which would affect the arc between the left arm of body and the hand
|
||||
(note that hand need not be a leaf), or it can be a "wildcard", e.g.
|
||||
|
||||
arm/hand
|
||||
|
||||
would mean the arc between arm and hand anywhere in the model tree, i.e.
|
||||
it is not restricted to the left one as above. Finally a wildcard like
|
||||
|
||||
arm
|
||||
|
||||
means the arc before any node called arm.
|
||||
|
||||
-------------------------
|
||||
[1] It is interesting to note that our "right multiply" operation
|
||||
corresponds exactly to the SGI Iris multmatrix() command. The later
|
||||
pre-multiplies the matrix stack, but the matrix stack post-multiplies
|
||||
any points being transformed! In fact, if one looks at the Iris at the
|
||||
geometry engine level, one finds that it works with matrices in the
|
||||
usual mathematical form - the gl2 library transposes them in and out of
|
||||
N&S form.
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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?
|
||||
@@ -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)
|
||||
-----------------
|
||||
|
||||
|
||||
@@ -47,14 +47,12 @@ add_subdirectory(articles)
|
||||
add_subdirectory(books)
|
||||
add_subdirectory(lessons)
|
||||
add_subdirectory(presentations)
|
||||
add_subdirectory(resources)
|
||||
add_subdirectory(specifications)
|
||||
add_subdirectory(system)
|
||||
|
||||
CMAKEFILES(README fop.xconf.in log4j.properties)
|
||||
CMAKEFILES(README fop.xconf.in log4j.properties resources)
|
||||
CMAKEFILES(README.DB_authors_notes)
|
||||
CMAKEFILES(css/brlcad.css)
|
||||
CMAKEFILES(CMakeLists.txt)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
@@ -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 |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |