Speeding up the surface-to-surface intersection

jianbaoxia

CAD master
OCC's surface-to-surface intersection algorithm seems a bit slow. I'm planning to work on speeding up the surface-to-surface intersection calculations. I was wondering if anyone has any suggestions. The main focus will be on cases where two NURBS surfaces intersect. o_O
 

Quaoar

Administrator
Staff member
I would start with the classical paper by Barnhill and check the references to it. You probably need a variation of "marching method".
 

Attachments

  • Barnhill et al. - 1987 - Surface surface intersection.pdf
    2.9 MB · Views: 8

jianbaoxia

CAD master
I would start with the classical paper by Barnhill and check the references to it. You probably need a variation of "marching method".
Thank you very much for your help. I have spent two weeks reading literature on surface/surface intersection and have found that it is indeed a challenging problem.
Typical approaches include the algebraic method, the tracing method, the lattice method, the subdivision method, the homotopy method, as well as hybrid methods. The surface intersection algorithm used in OCCT seems to be these classical algorithms. Ensuring the accuracy, speed, and robustness of the intersection calculation is indeed challenging.

I'll keep work! o_O
 

Quaoar

Administrator
Staff member
I don't have anything constructive to say, but I heard about successful implementation of spline-spline intersection algorithm in the CADO kernel by VKI (Von Karman Institute for Fluid Dynamics, Belgium). The guy used a sort of a marching method which sort of looked very classical and close to OpenCascade's implementation. I bet it was faster because it did not have to work on a range of edge cases and was specialized to typical surfaces you encounter in turbomachinery field. Anyways, if I were you, I would have probably started with a "standard" algorithm and see how far I can get there.

Good luck in the case you're going to start with that. Keep us posted!

P.S. for this VKI work, one reference would be this one: http://www.dem.ist.utl.pt/engopt2010/Book_and_CD/Papers_CD_Final_Version/pdf/01/01297-01.pdf. It does not uncover much of the detail about the geometry as such, but you can probably search around or contact Tom Verstraete (the author) for more.
 

jianbaoxia

CAD master
I don't have anything constructive to say, but I heard about successful implementation of spline-spline intersection algorithm in the CADO kernel by VKI (Von Karman Institute for Fluid Dynamics, Belgium). The guy used a sort of a marching method which sort of looked very classical and close to OpenCascade's implementation. I bet it was faster because it did not have to work on a range of edge cases and was specialized to typical surfaces you encounter in turbomachinery field. Anyways, if I were you, I would have probably started with a "standard" algorithm and see how far I can get there.

Good luck in the case you're going to start with that. Keep us posted!

P.S. for this VKI work, one reference would be this one: http://www.dem.ist.utl.pt/engopt2010/Book_and_CD/Papers_CD_Final_Version/pdf/01/01297-01.pdf. It does not uncover much of the detail about the geometry as such, but you can probably search around or contact Tom Verstraete (the author) for more.
Thank you very much for your help. The more I delve into the geometric kernel, the more I realize the weaknesses in my mathematical foundation. There is still much for me to learn, and I hope to share and encourage each other with everyone in the forum. 😁
 
Top