Standard_Real denom2 = denom*denom;
Standard_Real ddenom = 1. - denom2;
- denom = ( Abs(ddenom) <= 1.e-9 ) ? 1.e-9 : ddenom;
+ //denom = ( Abs(ddenom) <= 1.e-9 ) ? 1.e-9 : ddenom;
+ denom = ( Abs(ddenom) <= 1.e-16 ) ? 1.e-16 : ddenom;
Standard_Real par1 = dist1/denom;
Standard_Real par2 = -dist2/denom;
--- /dev/null
+puts "========"
+puts "OCC24065"
+puts "========"
+puts ""
+#######################################################################
+# Wrong intersection point
+#######################################################################
+
+restore [locate_data_file bug24065_f.brep] f
+restore [locate_data_file bug24065_e.brep] e
+
+# 1
+set CMP_TOL 1.e-7
+set facetolmax [tolmax f]
+regexp {max tol = ([-0-9.+eE]+)} ${facetolmax} full FaceMaxTolerance
+if { ${FaceMaxTolerance} > ${CMP_TOL} } {
+ puts "Error: invalid tolerance of face"
+}
+
+mksurface s f
+mkcurve c e
+intersect i c s
+
+# 2
+set CMP_DIST 1.86835288e-8
+set distmax [projponf f i_2]
+regexp {proj dist = ([-0-9.+eE]+)} ${distmax} full MaxDist
+if { [expr abs(${MaxDist} - ${CMP_DIST})] > ${CMP_TOL} } {
+ puts "Error: Wrong intersection point"
+}