![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/234906/image.png)
Draw partial spheroid include a spheroid
조회 수: 2 (최근 30일)
이전 댓글 표시
I want to draw 1/8 spheroid include a small spheroid and output the geometry for mesh. But my current coding always have discontinue in the cutting plan.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/231763/image.png)
Can anyone help provide a idea of cutting the spheroid in 1/8 not for showing but get the data.
댓글 수: 0
채택된 답변
Bruno Luong
2019년 8월 21일
편집: Bruno Luong
2019년 8월 21일
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/234906/image.png)
% radius of the inner/outer spherical parts
r1 = 1;
r2 = 2;
n = 20; % discretization parameters of spherical parts
W = allVL1(3, n); % FEX file
% Connectivity
XY = W*[0 1 0;
0 0 1].';
F=delaunay(XY);
% Points in S2
Tri3 = eye(3);
W = W/n;
XYZ = W*Tri3';
XYZ = XYZ ./ sqrt(sum(XYZ.^2,2));
% inner/outer sphericals
XYZ1 = XYZ*r1;
XYZ2 = XYZ*r2;
% TRUE for points on the boundary
ibdr = W==0;
close all
patcharg = {'FaceColor', 'g', 'FaceAlpha', 0.5};
patch('Faces', F, 'Vertices', XYZ1, patcharg{:});
patch('Faces', F, 'Vertices', XYZ2, patcharg{:});
for k=1:3
XYZk = [XYZ1(ibdr(:,k),:); flipud(XYZ2(ibdr(:,k),:))];
% You are free to mesh XYZk, I leave it as polygonal shape (quarter of a rings)
patch('XData', XYZk(:,1), 'YData', XYZk(:,2), 'ZData', XYZk(:,3), patcharg{:});
end
view(3)
axis equal
댓글 수: 13
Kim
2019년 10월 17일
Since I have a similar problem, I tried to compile this programm but as in my case, I always get the error "Input argument must be a triangulation object."
Could anybody point out, what mistake I've been making?
추가 답변 (2개)
darova
2019년 8월 19일
Use patch() to generate planes
clc,clear
R = 10;
r = 3;
t = linspace(0,pi/2,20);
x = [r*cos(t) fliplr(R*cos(t))];
y = [r*sin(t) fliplr(R*sin(t))];
patch(x,y,x*0,'b')
hold on
patch(x,x*0,y,'b')
patch(x*0,x,y,'b')
hold off
alpha(0.5)
view(3)
Abhisek Pradhan
2019년 8월 7일
Following code may be used as an alternative to draw a sphere. Theta and Phi can be varied to get the desired result.
R=10;
Phi=linspace(-pi,pi);
Theta=linspace(0,2*pi);
[Phi,Theta]=meshgrid(Phi,Theta);
Z=R*sin(Phi);
X=R*cos(Phi).*cos(Theta);
Y=R*cos(Phi).*sin(Theta);
hSurface = surf(X,Y,Z);
set(hSurface,'FaceColor',[0 0 1], 'FaceAlpha',0.5,'FaceLighting','gouraud','EdgeColor','none');
참고 항목
카테고리
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!