I want to highlight the curve of intersection of the sphare and the plane x+y+z=0 by a thick blue curve. How to do that?

조회 수: 2 (최근 30일)
I want to highlight the curve of intersection of the sphare and the plane by a thick blue curve. How to do that? I have tried to hightight in the last few line of the code below but it does not work................... where is the mistake
%% Sphere parametrizing in spherical coordinates
R = 1 ;
theta = linspace(0,2*pi) ;
phi = linspace(0,pi/2) ;
[T,P] = meshgrid(theta,phi) ;
X1 = R*cos(T).*sin(P) ;
Y1 = R*sin(T).*sin(P) ;
Z1 = R*cos(P) ;
zlim([0,5])
surf(X1,Y1,Z1,'EdgeColor','r', 'FaceColor', 'none', 'FaceAlpha', .5) ;
% plane
hold on
x1 = -1:0.5:1; x2 = -1:0.5:1;
[X Y] = meshgrid(x1,x2);
Z=-X-Y;
%mesh(X1,Y1,Z1,'FaceAlpha',.5)
surf(X, Y, Z);
zlim([-1.5,1.5]);
xlabel('x')
ylabel('y')
zlabel('z')
%%%%%%%%%%%%% to highlight the curve of intersection of the sphare and the plane by a blue curve
hold on
R = 1 ;
T = 0:0.5:2*pi ;
X2 = R*cos(T) ;
Y2 = R*sin(T) ;
Z2 = -X2-Y2 ;
plot3(X2,Y2,Z2,'b', 'LineWidth',2) ;

채택된 답변

David Goodmanson
David Goodmanson 2022년 6월 11일
편집: David Goodmanson 2022년 6월 11일
Hi Atom,
Your code doesn't work because if you multiply out X2^2 + Y2^2 + Z2^2, you don't get R^2. So that arc is not on the surface of the sphere. The correct arc can be gotten by taking the x,y,z column vector
R*[cos(T),sin(T),0]'
that does lie on the sphere and multiplying by an appropriate 3x3 rotation matrix to put that circular path into the plane x+y+z = 0. However, it can be seen that each of x,y,z is just a linear combination of cos(T) and sin(T), and with some fiddling around one can arrive at the following in place of what you have:
% don't need another hold on since the previous hold on still applies.
T = linspace(0,2*pi,100)
x = R*( cos(T)/sqrt(6) + sin(T)/sqrt(2));
y = R*( cos(T)/sqrt(6) - sin(T)/sqrt(2));
z = R*(-2*cos(T)/sqrt(6));
ind = z<0; % since it's a hemisphere, lop off the curve below z = 0
x(ind)=[]; y(ind)=[]; z(ind)=[];
plot3(x,y,z,'b','linewidth',5)
hold off
You could also restrict T to the appropriate range so that no z<0 points are created in the first place.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Curve Fitting Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by