Triangular surface
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a surface defined in x, y, z and i am able to get a surface produced using surf(x,y,z). However i want to produce a surface composing of triangles rather than quadrilaterals. The surface is essentially a sphere. And i would like it to be displayed as a triangular surface.
I think i need to use trisurf(tri, x,y,z) but i dont understand the "tri" input. Examples use the delauney(x,y) function but i dont understand what this does and what the alternative for a sphere would be.
Thanks
0 commentaires
Réponse acceptée
Richard Brown
le 4 Mai 2012
Simple example using DelaunayTri. First create a set of points
N = 1000;
theta = 2*pi*rand(N, 1);
phi = acos(2*rand(N, 1) - 1);
x = cos(theta).*sin(phi);
y = sin(theta).*sin(phi);
z = cos(phi);
Mesh the volume using DelaunayTri
Tfull = DelaunayTri(x, y, z);
Find the triangulation on the boundary using freeBoundary
[T, X] = Tfull.freeBoundary();
trisurf(T, X(:, 1), X(:, 2), X(:, 3))
axis equal
Plus de réponses (1)
Teja Muppirala
le 7 Mai 2012
There is also the SURF2PATCH function, which can turn quadrilaterals into triangles. For example:
figure;
[x,y,z] = sphere;
s = surf(x,y,z);
patch(surf2patch(s,'triangles'));
delete(s);
shading faceted;
view(3);
axis equal
Or, without the intermediate call to SURF
figure;
[x,y,z] = sphere;
p = surf2patch(x,y,z,'triangles');
p.facevertexcdata = p.vertices(:,3); %Need this to add color
patch(p);
shading faceted;
view(3);
axis equal
0 commentaires
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!