mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-29 14:00:49 +03:00
0024694: Wrong processing of two surfaces (implicit and parametric) having tangential intersection: it is not found by intersector
This commit is contained in:
@@ -17,6 +17,40 @@
|
||||
#include <gp_Sphere.hxx>
|
||||
#include <gp_Cylinder.hxx>
|
||||
|
||||
|
||||
void IntSurf_QuadricTool::ValueAndGradient (const IntSurf_Quadric& Quad,
|
||||
const Standard_Real X,
|
||||
const Standard_Real Y,
|
||||
const Standard_Real Z,
|
||||
Standard_Real& Val,
|
||||
gp_Vec& Grad,
|
||||
gp_Vec& D1U,
|
||||
gp_Vec& D1V)
|
||||
{
|
||||
gp_Pnt thePoint(X,Y,Z);
|
||||
Quad.ValAndGrad(thePoint, Val, Grad);
|
||||
Standard_Real U, V;
|
||||
Quad.Parameters(thePoint, U, V);
|
||||
Quad.D1(U, V, thePoint, D1U, D1V);
|
||||
}
|
||||
|
||||
void IntSurf_QuadricTool::D2 (const IntSurf_Quadric& Quad,
|
||||
const gp_Pnt& aPoint,
|
||||
gp_Vec& D1U,
|
||||
gp_Vec& D1V,
|
||||
gp_Vec& D2U,
|
||||
gp_Vec& D2V,
|
||||
gp_Vec& D2UV)
|
||||
{
|
||||
Standard_Real U, V;
|
||||
Quad.Parameters(aPoint, U, V);
|
||||
gp_Pnt thePoint;
|
||||
Quad.D1(U, V, thePoint, D1U, D1V);
|
||||
D2U = Quad.DN(U, V, 2, 0);
|
||||
D2V = Quad.DN(U, V, 0, 2);
|
||||
D2UV = Quad.DN(U, V, 1, 1);
|
||||
}
|
||||
|
||||
Standard_Real IntSurf_QuadricTool::Tolerance (const IntSurf_Quadric& Q) {
|
||||
switch (Q.TypeQuadric()) {
|
||||
case GeomAbs_Sphere:
|
||||
|
Reference in New Issue
Block a user