crop the polygon from the 3D surface
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mammadbaghir Baghirzade
am 18 Jun. 2020
Bearbeitet: Mammadbaghir Baghirzade
am 10 Nov. 2020
Hi all,
I have such an attached 3D surface and a polygon on it. (Code is provided below)
I aim to crop the portion which is only inside the polygon and delete everything outside the polygon.
I found out the function of "inpolygon", but it did not work well enough since it is for 2D.
Then I encountered with "inpolyhedron" which is written for 3D, but was not that successfull on using it.
Is there any other way that you would suggest?
Thank you
Regards
2 Kommentare
Kelly Kearney
am 18 Jun. 2020
It's difficult to tell from the picture... does all the data (both the surface and polygon) fall along a single plane?
Akzeptierte Antwort
darova
am 19 Jun. 2020
What about this? I just cutted surface in 2d plane
[X1,Y1,Z1] = sph2cart(llambda1,pphi1,6.9);
surf(X1,Y1,Z1)
in = inpolygon(X1,Y1,xl1,yl1);
view(3);
hold on
plot3(X1(in),Y1(in),Z1(in),'.r')
plot3(xl1, yl1, zl1,'MarkerSize',14, 'Color','red')
axis vis3d

4 Kommentare
Kelly Kearney
am 19 Jun. 2020
Darova beat me to the answer...
Your points don't actually fall on a plane, but rather on a lightly-curved surface. You can crop the data as desired by projecting in onto a 2D plane. That's what Darova's call to inpolygon does, by ignoring the z-coordinates... projects the surface and polygon coordinates onto the XY plane.
And as to how they figured out rr1 = 6.9, if one assumes the polygon vertices fall on the same surface:
[~,~,r] = cart2sph(xl1,yl1,zl1)
r =
6.9 6.9 6.9 6.9 6.9 6.9
Weitere Antworten (1)
darova
am 20 Jun. 2020
Here is another idea using triangulation (initmesh)
- create polygon

- use initmesh to triangulate it

- calculate Z coordinate

- rotate the object

5 Kommentare
Siehe auch
Kategorien
Mehr zu Geometry and Mesh finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

