IRC log for #brlcad on 20090623

00:43.35 *** join/#brlcad dtidrow (n=Don@c-71-238-51-148.hsd1.mi.comcast.net)
01:01.58 *** join/#brlcad BigAToo (n=BigAToo@pool-96-230-124-196.sbndin.btas.verizon.net)
01:02.38 *** join/#brlcad Axman6 (n=Axman6@pdpc/supporter/student/Axman6)
01:46.50 *** join/#brlcad louipc (n=louipc@archlinux/trusteduser/louipc)
01:54.17 *** part/#brlcad jdoliner (n=jdoliner@c-68-51-75-169.hsd1.il.comcast.net)
01:57.36 CIA-32 BRL-CAD: 03indianlarry * r34848 10/brlcad/trunk/src/librt/primitives/brep/brep.cpp: added new variables to brep_hit copy constructor
02:24.51 *** join/#brlcad stevegt_1 (n=stevegt@c-24-130-122-25.hsd1.ca.comcast.net)
03:46.55 stevegt_1 ~seen brlcad
03:46.57 ibot brlcad is currently on #bzflag (15d 13h 6m 36s) #brlcad (15d 13h 6m 36s). Has said a total of 448 messages. Is idling for 7h 9m 47s, last said: 'cygal: I'd abort -- it shouldn't take that long'.
03:47.09 stevegt_1 ~ralith
03:47.14 stevegt_1 ~seen ralith
03:47.15 ibot ralith is currently on #brlcad (1d 7h 54m 27s). Has said a total of 82 messages. Is idling for 5h 24m 1s, last said: 'brlcad: thanks—hopefully it won't come up again.'.
03:47.15 Ralith sup
03:47.21 stevegt_1 whup -- hi
03:48.37 stevegt_1 ralith: still looking through src/rt/* -- i'm trying to figure out how to get a vector toolpath during or after processing ray hits...
03:49.12 stevegt_1 raster is obvious, vector has me stumped so far
03:50.44 Ralith stevegt_1: what do you mean by raster and vector?
03:50.55 Ralith those terms don't really apply.
03:51.24 stevegt_1 raster == e.g. .bw, .pix, .jpg etc.
03:51.31 Ralith those aren't toolpaths
03:51.32 Ralith those are images
03:52.04 stevegt_1 vector == primitive edges
03:52.12 Ralith primitive edges?
03:52.15 Ralith what do you mean by that?
03:52.43 stevegt_1 hm
03:52.45 louipc ~seen louipc
03:52.46 ibot louipc is currently on #brlcad (2h 5m 56s). Has said a total of 1 messages. Is idling for 1s, last said: '~seen louipc'.
03:52.53 louipc laffs
03:53.33 stevegt_1 vector as in svg, dxf
03:53.52 stevegt_1 g-code, laser etc. need vectors
03:56.08 Ralith stevegt_1: what do you mean by 'vectors'?
03:56.31 Ralith rt will quite happily give you precise coordinates.
03:57.13 stevegt_1 a vectorized shape description -- like a sketch
03:57.40 stevegt_1 or an arb?
03:57.47 Ralith that's a circular definition...
03:58.00 stevegt_1 im trying here ;-)
03:58.17 stevegt_1 okay, let's look at it this way:
03:58.19 Ralith perhaps you mean you want to extract arcs?
03:58.32 stevegt_1 ahh -- yes, arcs
03:58.34 Ralith all g-code can represent is lines and arcs.
03:58.38 stevegt_1 right
03:59.09 Ralith that's nontrivial, because lines and arcs cannot exactly represent many possible region slices.
04:00.19 stevegt_1 for a laser or CNC router, we need exactly one slice, aligned with the plane of the part we're cutting out
04:00.30 Ralith you can use arcs to more closely approximate curves than you could with lines, but it's still an approximation unless you get lucky and the curve happens to be precisely circular.
04:00.59 Ralith the level of the approximation is up to you.
04:01.20 Ralith the raytracer provides sufficient information to perform this approximation; jonored implemented it, but I couldn't tell you how it's done.
04:01.28 stevegt_1 some sort of successive approximation?
04:01.42 stevegt_1 that's the only thing i've been able to think of so far
04:03.19 stevegt_1 googles for clues about what jonored was doing
04:04.54 Ralith ~seen jonored
04:07.27 ibot jonored <n=jonored@dsl092-076-134.bos1.dsl.speakeasy.net> was last seen on IRC in channel #brlcad, 63d 8h 33m 20s ago, saying: '...er... wrong project. the brlcad database, not the reprap... wrong project I want to work on.'.
04:07.50 stevegt_1 heh
04:16.04 Ralith that took a while
04:20.57 stevegt_1 i'm getting a creeping feeling that the most direct route to what i want might be to generate the shapes further upstream, probably in a python script, handle constraints etc there, then use brl-cad for rendering and interference checking, and finally generate the toolpath from the upstream output, rather than from brl-cad
04:21.14 stevegt_1 which is probably what others are doing
04:21.39 stevegt_1 darnit
04:22.38 stevegt_1 the closest i'm seeing to what jonored was doing was his mention in the IRC channel of not being able to work on his 2009 gsoc proposal
04:23.23 stevegt_1 those proposals aren't online anywhere? (just the ideas and the accepted ones? at least that's all i'm finding so far..)
04:23.57 Ralith stevegt_1: I suspect you vastly underestimate the difficulty of evaluating CSG.
04:24.34 Ralith reliably and precisely, anyway
04:25.00 stevegt_1 not underestimating -- if i were to do things upstream, then i'd have to manually say "okay, a hole needs to go here so this other rod can pass through"
04:25.08 stevegt_1 so not even trying to evaluate in that case ;-)
04:25.24 Ralith I don't follow
04:26.32 stevegt_1 like this: if all you've got is 2-d tools, qcad, autocad, whatever, then you have to manually do the booleans, calculate part fit, try to keep it all in your head
04:26.55 Ralith afaik there are no 'others'; anybody currently generating toolpaths from brlcad models is almost certainly doing so with third party tools after exporting to another format (e.g. stl)
04:29.42 stevegt_1 i figured that too -- but that loses info on the way through of course
04:29.42 Ralith if all you've got is 2d tools, I don't think there's yet any way to get meaningful data from BRL-CAD to them anyway, short of writing your own tool.
04:29.44 stevegt_1 other way around -- sketch in qcad, import into brl-cad, extrude, repeat
04:29.45 Ralith that should be feasible; there appears to be a dxf importer.
04:29.47 stevegt_1 then use rtcheck for interference checking to find out where you screwed up ;-)
04:31.18 Ralith rtcheck?
04:31.24 stevegt_1 the dxf importer seems to work -- the only thing i haven't been able to figure out os the right way to use 'extrude' -- it's not shown in the pdf tutorials, and the wiki seems to disagree with the code and/or usage statement
04:31.30 stevegt_1 s/os/is/
04:31.42 Ralith someone in here probably knows
04:31.44 stevegt_1 rtcheck -- checks for overlaps; it's great
04:31.51 Ralith also check the reference card, and the built-in help
04:31.59 pacman87 stevegt_1: do you already have the sketch?
04:32.01 Ralith that's not what my manpage says...
04:32.02 pacman87 for the extrude
04:32.04 Ralith <PROTECTED>
04:32.14 stevegt_1 pacman87!!! someone else is awake!
04:32.30 pacman87 hi
04:32.36 pacman87 reads the backlog
04:33.08 Ralith perhaps it's used for something else in mged.
04:33.35 pacman87 can you summarize what you're trying to do?
04:33.52 stevegt_1 goes to see if he's completely confused about the name of that command
04:34.12 pacman87 dxf -> sketch -> extrude?
04:37.06 stevegt_1 is not crazy
04:37.24 stevegt_1 unless i'm completely misinterpreting the results of mged's rtcheck
04:37.31 Ralith shrugs
04:37.32 Ralith I've never used it
04:37.38 stevegt_1 pacman87: yes, dxf -> sketch -> extrude
04:37.53 pacman87 and where does the problem start?
04:38.08 stevegt_1 lemme go get an error message...
04:38.16 pacman87 (and the command that caused it)
04:43.30 stevegt_1 pacman87: i think i'm probably having basic usage confusion as much as anything else -- ' extrude sketch.1 5' errors out wanting the user to be in SOL EDIT state, but if I say 'sed sketch.1', it pops up the gui sketch editor... then if i say 'extrude sketch.1 5' again, it still says i'm in VIEWING state
04:44.06 stevegt_1 i obviously haven't done enough of the tutorials, to begin with
04:44.31 pacman87 oh, i'm using classic mode
04:44.35 stevegt_1 ah
04:44.47 pacman87 so i just do "in <name> extrude"
04:44.51 pacman87 and it promps for the fields
04:45.08 stevegt_1 lemme try that
04:49.19 pacman87 the dxf-g converter used to double the line segments (one going each direction), but i think that's been fixed
04:50.12 stevegt_1 notes that the 'extrude' command and the 'extrude' primitive are completely different
04:50.17 stevegt_1 i think
04:50.29 pacman87 i only know of the primitive
04:50.31 pacman87 what's the command do?
04:50.50 stevegt_1 the command just wants 2 args: 'extrude {face} {distance}'
04:50.59 stevegt_1 much simpler ;-)
04:51.02 Ralith yeah, that probably doesn't have anything to do with sketches.
04:51.07 stevegt_1 if i could get it to work ;-)
04:51.19 Ralith considering that sketches don't have faces.
04:51.37 pacman87 what primitive results from the extrude command?
04:53.13 stevegt_1 pacman87: the wiki says it 'modifies an ARB' -- ahh, yes, that won't work on sketches
04:53.23 stevegt_1 i think
04:53.56 pacman87 yeah, so it take the edge points from and ARB, and uses that as the base for (i'm guessing) another ARB
04:54.04 pacman87 s/from and/from an/
04:54.39 Ralith stevegt_1: think about it; sketche don't have faces.
04:54.44 Ralith sketches*
04:56.01 stevegt_1 Ralith: i seem to remember seeing the code accepting a sketch as one of its args, but can't find it ATM... hang on, gotta put a 6-year-old to bed...
05:01.04 Ralith brb
05:05.14 pacman87 bedtime for me
05:13.39 Ralith back
05:31.32 stevegt_1 back -- nope, the mged extrude doesn't take sketches, wants an arb face -- don't know what code I was looking at the other day
05:37.56 Ralith so see what you can do with in
05:43.58 stevegt_1 yep
07:22.32 *** join/#brlcad _clock_ (n=_sushi_@77-58-151-159.dclient.hispeed.ch)
07:49.45 *** join/#brlcad _clock_ (n=_sushi_@77-58-151-159.dclient.hispeed.ch)
09:53.34 *** join/#brlcad Elrohir (n=kvirc@p5B14F13C.dip.t-dialin.net)
09:57.34 *** join/#brlcad mafm_ (n=mafm@165.Red-81-35-69.dynamicIP.rima-tde.net)
12:21.48 starseeker growls - rebuilding gentoo sucks...
12:29.24 louipc hehe still on that train eh?
12:37.07 *** join/#brlcad BigAToo (n=BigAToo@pool-96-230-124-196.sbndin.btas.verizon.net)
12:55.17 _clock_ starseeker: I can understand this rebuilding my gentoo sucked so much that I swapped to another distro
13:06.41 louipc _clock_++
13:25.08 starseeker tried that
13:25.14 starseeker sucked more than rebuilding
13:37.48 mafm_ debian ftw!
13:39.11 louipc starseeker: what distros?
13:39.25 louipc not ubuntu! :D
13:39.57 starseeker yeah, ubuntu
13:40.19 starseeker has finely tweaked his desktop settings over the years, and ubuntu has its own ideas
13:40.48 louipc yeah debian is probably better
13:41.20 louipc I would plug arch linux though :P
13:46.36 brlcad bsd ftw ;)
14:02.08 CIA-32 BRL-CAD: 03irpguardian * r34849 10/brlcad/trunk/src/proc-db/human.c: (log message trimmed)
14:02.10 CIA-32 BRL-CAD: Made significant updates to the human.c file which will eventually be a complete human generator that
14:02.13 CIA-32 BRL-CAD: uses CSG to model a human.
14:02.15 CIA-32 BRL-CAD: human.c currently creates a 'stick' human to a desired height by use of command line parameters and also
14:02.18 CIA-32 BRL-CAD: allows for the output of specifically named .g file when using the -o command on input.
14:02.22 CIA-32 BRL-CAD: Also included are most of the bounding blocked for each part of the generated body by using the -b command.
14:02.25 CIA-32 BRL-CAD: So if you wanted to make a 'human' right now, the command would be...
14:10.24 louipc crazy
14:49.36 *** join/#brlcad samrose (n=samrose@c-24-11-214-181.hsd1.mi.comcast.net)
14:52.37 CIA-32 BRL-CAD: 03irpguardian * r34850 10/brlcad/trunk/src/proc-db/human.c: Added bounding box support to each of the hands.
14:59.47 CIA-32 BRL-CAD: 03bob1961 * r34851 10/brlcad/trunk/src/librt/db_open.c: Fixed a bug in db_sync (i.e. it was possible to return without releasing a semaphore).
15:19.44 CIA-32 BRL-CAD: 03bob1961 * r34852 10/brlcad/trunk/src/libged/ged.c: Modify ged_open() to create a dbip if a NULL one is passed in.
15:25.59 CIA-32 BRL-CAD: 03bob1961 * r34853 10/brlcad/trunk/src/tclscripts/archer/Archer.tcl: Now using inmem database for the ledger.
15:34.23 starseeker brlcad: figuring out the bsd install would talk some time, and figuring out the new config file locations would take more :-P
15:34.28 starseeker is getting old...
15:39.14 brlcad 'scuses 'scuses
15:40.38 starseeker was actually crazy enough to consider opensolaris for a second...
16:36.36 *** join/#brlcad BigAToo (n=BigAToo@64.74.225.82)
16:38.00 CIA-32 BRL-CAD: 03irpguardian * r34854 10/brlcad/trunk/src/proc-db/human.c:
16:38.02 CIA-32 BRL-CAD: Added section that creates regions out of all the body parts and all the bounding boxes, aptly named
16:38.05 CIA-32 BRL-CAD: Body.r and Boxes.r
16:53.15 *** join/#brlcad roberthl (n=robert@cobalt.rhl.me.uk)
17:03.45 CIA-32 BRL-CAD: 03brlcad * r34855 10/brlcad/trunk/TODO: binary installer for windows is missing external dependency headers (specifically need tcl and openNURBS headers)
17:06.43 CIA-32 BRL-CAD: 03brlcad * r34856 10/brlcad/trunk/NEWS: bob implemented initial undo support for archer using in-memory geometry and a ledger of changes.
17:15.30 *** join/#brlcad jdoliner (n=jdoliner@c-68-51-75-169.hsd1.il.comcast.net)
17:41.21 brlcad hello jdoliner, how goes the progress? make sense of nmg?
17:54.29 jdoliner yeah I got the basic idea of nmg
17:55.26 jdoliner I have a weird problem right now
17:59.42 jdoliner so I've written a test for my meshmeshintersection algorithm
18:00.12 jdoliner and it seems good
18:01.18 jdoliner except when I call it. control goes into ON_Mesh::ON_Mesh function and after it completes that it just hangs
18:01.37 jdoliner I feel like there's something I'm not getting here
18:28.03 stevegt_1 ~seen Ralith
18:28.08 ibot ralith is currently on #brlcad (1d 22h 35m 20s). Has said a total of 120 messages. Is idling for 12h 50m 13s, last said: 'so see what you can do with in'.
18:36.57 stevegt_1 needs a sanity check before he dives into writing something called 'g-laser'
18:37.31 stevegt_1 i think i have an algorithm that will work for generating laser toolpaths, but i'm new to brl-cad and might be missing something important
18:41.49 stevegt_1 i'm thinking: since popular lasers (like the epilog) are 3dof machines, the beam will always be perpendicular to the part being cut
18:42.35 stevegt_1 that greatly simplifies trying to figure out the profile of any edges created by booleans
18:43.50 stevegt_1 since these lasers can only do vertical hole walls, that means the primitives intersecting the part must have 'top' faces which are also normal to the beam
18:44.22 stevegt_1 which means we can derive a clean toolpath directly from that 'top' face of the intersecting primitive
18:44.37 stevegt_1 without tesselation or other approximation
18:49.53 stevegt_1 this means cones, toruses, spheres, etc. can't be used to make coles in laser-cut parts, nor can complicated arbs (e.g. mushroom-shaped -- can brl-cad even do those?), but imho that's a reasonable constraint
18:50.05 stevegt_1 <crickets chirping> ;-)
18:50.53 stevegt_1 i'll probably write this up on a web page somewhere and pop in here again later -- i gotta unplug for an hour or so pretty soon
18:51.06 jdoliner hi I don't know enough about your project yet to really comment. But I am working on CSG algorithms which is maybe related
18:51.15 jdoliner so maybe if you explain at a lower level I can help
18:51.16 stevegt_1 hi jdoliner
18:52.22 stevegt_1 goes to look at what jdoliner's working on
18:54.31 stevegt_1 (still reading)
18:57.03 stevegt_1 jdoliner: okay, done reading/skimming your proposal -- the output of the algorithm is a bezier curve?
18:57.31 jdoliner yeah
18:57.37 jdoliner basically
18:57.45 jdoliner that bezier curve becomes a trimming curve
18:58.09 stevegt_1 as in something that could be stated as a primitive in gcode or dxf?
18:58.39 stevegt_1 (as opposed to tesselation)
18:58.50 jdoliner yeah I believe so
18:59.16 jdoliner it can be stated as an ON_NurbsSurface object
18:59.16 stevegt_1 if that's true, then halleluyah, or somesuch
18:59.37 stevegt_1 s/tesselation/tessellation/ ;-)
19:01.46 stevegt_1 the need for that algorithm is where i was hung up on the toolpath-generation problem -- i could see that some thorny math would be required, but the closest i'd be able to get is by trying to duplicate what librt does in solving quadratics or something -- and i barely made it through Calc II, 25 years ago ;-)
19:03.28 stevegt_1 something that algorithm will be needed to generate toolpaths for machines which have more that 3 axes -- i.e. if the machine can tilt the cutting tool, or otherwise do over/undercuts in holes and at the sides of a part
19:03.37 stevegt_1 s/something/something like/
19:06.14 stevegt_1 anyway, i *think* i can cheat in the case of 3-axis machines like lasers, since they can only do vertical-walled cuts -- just constrain the intersecting primitives to have faces that are perpendicular to the part being cut
19:11.36 *** join/#brlcad stevegt`` (n=stevegt@cislunar.TerraLuna.Org)
19:13.30 stevegt_1 jdoliner: i gotta go get lunch; i'll try to write this up and be back later
19:14.06 jdoliner yeah, particularly if you get hung up on thorny math I can try to give you a hand with ti
19:14.25 jdoliner it**
19:14.31 stevegt_1 i'm pretty sure you could ;-)
19:25.33 *** join/#brlcad BigAToo (n=BigAToo@64.74.225.82)
19:42.35 CIA-32 BRL-CAD: 03bob1961 * r34857 10/brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj: Added cc.c and lscon.c to build.
20:03.22 CIA-32 BRL-CAD: 03bob1961 * r34858 10/brlcad/trunk/misc/win32-msvc8/ (brlcad/brlcad.sln g2adrt/): Removed g-adrt from windows build.
20:13.43 CIA-32 BRL-CAD: 03bob1961 * r34859 10/brlcad/trunk/src/tclscripts/archer/ (Archer.tcl ArcherCore.tcl): Removed a bit of leftovers from the previous edit history hack.
20:41.34 *** join/#brlcad stevegt_ (n=stevegt@cislunar.TerraLuna.Org)
21:19.39 brlcad jdoliner: hm, hard to say without walking the execution or knowing more info about the ON_Mesh::ON_Mesh problem -- have you tried stepping through with a debugger?
21:20.47 jdoliner yeah gdb's really been the flavor of the afternoon :)
21:20.56 brlcad stevegt_: mushroom-shaped arbs?? picture of one?
21:21.08 brlcad jdoliner: heh, awesome
21:21.23 jdoliner it was something weird with initializing ON_Meshes
21:21.39 jdoliner but I switch the function to use pointers instead
21:21.42 jdoliner and that cleared it up
21:22.15 jdoliner which in all honesty probably makes more sense because I imagine meshes can get big
21:25.32 brlcad they can get huge, Gigs
21:27.54 brlcad stevegt_: sorry we keep failing to cross paths :)
21:28.05 stevegt_ brlcad: right here ;-)
21:28.23 stevegt_ other than the mushrooms, did the rest of what i was saying make sense?
21:33.13 stevegt_ overall, what i'm trying to do is pick a cad package for designing and generating toolpaths for making low-end machines that have a laser-cut acrylic parts, and are otherwise built from bolt-together things off the shelf -- motors, lead screws, fasteners, etc
21:33.16 stevegt_ like http://fabathome.org/wiki/index.php?title=Main_Page
21:33.39 brlcad Ralith: rtcheck's primary purpose is interference (aka overlap) detection with a side-effect of overlaying a plot of the overlaps if you run it in mged (yes the help line is misleading)
21:34.09 stevegt_ brlcad: good, i wasn't insane that time ;-)
21:36.04 brlcad stevegt_: docs are pretty thin on extrude, but it's really pretty simple to extrude a sketch -- run the 'in' command in mged and it'll interactively prompt you
21:37.11 brlcad ah, and yes, there is an 'extrude' command which is different than creating an extrude primitive -- you don't want the extrude command, you want the 'in' command
21:37.13 stevegt_ brlcad: so i gathered; i haven't figured out what some of the prompts are asking yet, but i'm sure that'll be obvious by the time i get used to the way brl-cad does things
21:38.41 stevegt_ s/low-end machines that have a laser-cut acrylic parts/low-end machines that have a lot of laser-cut acrylic parts/
21:38.49 brlcad ah, all caught up with the log now :)
21:39.03 brlcad yes, the rest you said made sense (i think!) :)
21:40.12 brlcad basically it asks you what scaling factors do you want (you can skew/stretch the sketch before extruding it) and then the distance
21:40.35 brlcad usually best to just use orthogonal unit vectors, 1 0 0 and 0 1 0
21:41.01 brlcad that aligns the sketch normalized to an x/y plane like one would usually expect be default
21:42.11 brlcad that's a pretty cool machine, hmm.. :)
21:42.13 stevegt_ anyway, i *think* i'm in a common use case for the newer crowd of maker community, arduino controllers, fabbers, people who might have access to a laser or CNC router, and are looking for something more capable than qcad for modelling the machines -- so something like 'g-laser' seems like a good idea, just trying to figure out how doable it is
21:42.47 stevegt_ so 'in ... extrude' wants a sketch? lemme go try it again...
21:42.53 brlcad g-gcode is something that's been on the "todo" for a while :)
21:43.41 brlcad yeah, 'in' is the interactive input tool for creating primitives .. you can feed it the whole line or parts of a line and for any part remaining it'll prompt you
21:44.46 stevegt_ yeah, i'm saying to myself "wow, brl-cad is great!!" and i'm going through the tutorials, and then it hits me -- right now, it seems to be optimized for importing and analyzing models, rather than making them -- unless you are using STL e.g. 3-d printing?
21:45.14 stevegt_ s/making them/making things from them/
21:45.16 brlcad the real solution to what you want is very much related to jdoliner's project where you evaluate a given object (regardless of geometry format, csg or non-csg) to a spline-surface boundary representation that has no booleans, then project that to a given plane
21:45.46 brlcad gives you a series of 2D spline curves and line segments that could them be turned into arcs and polylines or what have you
21:45.46 stevegt_ i agree -- for generic gcode for a 3 or more axis mill, you need jdoliner's stuff
21:47.23 brlcad what you intuited about brl-cad is quite true -- it's presently heavily geared around import and analysis requirements .. but also visualization and creation (but a very different approach than most commercial systems)
21:48.00 stevegt_ the light bulb this morning was that, since a lot of these potential users (including me) are just using lasers, then i can just ensure via raytracing that hole walls are vertical, and then directly derive the dimensions of the hole by looking at the top face of the intersecting shape -- i think ;-)
21:49.30 jdoliner stevegt_: whenever you need me I'm here to help
21:49.36 stevegt_ i plan to generate a lot of parts from scripts in the first place, so brl-cad fits with that usage as well
21:49.39 brlcad for nearly two decades, brl-cad has been used (with the csg approach) to model vehicles down to the nut bolt and wire using CSG boolean operations and primitives -- many things are considerably more efficient that way over BREP methods, but it's definitely a very different way of thinking about things and a large body of experience that has to be built up -- but once you do, the advanced brl-cad modelers are just as effective in brl-cad as they are in other com
21:50.54 brlcad stevegt_: you know, if you're ray-tracing, it's not a whole lot extra logic to make it derive that top-hole using ray-tracing to a given tolerance using adaptive subdivision
21:51.14 stevegt_ goes and looks up "adaptive subdivision" ;-)
21:51.27 brlcad that would let you extract a contour for any arbitrary view
21:52.12 stevegt_ is that more or less what the tessellation routines do?
21:52.27 brlcad not at all
21:52.38 stevegt_ i see 'curves' in the description...
21:52.51 brlcad it's basicaly a sampling approach, you sample down to a specified level of detail
21:54.33 stevegt_ is that related to the use of voxel spaces?
21:54.40 brlcad think of it this way.. you shoot a grid of rays and find the edges of an object .. but instead of filling in pixels, you build up coefficients for a set of polynomial curves
21:54.53 stevegt_ ah
21:55.34 brlcad sampled sufficiently, you'll derive a spline that fits to the circular top of a cylinder, for example
21:56.06 stevegt_ is there code anywhere in the brl-cad tree that does something like this right now?
21:56.21 brlcad I'm sure you could *very* easily sample at a resolution much higher than the resolution of your fabbers stepper motors :)
21:58.26 brlcad hm, the closest starting point is probably rtedge, which simply renders an edge outline (raster) of an object based on neighboring hits -- you'd want to extend that to be calculate the curves
21:58.44 brlcad example, http://brlcad.org/gallery/s/renderings/havoc_rtedge.png.html
21:58.47 stevegt_ ah ha -- 'adaptive subdivision algorithm' is giving me some good hits in google....
21:59.38 stevegt_ yeah, i looked at rtedge and got worried that i'd be stuck with raster-like limitations, then popped in last night to bug Ralith about it ;-)
22:00.24 brlcad yeah, just forget about the pix output -- you'd be outputting curves or directly to gcode or whatever
22:00.31 stevegt_ huh
22:02.00 stevegt_ i'm wondering if it would be easier to write the code such that it tries to read the hole geometry directly off the top face of the intersecting object, and *then* falls back to adaptive subdivision, or just uses adaptive subdivision always...
22:02.39 stevegt_ probably the latter, assuming i can figure out how to do it
22:03.31 stevegt_ the raytracing hits sure are nice to be able to get at
22:06.59 brlcad nice example: http://www.museum.state.il.us/ismdepts/library/linuxguides/povray/image112.gif
22:07.26 brlcad "adaptive sampling" <- another useful term you can search on
22:08.00 stevegt_ now has to go back and remember how polynomial curve fitting works -- those brain cells died decades ago :-b
22:09.14 Ralith it's not hard
22:09.27 brlcad so in that image, where you have a hit neighbored to a miss, you know there's an edge somewhere between those two rays, you adaptively sample to more precisely find that edge -- if you recurse down all edges, you can find a 'perfect' contour from which you can derive coefficients for a representative set of splines
22:10.01 stevegt_ hi Ralith!
22:10.04 Ralith hullo
22:11.28 brlcad another example, http://www.lamrug.org/resources/images/samples/samples.03d.jpg
22:12.48 brlcad done well enough, you end up with an rtvector .. from which you could output svg or gcode or pdf or whatever format ;)
22:13.15 stevegt_ brlcad: that sounds like it might be successive approximation -- do you ultimately compare the polynomial-generated curve with the original edge, or is the algorithm open-loop? (if that makes sense)
22:14.06 stevegt_ (i'm still skimming papers from citeseer)
22:14.54 brlcad yes, it's a way to get a successive approximation
22:15.24 brlcad there is no "original edge" to compare it to, you're deriving a representation for that edge
22:15.55 brlcad you just keep refining until you're below a specified accuracy level (ideally below your machine's capabilities)
22:16.13 brlcad so even if there is error, it's never realized
22:17.32 *** part/#brlcad jdoliner (n=jdoliner@c-68-51-75-169.hsd1.il.comcast.net)
22:17.55 stevegt_ the way you're envesioning this working, is it iterative? or am i missing some direct way to get from ray hits to coefficients?
22:18.34 stevegt_ s/envesioning/envisioning/
22:18.51 brlcad here we go, even better
22:19.29 brlcad it's basically an implementation of marching cubes with adaptive subsampling, but in 2D (i.e., marching squares with adaptive subsampling)
22:19.33 brlcad http://www.exaflop.org/docs/marchcubes/
22:19.53 stevegt_ funny -- march cubes was one of the links i saw a few minutes ago
22:19.55 brlcad and yes, it is iterative
22:19.56 stevegt_ goes to look
22:20.48 brlcad that page even speaks to the sampling issues, good stuff
22:21.58 brlcad just when reading, you're working in 2D so read it as s/cubes/squares/ and s/polygons/line segments/ (for starters)
22:22.03 stevegt_ ok, yes, they're talking about voxel spaces...
22:22.19 brlcad voxel spaces are for 3D
22:22.28 stevegt_ ...and they're using polygons instead of curves, but i'm grokking it
22:23.04 brlcad right, the even mention that near the end -- that's basically applying smoothing algorithm to derive a curve
22:23.36 stevegt_ saw that -- and you're picturing polynomial curve segments instead of straight line segments
22:24.24 brlcad yeah, only because I don't think many machines would be robust with millions of sub-millimeter line segments that would be required to describe a smooth curve
22:24.48 brlcad would expect aliasing artifacts
22:25.36 brlcad interpolate a curve and simplify (e.g., identify and make curves that are linear actually just be line segmenets)
22:25.48 stevegt_ okay, i think i can do this -- the way my brain works, i'm probably going to wind up re-deriving a lot of the algorithm, but to me it looks familiar when i think of it in the class of successive approximation, binary search, interpolation, etc.
22:29.18 stevegt_ just don't make me solve quadratics ;-)
22:31.34 brlcad adaptive marching squares, tis good stuff ;)
22:41.00 CIA-32 BRL-CAD: 03brlcad * r34860 10/brlcad/trunk/src/libbu/parallel.c: ws indent cleanup
22:53.23 CIA-32 BRL-CAD: 03brlcad * r34861 10/brlcad/trunk/src/libbu/parallel.c:
22:53.25 CIA-32 BRL-CAD: make sure the file is actually world read/writable like we said it would be,
22:53.27 CIA-32 BRL-CAD: call bu_fchmod(). that said, this is a horrible way to do this. mark the
22:53.35 CIA-32 BRL-CAD: implementation as deprecated even if it's not likely anyone is relying on the
22:53.37 CIA-32 BRL-CAD: temp files and rtsrv is the only brl-cad tool that can leverage this.
22:54.04 stevegt_ brlcad: while i'm only going to write something like g-laser, g-toolpath2d, or whatever ("marching squares"), it does strike me that the marching cubes could be used to generate gcode suitable for N-axis mills
22:55.27 stevegt_ <lightbulb on> and the raytracing lib could be used to fire rays at various angles to test the approache angle of the tool itself, make sure it doesn't hit anything
22:55.37 stevegt_ s/approache/approach/
22:59.45 brlcad yep
23:01.02 brlcad the exact approach you're using it 2D extends very well to 3D -- hell, with the 3D approach, that's a viable alternative for a variety of purposes including visualization, tessellation, and evaluation
23:01.37 brlcad the problem is that it's not nearly as robust for all uses (e.g. visualization) where you can continue to "zoom in" and start to see the artifacts
23:01.46 brlcad works well for hardware though
23:02.12 stevegt_ that would really go far in cleaning up the CNC tool chain -- where I sit right now (middle of silly valley) there are about 900 CNC mills with a 1-mile radius; we've gotten to know a few of them over the last several years; they are all still very labor-intensive when it comes to massaging the dxf they get from the customer and generating the gcode
23:03.03 brlcad to make sure the tool doesn't hit anything, something ala rtcheck or g_qa would work great by just having them represent the tool as geometry and test for overlap
23:03.42 brlcad cool that you're interested in this, look forward to seeing what you make of it
23:03.51 brlcad the idea has been around for a while, just nobody to work it
23:04.35 brlcad lots of squeaky wheels that require attention, like better modeling interface, better interactive visualization, step conversion support, full hybrid nurbs brep support, etc ;)
23:05.41 stevegt_ i've been interested in this ever since I was in the USAF in the early 80's, and saw how far we (still) are from being able to "print metal" -- it really drives up the cost of everything
23:07.50 stevegt_ whups -- s/early 80's/late 80's/ -- i'm not *that* far gone yet ;-)
23:08.56 brlcad heh
23:11.36 CIA-32 BRL-CAD: 03brlcad * r34862 10/brlcad/trunk/src/librt/ (primitives/table.c wdb.c): ws indent consistency
23:19.28 stevegt_ makes himself stop and go get (very late) lunch
23:24.04 CIA-32 BRL-CAD: 03brlcad * r34863 10/brlcad/trunk/src/librt/ (7 files in 6 dirs): break out arb8 mirroring, modify all the mirror function signatures to not take a pointer, instead just taking a plant_t
23:25.33 *** join/#brlcad Elrohir (n=kvirc@p5B14F13C.dip.t-dialin.net)
23:25.47 CIA-32 BRL-CAD: 03brlcad * r34864 10/brlcad/trunk/misc/ (2 files in 2 dirs): add arb8_mirror.c to the other windows build files
23:41.08 CIA-32 BRL-CAD: 03brlcad * r34865 10/brlcad/trunk/misc/win32-msvc9/:
23:41.10 CIA-32 BRL-CAD: remove the vc9 project files as they've gotten considerably out of sync without
23:41.12 CIA-32 BRL-CAD: a maintainer. there are more than 163 differences with the vc8 project.
23:41.14 CIA-32 BRL-CAD: someone can revive and resync if they're willing to maintain it, otherwise it's
23:41.18 CIA-32 BRL-CAD: just a costly maintenance burden and confusing to users.
23:43.32 *** join/#brlcad BigAToo (n=BigAToo@pool-96-230-124-196.sbndin.btas.verizon.net)
23:49.59 ``Erik would it be easy to generate vc9 files from the vc8 ones?
23:50.33 ``Erik (or mebbe solicit the mailing list for a vc9 volunteer?)
23:54.06 starseeker glares at gentoo - I might have known - a non-clean config path upgrade
23:54.30 starseeker first rule of Xorg building - never,never,NEVER build a configuration that won't work
23:54.58 starseeker oh, well - I was due for a scrub anyway, but GRRRRRRRR
23:55.52 ``Erik pkg_add x11/Xorg on bsd, binary install of all the right stuff, then you can portupgrade at your leisure with automatic failure recovery and 'last good state' saved just in case
23:57.05 ``Erik throw in the normal bsd nerd approach of putting edited config files in cvs or rcs and you have a system very very hard to fuck up for more than 2 minutes

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