Re: [brlcad-devel] More newbie BRLCAD questions.
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Christopher M. <br...@ma...> - 2008-06-06 14:53:03
|
On Friday, June 06, 2008, at 06:14AM, "Watkins, Steven M CIV NSWCDD, G24" <ste...@na...> wrote: >Hi All > >1) In the struct region, is the reg_regionid variable a unique id for non air code regions? Not necessarily. It's whatever the modeler defines. It ideally should be unique per conventions, but doesn't have to be. >2) In the struct partition there is pt_overlap_reg ptr to overlap regions. How does BRLCAD handle the overlap? Does the In pt of the overlap region precede the Out pt of the preceding region along the ray in distance from the origin of the ray? In other words, the user better handle the inconsistancy. It calls an overlap hander. :-) There is a default handler (rt_default_multioverlap()) that has some fairly involved logic. There are details in src/librt/bool.c as to what exactly it's doing of course, but the basic idea is that it picks one of the two for the result and which one it picks depends on what two things overlap (is one air, is one a fastgen object, etc). If you're firing your own rays, you probably should define your own overlap handler that does what you need it to do. >3) Is there any other method of getting to the partition list after an rt_shootray than through the a_miss callback function? I am currently having to load a "C" style array of hit data locally and then having to copy that to C++ std::vector via my wrapper Class. You mean the a_hit callback? Not sure I understand what you're saying -- the a_hit routine returns the struct partiion list for the objects that were hit. You should be able to copy directly from that into your std::vector. The hit() function in src/rt/viewweight.c is a reasonable example of how to iterate over the partitions and get the in/out points. >4) In the struct rt_i, I am using the HeadRegion ptr to access info on the available regions in the model. There is a comment in the code that this variable should be considered Opaque. Is there another or better method for getting a list of regions from the rt_i? Depends what you're needing to do with it and what information you have stored. rt_getregion() will return a given struct region by name. You can get at the struct regions within a hit() routine for regions that a given ray encounters, there are a slew of ways to get a list of regions in a given .g file. >Thanks! I just have to get my head back to "C" mode in order to try to understand the api. I currently have printouts of raytrace.h scattered all over the place. Heh, nifty. Cheers! Sean |