Comment 2 for bug 1309225

Revision history for this message
Alvin Penner (apenner) wrote :

re-posting a proposed solution from Bug 1244861, comment 7

This can be fixed in the file 2geom\ellipse.cpp, routine Ellipse::transformed, line 236.
 replace the line:
     if ( are_near(AM.det(), 0) )
 with the line:
     if ( are_near(std::sqrt(AM.det()), 0) )

    This line is used to bypass the normal processing of a circle if the object is too small. The determinant is used to measure the size of the object. Unfortunately, the determinant is a quadratic function of the radius, when the size measurement should be a linear function of radius, so it approaches zero more rapidly than desired at small radius. Taking the square root avoids the problem.
    Unfortunately, this is in 2geom, so I am reluctant to commit this change, thought I would ask for comment here, from anyone who is more familiar with 2geom.