> On Aug 17, 2017, at 6:28 AM, Mario Meissner <[email protected]> wrote:
>
> So I think now that n-points are working for convex regions, I think the next
> steps would be:
> • Integrate vectors into existing point system.
> • Let the user input vectors through the existing input
> interface.
> • Consider one of the vectors and make it work.
> • Consider all vectors. N-point and N-vectors working.
> • Check that all edge cases work correctly (no points, no
> vectors, many of everything, etc.) and clean up code.
> • Modify implementation so that it properly works in all situations
> (i.e. concave shapes).
Again, I don’t think you should introduce a notion of vectors. For now, points
will be adequate and present plenty of challenges.
Consider shooting a ray along the X-axis (pnt -1000 0 0; dir 1,0,0) with a
density point at 0,10,0 and 10,-5,0. Say you enter geometry at 1,0,0 and exit
at 9,0,0
density
point A
o (0,10,0) ___(9,0,0) ray exits
| /
| v
o-> o—x========x-o
ray (1,0,0) |
ray o (10,-5,0)
enters B density point
With just those two points (A & B), the voronoi density field splits halfway
between A and B, which has a midpoint above the x-axis and runs diagonally
across the ray path.
If we simply project, it’ll be the wrong contribution. That’s where I was
suggesting in the prior e-mail to actually construct the voronoi mesh and
you’ll get that actual edge between A and B, and calculating where the ray
intersects that edge becomes trivial.
> • Is it a good idea to compute the distance to the previous
> point and store it into the structure in a loop before starting with density
> evaluation? I think it would clean up the last part of the code considerably,
> but also uses more memory. I like the idea so I probably will do so.
We are in no way constrained by memory.
> • Are we really good to go using an array? I decided to do so because I
> needed the sort function, but there might be alternatives I'm not aware of.
Shouldn’t need to sort with a voronoi mesh, but nothing wrong with using plain
arrays + size variables.
> • As mentioned, everything in my code is relative to the inhit point.
> Is this a good approach? For example, projection struct has a vector that
> goes from inhit to the projection point, but I don't store the origin of the
> vector anywhere, so someone using the vector that does not know this fact may
> not know what it's origin is. My thought is that these variables will not
> leave my environment so a simple comment explaining that everything is
> relative should be enough.
If you eliminate vectors and projections, I think this one becomes moot. That
said, definitely comment the code.
> I will assume that what I propose doing is good unless I hear feedback
> telling me otherwise.
Your e-mail that followed this was golden, as you essentially demonstrated that
straight-up projections weren’t going to work for even a simple 3 point case
without changes. That implies you went in the right direction, learned
something, and now need to adjust accordingly. ;)
Cheers!
Sean
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
BRL-CAD Developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-devel