How to compute the intersections of 3D curves.

Dear everyone:

     I now work on a mesh generation application with open Cascade. However, the constraints, including the vertex, curves and surfaces have to be standardized or checked before the the grid tessellation. That means, the intersections of these constraints have to be obtained. I have check the documents and source codes of open Cascade and the "Modeling Algorithms" part could compute intersections of the follows:

  • the intersections between two 2D curves;
  • the self-intersections of a 2D curve;
  • the intersection between a 3D curve and a surface;
  • the intersection between two surfaces.

    However, I didn't find some function or class to compute the intersections of two 3D curves(only for 2D curves above). I wonder if Open Cascade has provided a way to do such a thing. I would be so thankful if you have some ideas and provide the guidance. Have a good day:)

 

P G's picture

class ExtremaCurveCurve from GeomAPI
        ---Purpose: Describes functions for computing all the extrema
        -- between two 3D curves.
        -- An ExtremaCurveCurve algorithm minimizes or
        -- maximizes the distance between a point on the first
        -- curve and a point on the second curve. Thus, it
        -- computes start and end points of perpendiculars
        -- common to the two curves (an intersection point is
        -- not an extremum unless the two curves are tangential at this point).
        -- Solutions consist of pairs of points, and an extremum
        -- is considered to be a segment joining the two points of a solution.

Once's picture

This seems to be a means to compute the extremum of the curves, though I don't know its exact meaning. Thanks any way, hope you a good day~

Shing Liu's picture

IntTools_EdgeEdge Class Reference

~The class provides Edge/Edge intersection algorithm based on the intersection between edges bounding boxes.

But you should make the geometry curve to edge first.

Once's picture

Thank you so much, your answer is very helpful:). I know how to make a curve to be an edge with the BRep_Builder class. Wish good luck always being with ya~

WenBo Zhang's picture

but how to get the intersection point?

below is the code:

TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(aCurve);
IntTools_EdgeEdge eeInter1ToEdge(edge1, edge);
eeInter1ToEdge.Perform();
if (eeInter1ToEdge.IsDone() && eeInter2ToEdge.IsDone()) {
IntTools_SequenceOfCommonPrts commonParts1ToEdge = eeInter1ToEdge.CommonParts();
//the IntTools_SequenceOfCommonPrts is just the intersection edges,
// have no methoeds to get the intersection point;

}

if you have some solutions, pls tell me.