How do you convert a surf object to an isosurface?
8 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
John D'Errico
2024 年 5 月 6 日
It is an ellipsoid though! It is far simpler to test if a point lies inside an ellipsoid, if that is all you need.
採用された回答
Yatharth
2024 年 5 月 14 日
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 件のコメント
Yatharth
2024 年 5 月 15 日
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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Surface and Mesh Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!