
Patch with holes
조회 수: 24 (최근 30일)
이전 댓글 표시
Your quick assistance please :
I got a group of vertices that actually define a square with a squared hole inside. I want the matlab to patch the vertices so it displays the square with the hole inside. As you may know, patch treats the vertices as if they define a closed shape, that is, without the hole inside. can I display that holed shape after all ? Thanks fellows
댓글 수: 0
답변 (4개)
Chad Greene
2018년 5월 24일
There's now a way to do this with standard Matlab functions. Starting with R2017b, the new polyshape function makes it easy. Just put NaNs between the outer shape and the holes.
x = [1 5 5 1 nan 2 4 3];
y = [1 1 6 6 nan 3 2 5];
pgon = polyshape(x,y);
plot(pgon)

댓글 수: 0
the cyclist
2011년 7월 25일
Can you identify the vertices of the hole? If so, you could create a patch for the square, then overlay a patch with the hole.
You should post some code with what you have so far, to help us better understand what you've got.
댓글 수: 0
Kelly Kearney
2011년 7월 25일
If you have the Mapping Toolbox, look at poly2fv, then plot using patch's face/vertex syntax.
This function uses a mex-ed version of the General Polygon Clipper (GPC) library. If you don't have the Mapping Toolbox, and your polygons are complicated enough that triangulating by hand would not be possible, there's at least one FEX entry that seems also mex this library: Polygon Clipper... might be helpful.
댓글 수: 0
Ronen
2011년 7월 26일
댓글 수: 1
Kelly Kearney
2011년 7월 27일
Assuming your polygon lies within a plane, then the surface normal should be easy to calculate (cross product of any two edges). As far as distinguishing outer and inner edges, Matlab uses clockwise vertices to define the outer face and counterclockwise vertices to define any inner faces. Once the polygon has been triangularized, then this wouldn't be so obvious to determine, but I assume you still have the original set of vertices.
참고 항목
카테고리
Help Center 및 File Exchange에서 Elementary Polygons에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!