// as initial point for aPrjPS, so we switch them
gp_Vec2d D;
- if(U == Uinf && mySurface->IsUPeriodic())
+ if((Abs(U - Uinf) < mySurface->UResolution(Precision::PConfusion())) &&
+ mySurface->IsUPeriodic())
{
d1(t, U, V, D, myCurve, mySurface);
if (D.X() < 0) U = Usup;
}
- else if(U == Usup && mySurface->IsUPeriodic())
- {
+ else if((Abs(U - Usup) < mySurface->UResolution(Precision::PConfusion())) &&
+ mySurface->IsUPeriodic())
+ {
d1(t, U, V, D, myCurve, mySurface);
if (D.X() > 0) U = Uinf;
}
- if(V == Vinf && mySurface->IsVPeriodic())
+
+ if((Abs(V - Vinf) < mySurface->VResolution(Precision::PConfusion())) &&
+ mySurface->IsVPeriodic())
{
d1(t, U, V, D, myCurve, mySurface);
if (D.Y() < 0) V = Vsup;
}
- else if(V == Vsup && mySurface->IsVPeriodic())
+ else if((Abs(V - Vsup) <= mySurface->VResolution(Precision::PConfusion())) &&
+ mySurface->IsVPeriodic())
{
d1(t, U, V, D, myCurve, mySurface);
if (D.Y() > 0) V = Vinf;
--- /dev/null
+puts "========"
+puts "CR23703"
+puts "========"
+puts ""
+####################################################################
+## Projection algorithm produces incomplete 2D-Curve
+####################################################################
+
+restore [locate_data_file bug23703_c2x.brep] c
+restore [locate_data_file bug23703_s1.brep] s
+
+mkface f s
+pcurve f
+
+project c2d c s
+
+v2d
+2dfit
+
+set only_screen_axo 1