Given vertex points of two 2D polygons plotted in 3D space (x,y,z) how to determine if they intersect?

조회 수: 7 (최근 30일)
Let's say I have some set of vertices:
[x1,y1,z1;
...
xn,yn,zn];
and
[a1,b1,c1;
...
an,bn,cn];
where the two polygons are 2D (all vertices for one polygon lie on the same plane)
What MATLAB function allows you to determine if they intersect or overlap at all?
I've looked at both patch() and fill3() functions for plotting, but they dont work with overlap or intersect functions I've found so far since I'm plotting the 2D polygons in 3D space.

채택된 답변

MarKf
MarKf 2022년 12월 1일
편집: MarKf 2022년 12월 1일
Unfortunately intersect only works for 2D polyshape objects, whereas for 3D you can use alphaShape and then a numerical solution involving testing most of the surface points with inShape.
Depending on the simplicity of your shapes, there are also analytical solutions, for example either by computing the intersection between the planes of the polygons (see for example fileexchange planes-intersection) and checking if the line is within both areas, or with fileexchange SurfaceIntersection.
  댓글 수: 1
Michael Ferguson
Michael Ferguson 2022년 12월 1일
Thanks for the suggestion. I think I've found a workaround to my problem by creating a 3D bounding box around each of the polygons with some small height and finding the overlapping volume of those boxes as described in this post.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Elementary Polygons에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by