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.
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. std::sqrt( AM.det( )), 0) )
replace the line:
if ( are_near(AM.det(), 0) )
with the line:
if ( are_near(
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.