|
|
Am 23.12.2015 um 16:29 schrieb William F Pokorny:
> For what it is worth, I was following the same numerical accuracy trail.
> Leaving things at Sven's current scale ad changing the following in
> blob.cpp from
>
> /* Minimal intersection depth for a valid intersection. */
> const DBL DEPTH_TOLERANCE = 1.0e-2;
>
> to
>
> /* Minimal intersection depth for a valid intersection. */
> const DBL DEPTH_TOLERANCE = 1.0e-3;
>
> was enough to clean up the solution.
>
> I am not an expert at numerical algorithms but I look at these two
> settings in blob.cpp and I wonder if the values are not perhaps set for
> the old single precision days?
Maybe. Maybe not.
> /* Minimal intersection depth for a valid intersection. */
> const DBL DEPTH_TOLERANCE = 1.0e-6; // previous value 1.0e-2
>
> /* Tolerance for inside test. */
> const DBL INSIDE_TOLERANCE = 1.0e-12; // previous value 1.0e-6
>
> I'd think values such as those updated above not unreasonable these
> days. The above runs OK on the few blobs I have. I don't understand
> enough of the algorithm to know if there are other implications for
> moving to much tighter tolerances.
That's the problem: I don't know anyone familiar enough with the
algorithm to say for sure whether stuff will work or whether it'll break.
Also, if we do touch these things, rather than a fixed "epsilon" for the
precision stuff I think we should instead make the tolerances dependent
on the absolute values involved; to all of my knowledge that's a cleaner
way to handle these things.
> Aside: AA was tending to hide the numerical artifacts which happen in
> quite a few places other than the most obvious in Sven's example.
> Thinking we have perhaps we've been living with some of these accuracy
> issues for a while with AA often cleaning things up to where we don't
> notice?
I doubt that. These artifacts obviously aren't stray random speckle
artifacts. AA blurs them out a bit, but there would still be enough of a
pattern remaining to be noticed.
Post a reply to this message
|
|