Triangular surface
13 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Richard Brown
on 4 May 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
More Answers (1)
Teja Muppirala
on 7 May 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 Comments
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!