IRC log for #brlcad on 20080514

00:10.45 Maloeran That's kind of nice. My friend messed up completely while connecting the ends of an ethernet cable, 4 of the 8 cables are mixed up, and the ethernet cable still works!... with a packet drop rate of 15%
00:11.45 Maloeran More specifically, it only works with the ethernet of this dual-quad-xeon, all other computers refuse to work with the cable
00:14.08 brlcad that's messed up
00:14.39 brlcad presumably a gigE connection?
00:14.57 brlcad since it allows for bidirectional cross-over
00:15.55 archivist ive had broken network cables limp along, probably helps if the switch/card can auto sense reversed cable as well
00:16.31 Maloeran Interesting. It's vaguely amusing that the cable does work, but with a packet drop rate of 15%
00:16.44 Maloeran I would have asumed the cable would either work or not at all
00:16.57 Maloeran assumed*
00:33.39 *** join/#brlcad SWPadnos_ (n=Me@dsl107.esjtvtli.sover.net)
01:24.00 CIA-21 BRL-CAD: 03brlcad * r31083 10/brlcad/trunk/src/mged/cmd.c: remove dead code related to savedit and get (which is in libged/wdb_obj)
01:25.24 CIA-21 BRL-CAD: 03brlcad * r31084 10/brlcad/trunk/src/mged/cmd.h: remove comment for f_list
01:27.04 yukonbob Maloeran: maybe the send/receive are on the same wire, but it's either poorly connected or(/and) not wired to T569-A specs, which have specfic pairs designated to be connected in a certain order...
01:27.43 yukonbob *T568-A -- not 569
01:52.09 *** join/#brlcad Twingy (n=justin@74.92.144.217)
01:53.11 PrezKennedy hey... anyone know where i can find a compiler that compiles perfect code just from what you tell it? i hate programming
01:54.20 PrezKennedy ah, found it
01:54.23 PrezKennedy good night!
01:55.13 *** join/#brlcad pacman87 (n=timothy@pool-71-164-238-31.dllstx.fios.verizon.net)
01:59.15 pacman87 i'm back
02:19.18 CIA-21 BRL-CAD: 03brlcad * r31085 10/brlcad/trunk/src/mged/ (cmd.c cmd.h setup.c): move the command table to setup along with cmd_setup so that it may be static. made it obvious that there were a slew of unnecessary decls that could be removed too.
02:40.40 starseeker_ PrezKennedy: Not perfect, no - the closest known tool is called the grad student
02:44.11 Maloeran PrezKennedy, I find that gas or any other assembler can produce fairly perfect code
02:45.01 Maloeran Though that may also depend of the programmer
02:58.57 starseeker_ Whoops, I lied - it looks like mged is OK with the new nirt code after all, once I rebuild it correctly *cough*
02:59.51 starseeker_ getting double printing...
02:59.53 starseeker_ hmm...
03:01.48 starseeker_ Oh, good I didn't lie - it's busted in a different way
03:01.49 starseeker_ phew
03:06.07 *** part/#brlcad pacman87 (n=timothy@pool-71-164-238-31.dllstx.fios.verizon.net)
03:07.06 CIA-21 BRL-CAD: 03starseeker * r31086 10/brlcad/trunk/src/nirt/if.c: Whoops - r_exit, not r_entry, should be preserved for gap
03:19.35 *** join/#brlcad pacman87 (n=Timothy@pool-71-164-238-31.dllstx.fios.verizon.net)
03:30.24 CIA-21 BRL-CAD: 03brlcad * r31087 10/brlcad/trunk/src/mged/cmd.c: reorder to remove need for decls
03:34.14 yukonbob brlcad: ping
03:34.33 yukonbob is there a way to trace the assignment of a var (in C) w/ gdb?
03:35.06 yukonbob sees breakpoints, and "collect", but I was hoping for somethin more automagic...
03:35.34 yukonbob *something
03:41.22 yukonbob sees (?) breakpoints might be more powerfull than he thought...
03:45.27 CIA-21 BRL-CAD: 03brlcad * r31088 10/brlcad/trunk/src/mged/setup.c: static -> HIDDEN
03:46.56 CIA-21 BRL-CAD: 03brlcad * r31089 10/brlcad/trunk/src/mged/cmd.c: tighten the _WIN32 block on % so it'll at least provide help
03:49.20 yukonbob loads up gdb into xemacs...
04:28.55 brlcad yukonbob: pong
04:28.59 brlcad yes, you can set a watch
04:31.49 yukonbob brlcad: hey -- I'm trying to solve a Segment Violation -- I can see what ptr is being used uninitialized -- I need to find out when/where this is happening...
04:32.27 yukonbob is getting a bit of ahandel w/ xemacs/gdb (read: it's awesome), but I haven't developed good gdb-fu yet ;)
04:45.58 louipc yukonbob: woot xemacs
04:54.58 yukonbob louipc: indeed, indeed.
04:55.12 yukonbob w00t screen, too :)
05:40.30 CIA-21 BRL-CAD: 03brlcad * r31090 10/brlcad/trunk/ (include/bu.h src/libbu/parse.c): make the input string of bu_shader_to_tcl_list() be const, make a copy so it can still insert the nulls as a separator but just still don't modify the original
07:01.19 *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch)
07:01.35 *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch)
07:37.28 *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch)
07:50.56 *** join/#brlcad dtidrow (n=dtidrow@c-69-255-182-248.hsd1.va.comcast.net)
08:23.00 CIA-21 BRL-CAD: 03brlcad * r31091 10/brlcad/trunk/src/libbu/vls.c: move the (unused) HAVE_SHELL_ESCAPE logic from rt_split_cmd() on over into bu_argv_from_string() so that rt_split_cmd() can be marked deprecated
08:25.07 CIA-21 BRL-CAD: 03brlcad * r31092 10/brlcad/trunk/src/libbu/getopt.c: match the header prototype, char *[]
08:26.33 CIA-21 BRL-CAD: 03brlcad * r31093 10/brlcad/trunk/src/ (remrt/remrt.c remrt/rtsrv.c tab/tabinterp.c tab/tabsub.c): convert from rt_split_cmd to bu_argv_from_string
08:28.23 CIA-21 BRL-CAD: 03brlcad * r31094 10/brlcad/trunk/ (doc/deprecation.txt include/raytrace.h src/librt/cmd.c): formally deprecate rt_split_cmd(), callers should now use bu_argv_from_string() instead
08:55.41 CIA-21 BRL-CAD: 03brlcad * r31095 10/brlcad/trunk/ (8 files in 2 dirs): make the new ged functions all use const char **argv's so callers can be sure the library doesn't modify their data
09:00.14 CIA-21 BRL-CAD: 03brlcad * r31096 10/brlcad/trunk/src/mged/ (17 files):
09:00.15 CIA-21 BRL-CAD: major constification of all the converted commands as well as those they relate
09:00.15 CIA-21 BRL-CAD: to or indirectly call. ended up needing to make a heck of a lot more const than
09:00.15 CIA-21 BRL-CAD: expected. add the start of a new 'generic' mged command parser for the new ged
09:00.16 CIA-21 BRL-CAD: commands (unused but stubbed).
09:47.08 *** join/#brlcad archivist_emc (n=archivis@host81-149-119-172.in-addr.btopenworld.com)
11:01.30 *** join/#brlcad thing0 (n=ric@123.208.207.48)
11:36.59 *** join/#brlcad thing1 (n=ric@203-59-26-22.perm.iinet.net.au)
11:41.51 *** join/#brlcad d_rossberg (n=rossberg@bz.bzflag.bz)
12:20.27 brlcad yawns
12:21.05 CIA-21 BRL-CAD: 03starseeker * r31097 10/brlcad/trunk/src/nirt/ (nirt.c parse_fmt.c): Add missing break, add g to fmt options. Reading state file now works, mged still not happy.
12:21.06 *** join/#brlcad Axman6 (n=Axman6@pdpc/supporter/student/Axman6)
13:04.50 CIA-21 BRL-CAD: 03d_rossberg * r31098 10/brlcad/trunk/src/conv/3dm/3dm-g.cpp: made the code portable (using the standard string header)
13:10.18 CIA-21 BRL-CAD: 03d_rossberg * r31099 10/brlcad/trunk/src/conv/3dm/ (CMakeLists.txt Makefile.am): MS Windows port of 3dm-g with CMake build system generator
13:13.39 CIA-21 BRL-CAD: 03d_rossberg * r31100 10/brlcad/trunk/src/libsysv/CMakeLists.txt: we do not need neither redata.c nor regex.c too for MS Windows
13:15.05 yukonbob !cmake
13:16.55 CIA-21 BRL-CAD: 03d_rossberg * r31101 10/brlcad/trunk/src/other/tcl/CMakeLists.txt: revised, e.g. for CMake 2.6
13:20.46 CIA-21 BRL-CAD: 03d_rossberg * r31102 10/brlcad/trunk/misc/win32-msvc/CMakeLists.txt: include 3dm-g and require at least CMake 2.6
13:21.03 *** join/#brlcad thing0 (n=ric@123.208.126.231)
13:22.56 CIA-21 BRL-CAD: 03d_rossberg * r31103 10/brlcad/trunk/misc/win32-msvc/Dll/brlcad.def: added some additional functions to the list (e.g. mk_brep)
13:25.42 CIA-21 BRL-CAD: 03d_rossberg * r31104 10/brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt: fixed a problem with dependencies and linked libraries on MS Windows
13:29.27 CIA-21 BRL-CAD: 03d_rossberg * r31105 10/brlcad/trunk/src/ (3 files in 3 dirs): link and use openNURBS as a shared library
13:36.43 *** join/#brlcad docelic (n=docelic@78.134.193.146)
14:13.04 *** join/#brlcad prasad_ (n=psilva@70.108.244.218)
15:06.57 *** join/#brlcad docelic_ (n=docelic@78.134.196.19)
15:18.23 *** join/#brlcad pacman87 (n=Timothy@pool-71-164-238-31.dllstx.fios.verizon.net)
15:54.08 CIA-21 BRL-CAD: 03bob1961 * r31106 10/brlcad/trunk/src/tclscripts/mged/dbfindtree.tcl: Added a -l option to dbfindtree for returning the paths in a list.
16:14.03 *** join/#brlcad Elperion (n=Bary@p54877C4C.dip.t-dialin.net)
16:30.36 *** join/#brlcad vedge (n=vedge@205-237-251-204.ilesdelamadeleine.ca)
17:21.37 CIA-21 BRL-CAD: 03starseeker * r31107 10/brlcad/trunk/src/ (5 files in 4 dirs): Add mged support for new option, set default output for gap to nil to mimic old behavior by default.
17:22.00 *** join/#brlcad homovulgaris (i=homovulg@gateway/tor/x-67bc56efc1387c0a)
17:22.18 homovulgaris hi everybody :)
17:22.50 prasad_ hi dr nick
17:22.52 homovulgaris hi Sean, I was working on rewriting the wiki page and realised i should talk to you before writing too much arbitrary stuff :P
17:25.42 homovulgaris i have been looking at the prospect of implementing parametrics and constraints as two connected but distinct domains
17:26.48 brlcad howdy homovulgaris
17:26.51 brlcad wb
17:29.25 homovulgaris constraint definition, satisfaction and associated structures required in terms of constraint network is pretty involved in itself ;)
17:29.58 homovulgaris so i think we should look at the parametric implementation and constraint implementation quite a bit :)
17:30.22 homovulgaris because in the end it is the constraints which are going to be more productive ( like maintaining tangency for example)
17:30.51 homovulgaris of course parametrics is a necesary prerequisite for constraints to exist i believe
17:31.46 homovulgaris how i was visualising the flow was 1. you ask libpg to create a parameter based geometry ( line dependent on 2 points for example )
17:32.35 homovulgaris 2. libpg creates this structure in memory space and produces the necessary arguments to store it in .g file and asks librt to do it
17:33.43 homovulgaris 3. it creates a feed so that other parametric objects can subscribe to it so that they can automatically update themselves if this object changes and they are "interested" in it
17:34.00 homovulgaris I am still thinking about how exactly to store this information in .g files
17:34.59 archivist in any given context only x constraints are possible , let the user choose
17:35.59 homovulgaris that is true. i mean given n objects there are various constraint possibilities between them and the user has to choose which one to use.
17:36.48 homovulgaris basically .g has to support new data in terms of a) parameters related to each geometry and b) new non-geometric objects called constraints
17:38.13 homovulgaris a. further breaks down into 1. numerical parameter values, 2. pointers or reference to parents or geometry which it depends on 3. data about which feeds to subscribe to which i think is basically 2 itself
17:38.27 archivist if user attempts to over constrain, error and allow it to be driven not driving
17:41.29 homovulgaris mathematical definition of constraints is using a 3-tuple
17:41.31 homovulgaris basically 1. variables 2. domains and 3. relations
17:41.35 homovulgaris in our case this would be 1. geometry and parameters 2. range for parameters and 3. constraint type definition
17:41.37 homovulgaris what would be a good method for storage of such data in .g
17:41.41 homovulgaris or do u think it would be functional to store them in a different file ?
17:44.01 homovulgaris using attribute value system would obviously be a hack method as sean mentioned on the mailing list
17:44.08 homovulgaris so we indeed need to support two new data types in .g
17:44.52 homovulgaris one are parametric objects ( which are non-geometric but contain geometry inside them) and two constraint objects
17:46.20 homovulgaris archivist, in other systems ( catia for example) over constraining is generally not shown as an error but the user is notified by showing those set of geometry which is overconstrained in a different colour
17:46.55 archivist solidworks warns and says do you want this driven
17:46.57 homovulgaris so that the user can delete some other constraint and make it ok for example.
17:48.23 homovulgaris either ways constraint satisfaction is far away :) i am still tackling constraint definition ;)
18:23.41 brlcad homovulgaris: I agree .. constraints are really the end-user feature, and parametric equation support is sort of the underlying feature that supports it
18:45.49 homovulgaris hi brlcad, i mean parameters themselves can be an end-user feature like a sphere whose radius is a parameter which the user can vary.. but i think more funtional use would be in terms of constraints
18:48.58 homovulgaris my major concern is in terms of storage in .g
18:50.18 archivist some of my parts are driven by spreadsheets
18:53.17 archivist I dont like the external use of a spreadsheet, but do like the functionality
18:58.49 homovulgaris archivist: what do u use spreadsheets for ( :) i feel like a complete noob )
19:00.55 archivist I draw clocks, the gear parts are driven by a spredasheet to give thickness, module center hole dia and number of teeth, there are some calcs to get dimensions
19:01.29 archivist angles, outside dia
19:01.54 archivist and hidden construction lines
19:03.46 archivist so the calcs represent some british clock gear cutting standard
19:27.45 homovulgaris so how do u synchronise the data in spreadsheets and the geometry ? using scripts ?
19:38.15 *** join/#brlcad archivist_win (n=djc@host81-149-119-172.in-addr.btopenworld.com)
19:38.51 archivist fires up windaz and solidworks and irc....
19:40.47 archivist_win in a parts hierachy is a design table thats an excel spreadsheet (they use external fuctionality fom withing solidworks)
19:43.08 *** join/#brlcad dtidrow (n=dtidrow@c-69-255-182-248.hsd1.va.comcast.net)
19:44.03 archivist named columns refer to named dimensions in a part
19:44.30 archivist named rows refer to versions of the part
19:49.07 CIA-21 BRL-CAD: 03starseeker * r31108 10/brlcad/trunk/ (NEWS src/nirt/nirt.1 src/nirt/parse_fmt.c src/nirt/usrfmt.h): Add option to nirt that allows reporting of gaps, per request #1933724 - includes expansion of Query Ray panel in mged
19:50.07 archivist <PROTECTED>
19:50.56 homovulgaris archivist: hmm.. dassault.. they have something similar called design tables in catia too.. basically one design alternative per row
19:51.27 archivist dassault own solidworks as well
19:51.54 homovulgaris yeah.
19:51.57 homovulgaris whats dedendum ?
19:52.10 homovulgaris and module the single values at the bottom i mean ?
19:52.10 archivist root of tooth
19:52.29 archivist constants
19:52.54 homovulgaris hmm.. k
19:53.01 archivist leave a gap in the rows and its free space for the user
19:53.44 CIA-21 BRL-CAD: 03starseeker * r31109 10/brlcad/trunk/src/nirt/nirt.1: Add 'g' to man page for nirt
19:54.04 archivist I dont draw to absolute accuracy (not enough time)
20:04.49 homovulgaris :)
20:05.49 archivist there is a subdir there clock which has a web 3d of a design
20:06.13 archivist if you have windows (silly restrictions)
20:08.29 homovulgaris :( on linux .. will check it out when i am on windows ( note to self: this is why i should get my laptop repaired )
20:09.28 archivist I tried serving it on debian, no go, had to proxy to the winbox (wont be up 24/7)
20:23.18 *** part/#brlcad thing0 (n=ric@123.208.126.231)
20:32.06 brlcad homovulgaris: sorry for the sporadic input, busy day .. lots of comments pending :)
20:39.05 homovulgaris no probs :)
20:42.17 homovulgaris is this the final draft ? http://ftp.arl.army.mil/~mike/papers/brlcad5.0/newdb.html
20:47.18 homovulgaris and WOW.. mike muuss wrote ping
20:48.41 homovulgaris i guess he got that wherever he went inspite of being the architect of brl-cad ;)
20:52.57 CIA-21 BRL-CAD: 03bob1961 * r31110 10/brlcad/trunk/ (9 files in 4 dirs): Added make_name and make commands to libged.
20:55.13 brlcad homovulgaris: it's close to a final draft, but it's not 100% consistent with what was ultimately implemented. some minor idents are different, some features aren't implemented (like compression support)
20:56.08 brlcad the source is the reference, of course, librt being where the db i/o layer is implemented
20:56.13 homovulgaris k so that draft+code would be the best approach ?
20:57.04 brlcad the draft is a good starting point just for understanding the overall structure of a .g file -- as to what pieces you care about depends on how exactly the equations are persisted/stored
20:57.27 brlcad as attributes there is no need to modify the db format, it all happens in the library
20:57.54 brlcad as new object types, it depends which type and how robustly the modifications are added for the new non-geom objects
20:58.49 homovulgaris we are using machine independent .g files right ?
21:00.22 homovulgaris the way i was seeing it.. a non geometric parametric object basically contains geometry ( example a Line which connects two points)
21:00.58 CIA-21 BRL-CAD: 03starseeker * r31111 10/brlcad/trunk/src/nirt/nirt.c: Add logic to check for scripts in brlcad data directory (which doesn't exist yet) - may want to change this so local file with same name overrides global file?
21:01.08 brlcad yeah, v5 .g files are machine independent
21:01.30 homovulgaris so basically the PLIne is a non-geometric object which contains 1. the geometric object line 2. references to the two points indicating they are parents
21:01.34 brlcad v4 .g files are not, nobody should be using those (and you don't have to worry about backwards support for them)
21:02.23 CIA-21 BRL-CAD: 03bob1961 * r31112 10/brlcad/trunk/src/mged/qray.h: Removed extra double-quote from QRAY_FORMAT_NULL.
21:02.59 homovulgaris when we come to constrain objects which are non-geometric again, then they have the three types of data i mentioned earlier
21:03.05 brlcad reads the earlier comments to catch up
21:04.23 homovulgaris basically 1. variables 2. domains and 3. relations ..in our case this would be 1. geometry and parameters 2. range for parameters and 3. constraint type definition
21:05.10 homovulgaris the attribute system could work for storing the parameters but seems like a reverse method of storage.
21:05.50 homovulgaris for constraint objects i have to figure out the v5 database more i guess
21:06.00 brlcad you're not making it easy to catch up :P
21:06.32 homovulgaris sorry :P
21:09.01 homovulgaris basically there would be two types of new objects introduced
21:09.01 homovulgaris 1. parametric objects
21:09.02 homovulgaris 2. constraint objects
21:09.02 homovulgaris both of them are non-geometric in the present sense
21:11.29 brlcad to answer from earliery, don't think it's at all functional to store in a different file .. needs to be in the .g and the 'right way' is probably as new object types like you're suggesting
21:12.31 brlcad instead of "containing" geometry, it can simply reference the geometry it applies to
21:13.08 homovulgaris yeah i also felt that storing in a separate file is not exactly very functional
21:13.18 brlcad the danger worth avoiding is layering in YAGF that isn't associated with existing geometry being created
21:13.58 homovulgaris hmm..
21:15.08 brlcad the parameters are known values/objects/reference points if I'm not mistaken
21:16.27 homovulgaris most of the times
21:16.44 homovulgaris i mean at times they maybe some value of a property not already supported by the existing geometry representation
21:17.01 homovulgaris like if i want a point which is at a ratio 0.6 between two points
21:17.15 homovulgaris the value 0.6 is a parameter
21:17.36 homovulgaris but it is not part of the point object for example. but yes it is a known value
21:18.19 homovulgaris ok.. so in .g using a different object Header / flags we can denote the fact that it is a non-geometric object type ..
21:29.21 homovulgaris and in terms of workflow since u create geometry at the same time as constructing parameters , writing the parametric object type will also result in writing the corresponding geometry object into .g
21:29.27 homovulgaris while reading the .g file later we will have to take care of the association with non-existing geometry
21:29.32 homovulgaris and what about the feed system ( i mentioned earlier :) ) well basically parametrics would imply objects depending on other objects depending on other objects and so on.
21:29.37 homovulgaris so basically instead of keeping track of the whole chain of linkages, each parametric object basicaly starts a feed
21:29.42 homovulgaris and all the objects which are "interested" ( in other words dependent on it directly) subscribe to this feed.
21:29.47 homovulgaris so that if due to some reason geometry a gets updated, all its subscribers will get the news
21:29.48 homovulgaris and can update themselves
21:30.03 brlcad so say someone creates a sphere (sph1) with radius 10 at 0,0,0 .. then later wants to add a constraint (ct1) that the sphere remain tangent to the 0,0 XY plane -- I was thinking that the ct1 object would be a non-geom object that refers to it something akin to tangent(sph1, plane(0,0,0,0,0,1))
21:30.47 brlcad then resolving that tangency constraint, it'd resolve that the radius and/or position can still change, and adjust accordingly as edits to sph1 are made
21:32.51 brlcad the subscription/feed idea sounds reasonable, I could see it working like that or as a graph in memory (it still is a graph, just an implementation detail)
21:33.26 homovulgaris yeah basically a graph. but i think this implementation would be easier to maintain
21:34.16 homovulgaris and regarding the sphere tangency .. yep.. the ct1 object would basically have two parents or participants ( sph1 and the plane) and the condition between them tangency
21:34.34 brlcad one thing to think about will be how to keep the two separate yet also have an update/evaluate/resolve step
21:35.20 homovulgaris and the fact that the sphere can change 4 parameters here ( the three coordinates and the radius ) is because sph1 is an object which has been explicitly made using those parameters
21:35.27 brlcad where that example gets really tricky, though, is now say the object is not a sphere..
21:35.47 brlcad say it's a rotated elliptical toroid
21:36.05 brlcad if I can "preserve tangency" .. that's pretty darn hard
21:36.17 brlcad at least with the implicit representation
21:36.27 homovulgaris on the other hand imagine a parametric sphere sph2 which has the centre ( which is defined as a point on a line) and radius as the distance between two other points
21:37.01 homovulgaris so fundamentally the ranges over which sph2 can vary is very different from sph1 because it is defined differently
21:38.42 homovulgaris constraint satisfaction problems alll follow similar solution techniques once they have been formulated into a constraint network
21:38.50 brlcad I think what I'm getting at is how you can go about adding support for the 30+ existing primitives in a generalized manner
21:39.58 homovulgaris we will have one object type for each type of primitive
21:40.09 brlcad or if it can't really be easily generalized and libpg actually ends up needing to know about all of them
21:40.26 brlcad which is less than ideal for many reasons
21:40.39 brlcad have one object type for each type of primitive means what?
21:40.53 homovulgaris but since each of these primitives can themselves be defined implicitly in different ways
21:41.55 homovulgaris basically we will have a Point Object a Curve Object a Surface object
21:42.15 brlcad gah, see that gets back to replicating the geometry
21:43.08 brlcad that's really undesirable as the geometry information is already there in a compact well-behaved form
21:43.36 homovulgaris how much does brlcad use opennurbs ?
21:43.38 homovulgaris we wont be replicating the geometry
21:44.17 homovulgaris the kind of information i am talking about is not what is already there
21:44.35 brlcad it might come down to getting those pieces out of a given primitive perhaps, but those routines would have to be written
21:45.07 homovulgaris like for example a Point parametric object would simply be a reference to a line, ratio and then the reference to the line geometry object
21:45.12 brlcad opennurbs is presently only used for the brep object type, a new experimental/developmental primitive
21:45.21 homovulgaris so the new information we are storing are in terms of relationship we are not storing anywhere else
21:45.38 homovulgaris yeah i was reading about brep
21:46.02 homovulgaris how would csg and brep work together :)
21:46.29 brlcad and the idea that another student will be working on over the summer will be implementing a new *_brep() routine for each primitive to describe that primitive in the brep format using opennurbs
21:46.52 homovulgaris basically the new object types for the primitives i was talking about only store the parametric data ( which we do not have support for right now and hence do not store)
21:46.56 brlcad they work together as I can ask for the object in either format and evaluate accordingly
21:47.12 brlcad if you're ray-tracing, you'd want to use the implicit form, for example
21:47.21 homovulgaris k
21:47.40 brlcad if tessellating, you want to extract the brep, perform brep-on-brep csg evaluation, and tessellate the resulting evaluated brep
21:48.10 brlcad you have boundaries and surfaces with brep, but you don't with implicits
21:48.17 homovulgaris ok
21:48.47 brlcad but there are still parameterizable values with implicits that should/can/could work with this system
21:49.06 homovulgaris hmm.. never liked surface modelers.. :) sketchup for one :P
21:50.24 homovulgaris basically to support different primitives we would need different objects
21:50.26 brlcad e.g. if you completely ignore the brep work for starters, and say I have a blob of unioned and intersected torii .. and I want to constrain them to be tangent to some other object, say a box
21:51.18 homovulgaris of course brep and parametrics has nothing in common as of now :)
21:51.19 brlcad how do you forsee that working with that example?
21:52.20 homovulgaris hmm.. union and intersection will have to be implemented for parametrics
21:52.55 homovulgaris implemented in the sense stored
21:53.20 archivist one uses an axis/plane from any object for its reference in a constraint often
21:53.36 brlcad it's already stored
21:53.45 brlcad that is, it's available to you
21:53.55 homovulgaris so that the parametric system or constraint system can know that it is built using that particular operation.
21:53.55 homovulgaris how is the union / intersection currently stored in .g ?
21:54.14 brlcad it's a combination
21:54.36 homovulgaris if that is the case then the constraint would look something like tangency( box, torii_output) right
21:54.38 brlcad a combination object that refers to it's contituents by name and operator
21:54.58 homovulgaris so basically our parameters would depend on how the torii are defined
21:55.57 brlcad e.g. make tor1 tor2 .. tor100 torii then create a combination "comb1" that is tor1 union tor2 intersect tor3 union tor4 ... etc .. union tor100
21:56.07 homovulgaris so that variation would be in terms of the two radii of each torii..
21:56.27 brlcad and then as a user, I want to say "comb1 must remain tangent to tor101" for example
21:56.47 brlcad or box or whatever
21:57.30 homovulgaris basically in constraint satisfaction all you have to care about is ..what can you vary and how much can you vary it.
21:57.40 homovulgaris in this case lets say the box is fixed
21:57.52 brlcad sure
21:58.03 homovulgaris then you can vary the definition of each of these 100 torii
21:58.28 brlcad not really, combinations are rigid objects for all intensive purposes
21:59.16 brlcad you might allow scaling if it's not clamped, but otherwise we're talking even just how you align the shape and actually find the tangency point
21:59.17 homovulgaris so how do u want them to be tangent ?
21:59.26 homovulgaris by orientation change ?
21:59.27 brlcad s/the/a/
22:00.34 homovulgaris this basically would mean a datum geometry
22:01.18 homovulgaris by datum geometry i imply the fact that the combination is fundamentally non-parametric .. it has nothing the system can vary. so the only thing the system can do is translate/ rotate and scale
22:01.20 brlcad yes, basically by orientation .. it's finding that orientation+position that's the (really, really) hard part when dealing with the implicit form
22:02.00 brlcad i think i'm just convincing myself that it's really not feasible to perform that sort of constraint without a brep evaluation
22:02.23 homovulgaris :D
22:02.36 brlcad at best you could maybe do it for the primitives themselves
22:02.38 homovulgaris i think it would be feasible
22:02.43 homovulgaris this case i mean in general i am not sure
22:02.45 brlcad i'm still not hearing how though
22:02.52 brlcad even for this case
22:02.57 homovulgaris true
22:03.03 brlcad say you just have two torii
22:03.21 brlcad where one is just slightly shifted to the left/right and is subtracted
22:03.54 brlcad so you end up with a big "C" sliver on the outside and another on the inside facing the other way
22:04.25 brlcad if I said "make that combination tangent" to anything .. there's no practical way to found out where the tips of that C are
22:04.36 homovulgaris basically .. given the two torii
22:04.48 brlcad without ray-tracing the hell out of it
22:05.03 homovulgaris after the combination given any point on the surface i can know the tangent value
22:05.11 brlcad that's my point
22:05.18 brlcad you don't know any point on the surface with implicits
22:05.25 brlcad the surface is .. implicit ;)
22:05.50 brlcad and that just gets worse (much much higher order) when you throw in csg operations
22:06.00 homovulgaris yeah so u need the boundary representation :P
22:06.12 brlcad you evaluate the surface of an implicit with ray-tracing
22:06.32 brlcad you could implement some sort of newtonian search that uses ray-tracing to find the closest point, but that'd be really nasty
22:07.23 homovulgaris hmmm..
22:07.47 brlcad now what could be useful is instead of the brep form, I think you might just need "handles" and there may be a generalized way to describe that for any geometry
22:08.23 yukonbob waves in; afternoon, gentlemen (and ladies?)
22:09.12 brlcad e.g. for a sphere, the handles are its center point and radius; for a box, it's the 8 corner points, 12 edges, and center point
22:09.38 brlcad so you could add routines to each primitive that amount to "what are your available handles"
22:10.07 homovulgaris hmm.. basically entities which would help you calculate stuff ?
22:10.25 brlcad e.g. for a brep, it's all the points, edges/curves, and surfaces that define the object and a center point
22:10.32 brlcad yeah
22:12.26 homovulgaris but then these routines would vary widely with respect to each primitive right ?
22:12.43 brlcad e.g. for a right circular cylinder it's the center point, 2 curves for the circular ends, two radius values for those circles, and the length
22:13.32 brlcad yeah, each primitive would be very different, but still only amounting to a limited set of parameterizable values that can be used in the equations/constraints
22:14.52 homovulgaris they can be used in equations and constraints but are not themselves modifiable right
22:15.17 brlcad why not?
22:15.58 homovulgaris they are basically for usage in equations and not for determination and definition of geometry
22:16.00 homovulgaris for example in the case of a sphere
22:16.28 brlcad ah, missed the dcc, feel free to resend
22:16.34 homovulgaris we have center and radius which are two parameters
22:17.15 homovulgaris (it was on constraint satisfaction)
22:17.57 homovulgaris ok.. wait.. what i have been calling parameters till now are mostly generative parameters or in other words parameters which are necessary to define or create a geometry.
22:18.59 brlcad that's a bit of a recursive definition there ;)
22:20.00 homovulgaris :D
22:20.45 homovulgaris ok lets call them values and objects necessary for creation of objects
22:22.40 brlcad i don't care so much what we call everything as it really all blends together -- the main distinction I do make, though, is that we have -- say -- a sphere that is stored a point and a radius .. and now we're adding these things that we're calling parameter objects or constraint objects or widgets whatevers where I get to specify the range/domain of valid values that sphere's position and radius can have
22:23.03 homovulgaris so in the case of the above sphere ( we have 2 parameters ( 1. center point 2. radius )
22:23.03 homovulgaris ( about dcc argh.. my college firewall sucks :(( )
22:23.29 brlcad yeah, it announces as 127.0.0.1
22:23.46 homovulgaris yep
22:23.50 homovulgaris :P
22:24.28 brlcad so in that sphere example, there are at least two objects .. the sphere itself and this constraint/parameter/equation object
22:24.44 brlcad wrt the .g file at least
22:25.07 brlcad the constraint/parameter/equation object necessarily refers to the sphere object of course
22:25.23 brlcad so you have your (as yet) one-node graph there
22:25.37 homovulgaris ( and continuing with the spere analogy: there could be other definitions of the sphere . example a sphere with center on a line and radius as the distance between some other points A and B )
22:25.50 homovulgaris so we have two objects additional to the sph1 object in .g file
22:26.30 brlcad so if I impose a constraint of radius==5 or position.x = sqrt(radius) etc
22:27.09 brlcad dude, pick a more simple example than "center on a line and radius as the distance between some other points A and B" :)
22:27.11 homovulgaris 1 is the parametric object which stores information relating to the fact that the center is on a line and that the radius is the distance between two points )
22:27.26 brlcad there are way too many prepositionals in there :)
22:28.17 homovulgaris and 2 is the constraint object ( which is basically where u can specify situations like tangency with a plane )
22:28.38 homovulgaris :P
22:28.38 homovulgaris ok see in our example of a sphere with a centre and radius
22:28.41 homovulgaris we have sph1 in .g
22:29.01 homovulgaris we also have a parametric object in .g specifying the fact that the sphere is built using a radius and a centre or 2 parameters
22:29.18 homovulgaris till now we dont need to do anything about constraints
22:31.19 homovulgaris now lets say we decide that we are going to need the sphere to be always tangent to xy plane.. that is a relation with 1. another object ( xy plane) and 2. does not affect how the sphere was originally defined **directly**
22:31.23 brlcad I don't see the point of the parametric object, can just refer to one of the object's 'parameters' .. you can implement knowledge of valid parameters into the primitives and combinations
22:31.49 homovulgaris that is when we need a constraint object
22:32.38 brlcad i suppose i was only seeing them as the two combined
22:33.16 homovulgaris basically i think csg has a limited set of ways of defining the primitives
22:33.37 homovulgaris by using the parametric system we can define the same set of primitves in more number of ways
22:33.57 brlcad you can have constraints that refer to nothing, effectively just become named parametric equations (e.g. my_sine_obj ==> f(x) = sin(x), which has "one parameter")
22:35.33 brlcad i'm not saying not have "the parametric system", you just said "object" which makes me think database object .. I don't see what having two database object types gives us when the first one really is just a handle on what the primitives already have
22:37.26 homovulgaris k
22:37.32 brlcad am I misunderstanding something about what you just referred to as the parametric object type's purpose? how's having param1 object that provides sph1's radius and center as two parameters different than allowing named convention of obj.parameter or something similar (e.g. sph1.radius) that gets used in the constraint object
22:38.28 homovulgaris yeah i know.. but there are different methods of defining the same primitive right ( like if i take the example of a point which is not a primitive right now i guess ? 1. a point can be defined as being on a plane and specified by two coordinates, 2. being on a line specified by a ratio 3. being a projection of another point on a line 4. being a projection of a point on a plane 5. between two points specified by a ratio .. and so o
22:38.29 homovulgaris n ) and all these points can be represented using simply coordinates as well.. so multimple definition systems can have a common storage system
22:38.30 brlcad on disk, it's useful to remember that everything is a named reference
22:40.55 homovulgaris like for example considering defining a sphere as one passing through 3 points.. so parametrically it depends on three points.. on the present .g system it would be stored as sph3.. using radius and centre values and the **parametric** object would have reference to sph3 and reference to the three points
22:42.00 brlcad okay, i see that example, but that still to me are just various formulas/equations .. so if we did have a point object, he'd have one inherint "parameter" for the xyz values, if you wanted the various 1/2/3/4/5 methods, that'd be a constraint/parameter/equation object similar to my my_sine_obj => f(x) = sin(x) example
22:42.19 homovulgaris i hope i am not confusing u between points in space and a point actually existing as a primitive
22:45.48 brlcad for your sphere through 3 points example, it'd be the sph object and a parameter/constraint/equation object that would describe that relationship, namely you'd need some sort of enclosure operation
22:46.28 homovulgaris hmmm.. never thought in that direction
22:47.30 homovulgaris basically looking at the definition of the geometry as a constraining process in itself
22:47.50 brlcad with your 3 points example, what exactly does it contain other than the reference to sph3 and the three points?
22:48.12 brlcad it == parametric object
22:48.47 homovulgaris in .g file yes
22:49.04 brlcad heh, it wasn't a yes/no question ;)
22:49.13 homovulgaris in memory basically that'd be the object calculating the centre and radius
22:49.14 homovulgaris from the three point coordinates
22:49.39 brlcad how/where does it actually describe/encode that the sphere needs to encompass those three points
22:51.45 homovulgaris well a sphere passing through three points is a standard definition of a sphere and hence would be in the code
22:51.58 homovulgaris as in if the sphere parametric object receives three points as inputs it constructs the sphere object by taking that assumption
22:52.27 brlcad ah
22:52.29 brlcad yuck :)
22:52.56 brlcad that'd basically require coding in the 1/2/3/4/5/n ways for creating any primitive
22:53.13 brlcad i was thinking of a generalized solution that applies to any object, primitive or otherwise
22:53.34 brlcad "make this torus encompass these three points"
22:53.37 homovulgaris yeah the part i like the least
22:53.37 homovulgaris :)
22:54.23 brlcad mm.. food for thought
22:54.31 brlcad and speaking of food.. dinner time :)
22:54.54 homovulgaris we can try that using constraint satisfaction.
22:54.56 homovulgaris :P
22:54.56 homovulgaris morning jogging time here :)
22:55.02 brlcad we can continue later if you're on ;)
22:55.34 archivist interesting read /me goes home to bed
22:56.11 homovulgaris basically my idea is we would have some primitives for generating geometry .. for generalized solution systems i'll have to devote lots of time over the year writing constraint satisfaction algorithms for various **interesting** cases.. like encompassing for example
22:56.57 brlcad i really think libpg (or whatever it's called) needs to not have any lists of primitive types or specific creation criteria, it can know about different types of "parameters" (this is a point, this is a non-negative value, this is a vector, etc)
22:57.17 archivist likes "gear" mates in solidworks
22:57.30 homovulgaris and these primitive geometry systems would server as a basis in terms of constraint solving by variationg of parameters..
22:57.33 homovulgaris anyways.. lots of food for thought ;)
22:59.04 brlcad I don't want to see this library encroach upon what librt already does -- librt manages object creation, basic validity checking, knows about each primitive that is supported etc
22:59.11 homovulgaris :)
22:59.13 homovulgaris i will do some more groundwork :)
23:00.02 brlcad really don't want to "replicate" that in libpg, want to overlay existance rules .. the constraint/equation solver adjusts the values on demand per what is specified
23:02.02 homovulgaris :)
23:02.29 homovulgaris ok.. so that way i have to only concentrate on what sort of primitive definitions are already supported right.
23:02.55 brlcad so if you wanted to describe a sphere with three points on the surface, you'd create a constraint akin to on_surface(point1, point2, .. pointn) and tell the solver to search for a solution
23:03.06 brlcad sorta
23:03.20 brlcad you shouldn't have to know or care what the primitives/object types are
23:04.04 brlcad I'm really expecting you'll need to add a routine to each primitive that describes what data values (and their types) can be modified
23:06.21 brlcad and that's a really limited set of things you'd need to recognize: values, non-negative values, ranged values (e.g. valid -1 to 1), points (3 values), vectors (3 ranged values), edges (2 points), and planar surfaces (point + vector) for starters
23:07.02 brlcad so each/any object can provide a named list of those recognized knobs that can be referenced
23:07.22 brlcad then your constraint/equation system goes to town with generalized solutions
23:07.56 brlcad really goes to dinner now, bbl!
23:08.38 homovulgaris k :)
23:08.41 homovulgaris on it ;)
23:08.59 homovulgaris :) am going to run 4 kms ;)
23:10.52 homovulgaris and this has been a really productive day .. i would have spend another 2 days thinking arbitrary stuff :)
23:20.04 *** join/#brlcad quentusrex (n=quentusr@c-71-197-244-228.hsd1.or.comcast.net)

Generated by irclog2html.pl Modified by Tim Riker to work with infobot.