|
 |
On 8/19/19 4:28 PM, Andreas Kaiser wrote:
>
> see CSG::Compute_BBox() in CSG.cpp and Quadric::Compute_BBox(Vector3d&
> ClipMin, Vector3d& ClipMax) in Quadric.cpp:
> ...
> Make_BBox_from_min_max(BBox, NewMin, NewMax);
>
> /* Beware of bounding boxes too large. */
>
> if((BBox.size[X] > CRITICAL_LENGTH) ||
> (BBox.size[Y] > CRITICAL_LENGTH) ||
> (BBox.size[Z] > CRITICAL_LENGTH))
> Make_BBox(BBox, -BOUND_HUGE/2, -BOUND_HUGE/2,
> -BOUND_HUGE/2, BOUND_HUGE, BOUND_HUGE, BOUND_HUGE);
>
> CRITICAL_LENGTH is defined as 1.0e06, BOUND_HUGE/2 as 1.0e10 in both
> cases.
>
> This code will never shrink/limit the resulting BBox like the comment
> above might suggest.
> It will 'blow up' instead all dimensions of a BBox if just one of its
> dimensions exceeds CRITICAL_LENGTH (which is still smaller than the
> resulting dimension(s)).
>
> I have no idea what the original intention might have been.
>
That bit of code came in with v3.0, but I have no idea why. I 'think' it
might be doing what's intended...
The aim isn't to shrink the bounding box, but rather to make it so
large, if already >1e6 on any side, that it is seen as an infinite
object and not included in normal bounding. BOUND_HUGE is larger than
MAX_DISTANCE (1e7). I say this without verifying that this the real
behavior though.
Bill P.
Post a reply to this message
|
 |