Method ElSLib::SphereVIso() is protected against creation of circle with negative radius when |V| > PI/2; now the circle on analytic continuation of sphere behind poles is returned in this case (thus always with positive or zero radius)
Ve.Multiply(Radius * sin(V));
axes.Translate(Ve);
Standard_Real radius = Radius * cos(V);
+ // #23170: if V is even slightly (e.g. by double epsilon) greater than PI/2,
+ // radius will become negative and constructor of gp_Circ will raise exception.
+ // Lets try to create correct isoline even on analytical continuation for |V| > PI/2...
+ if (radius < 0.)
+ {
+ axes.SetDirection (-axes.Direction());
+ radius = -radius;
+ }
gp_Circ Circ(axes,radius);
return Circ;
}