我认为自己是MATLAB的初学者,所以如果我的问题的答案很明显,请耐心等待。
Phi=0:pi/100:2*pi;
Theta=0:pi/100:2*pi;
[PHI,THETA]=meshgrid(Phi,Theta);
R=(1 + cos(PHI).*cos(PHI)).*(1 + cos(THETA).*cos(THETA));
[X,Y,Z]=sph2cart(THETA,PHI,R);
surf(X,Y,Z); %display
hold on;
x1=-4:.1:4;
[X1,Y1] = meshgrid(x1);
a=1.8; b=0; c=3; d=0;
Z1=(d- a * X1 - b * Y1)/c;
shading flat;
surf(X1,Y1,Z1);
我编写了这段代码,该代码绘制了一个平面与花生形物体相交的三维笛卡尔图。
我需要在2D上获得这些的交集(将成为花生的轮廓,但由于交叉点以某个角度发生,但有点倾斜),但不知道如何。
由于
答案 0 :(得分:3)
如果您只想获得交叉曲线,可以将曲面坐标插入平面方程,找到几乎位于平面内的点。
%# find the distance of `X,Y,Z` to the plane
dist2plane = a*X(:)+b*Y(:)+c*Z(:)-d;
%# find index of the small distances
lowDistIdx = abs(dist2plane)<0.05; %# or some other distance threshold
%# plot the result - note that it's not quite a peanut
figure,plot3(X(lowDistIdx),Y(lowDistIdx),Z(lowDistIdx),'.')
如果您想在2D中使用这些坐标,则需要进行坐标转换。