RFR: 8176501: Method Shape.getBounds2D() incorrectly includes Bezier control points in bounding box [v2]

Laurent Bourgès lbourges at openjdk.java.net
Thu Nov 11 10:21:35 UTC 2021


On Thu, 11 Nov 2021 09:40:07 GMT, Jeremy <duke at openjdk.java.net> wrote:

>> Ideally jdk could provide new math methods:
>> - evalPoly(eqn[])
>> - find roots...
>> Based on compensated horner scheme and Math.fma() ~ 0.5 ulp
>
> I attempted to explore a numerical approach to pad the bounding box here 4b9d87d6d03e923bb2663fc8f4f77b7549df6e70 ... but I don't like the results so far. Any suggestions? (Or if you have a better approach in mind we can discard that entire class...)

You made an amazing job !
Your bigdecimal impl looks good.
I will play with your test experiment... asap.
I think numerical accuracies are related to the dynamic /magnitude of values: points.
The test should evaluate(max error) depending on the quick length(curve) ~ manhattan norm(curve arms), so small curves have less numerical error whereas huge curve (10^50 length) means points are wide spread and coeffs... solver...points are less accurate.

I will try making sampled control points vary in log scale: 10^-6 to 10^38 (float max) so curve length will vary in huge range and determine the histogram of max(error) / length ratio.

-------------

PR: https://git.openjdk.java.net/jdk/pull/6227



More information about the client-libs-dev mailing list