How do you convert a surf object to an isosurface?
    14 views (last 30 days)
  
       Show older comments
    
How to convert a regular surf surface (rectangular mesh) to a  patch isosurface (triangular mesh)? 
I have seen how to go the other direction, but this one eludes me. After creating the isosurface, I need to run inpolyhedron() to see if points are inside or outside the object.
theta = (pi:0.1:pi);
phi = 0:0.1:pi);
[THETA, PHI] = meshgrid(theta, phi);
x = cos(THETA).* sin(PHI);
y = sin(THETA).*sin(PHI);
z = cos(PHI;
ellipsoid = surf(x,y,z);
(Extract the isosurface from the ellipsoid...)
fv = isosurface(something something ...)
pts = rand(5,3);
in = inpolyhedron(fv,pts);  % check if points are inside or outside object
2 Comments
  John D'Errico
      
      
 on 6 May 2024
				It is an ellipsoid though! It is far simpler to test if a point lies inside an ellipsoid, if that is all you need.
Accepted Answer
  Yatharth
      
 on 14 May 2024
        Hi Kurt,
You can use the "delaunayTriangulation" function, to convert the rectangular mesh to a triangular mesh.
for your given code, here is how you can use the function:
theta = (0:0.1:2*pi); % Corrected range for theta
phi = (0:0.1:pi);
[THETA, PHI] = meshgrid(theta, phi);
x = cos(THETA).* sin(PHI);
y = sin(THETA).*sin(PHI);
z = cos(PHI);
h = surf(x,y,z);
axis equal; % Equal aspect ratio for all axes
X = get(h, 'XData');
Y = get(h, 'YData');
Z = get(h, 'ZData');
% Flatten the matrices
x = X(:);
y = Y(:);
z = Z(:);
figure;
DT = delaunayTriangulation(x, y, z);
tetramesh(DT, 'FaceAlpha', 0.3); % Adjust 'FaceAlpha' for transparency
axis equal;
You can refer to the "delaunaytriangulation" function documentation here https://www.mathworks.com/help/matlab/ref/delaunaytriangulation.html 
3 Comments
  Yatharth
      
 on 15 May 2024
				Hello, have you tried using "pointLocation" function? https://www.mathworks.com/help/matlab/ref/delaunaytri.pointlocation.html 
for making it invisible set the "FaceAlpha" to 0.
More Answers (0)
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!
