From: Krzysztof K. <twe...@gm...> - 2014-08-14 15:12:56
|
Hello I found some old e-mails that indicate that the big problems that caused the topo-boolops failures are: 1. imprecision in root finding 2. imprecision in subdivision. The first issue is demonstrated by bezier-test and sbasis-test. This is a little puzzling to me, because the algorithm used for finding Bezier roots (convex hull marching) should in principle find roots up to the full precision of the representation. I saw some magic precision constants being used in the code, so that might be the culprit. If anyone has an idea of why roots are currently imprecise, let me know. Regarding the second issue, I added some unit tests that indicate that subdivision of one fragment (be it Bezier or SBasis) is actually exact, in the sense that A.at1() == B.at0(). The actual problem is the simultaneous subdivision of two fragments. If we have fragments A and B and we determine that they intersect at time values (a, b), we need an API that produces four Beziers A1, A2, B1, B2 such that A1.at1() == A2.at0() == B1.at1() == B2.at0() exactly. This is required because A.valueAt(a) will almost always be slightly different from B.valueAt(b). More generally, given a vector of time value pairs, we need to create a vector of result Beziers adhering to the above condition. Regards, Krzysztof |