Change precision check of "is point on line" to be 0.01mm

Precision::Confusion() is 1e-7 which is too small apparently when doing this math. There are plenty of results which are things like 5e-7.
This commit is contained in:
Dion Moult
2024-03-28 16:56:19 +11:00
parent 84c931bb5f
commit 04599a10d2
+2 -2
View File
@@ -388,7 +388,7 @@ namespace IfcGeom {
// Check if the point is on the line defined by start and end
// by checking if the cross product is (near) zero vector, indicating collinearity.
gp_Vec crossProduct = startToPoint.Crossed(startToEnd);
if (crossProduct.Magnitude() > Precision::Confusion()) {
if (crossProduct.Magnitude() > 1e-5) {
return false; // Not collinear, hence not on the line segment
}
return true; // The point is on the line segment
@@ -403,7 +403,7 @@ namespace IfcGeom {
// Check if the point is on the line defined by start and end
// by checking if the cross product is (near) zero vector, indicating collinearity.
gp_Vec crossProduct = startToPoint.Crossed(startToEnd);
if (crossProduct.Magnitude() > Precision::Confusion()) {
if (crossProduct.Magnitude() > 1e-5) {
return false; // Not collinear, hence not on the line segment
}
return true; // The point is on the line segment