x=1;
y=2;
theta=pi/10;
r=0.5;
axis equal
t = linspace(0+theta,2*pi+theta,6);
xr = x+r*cos(t);
yr = y+r*sin(t);
xk = zeros(1,11);
yk = zeros(1,11);
xk(1) = xr(1); yk(1) = yr(1); [xk(2) yk(2)] = CrossPoint([xr(1) yr(1)],[xr(3) yr(3)],[xr(2) yr(2)],[xr(5) yr(5)]);
xk(3) = xr(2); yk(3) = yr(2); [xk(4) yk(4)] = CrossPoint([xr(2) yr(2)],[xr(4) yr(4)],[xr(1) yr(1)],[xr(3) yr(3)]);
xk(5) = xr(3); yk(5) = yr(3); [xk(6) yk(6)] = CrossPoint([xr(2) yr(2)],[xr(4) yr(4)],[xr(3) yr(3)],[xr(5) yr(5)]);
xk(7) = xr(4); yk(7) = yr(4); [xk(8) yk(8)] = CrossPoint([xr(3) yr(3)],[xr(5) yr(5)],[xr(1) yr(1)],[xr(4) yr(4)]);
xk(9) = xr(5); yk(9) = yr(5); [xk(10) yk(10)] = CrossPoint([xr(1) yr(1)],[xr(4) yr(4)],[xr(2) yr(2)],[xr(5) yr(5)]);
xk(11)=xk(1);yk(11)=yk(1);
plot(xk,yk);
%fill(xk,yk,'w')
axis equal
axis off;
需要另写一个函数,计算交叉点
function [x,y]=CrossPoint(p1,p2,p3,p4)
x1 = p1(1); y1 = p1(2);
x2 = p2(1); y2 = p2(2);
x3 = p3(1); y3 = p3(2);
x4 = p4(1); y4 = p4(2);
if x1==x2
x = x1;
k2 = (y4-y3)/(x4-x3);
y = k2*(x-x3)+y3;
elseif x3==x4
x = x3;
k1 = (y2-y1)/(x2-x1);
y = k1*(x-x1)+y1;
else
k1 = (y2-y1)/(x2-x1);
k2 = (y4-y3)/(x4-x3);
sol = [-k1 1;-k2 1]\[y1-k1*x1;y3-k2*x3];
x = sol(1);y = sol(2);
end
end
%圆球
syms x y z;
F=x^2+y^2+z^2-16;
nv=jacobian(F,[x y z]);
[x,y,z]=sphere;
surf(4*x,4*y,4*z);
shading interp
%指定某点
x=-1;y=-2;z=sqrt(16-x^2-y^2);
nv=double(subs(nv));
hold on;
quiver3(x,y,z,nv(1),nv(2),nv(3),.5);%法向量
t=-1:.5:1;
[xx,yy]=meshgrid(t+x,t+y);
zz=-(nv(1)*(xx-x)+nv(2)*(yy-y))/nv(3)+z;
mesh(xx,yy,zz);%切平面
clear all;
close all;
figure;hold on;
x1=[0 10 10 0 0];
y1=[0 0 0 0 0];
z1=[0 0 10 10 0];
x2=[10 10 10 10 10];
y2=[0 10 10 0 0];
z2=[0 0 10 10 0];
x3=[0 10 10 0 0];
y3=[10 10 10 10 10];
z3=[0 0 10 10 0];
x4=[0 0 0 0 0];
y4=[0 10 10 0 0];
z4=[0 0 10 10 0];
plot3(x1,y1,z1,'Color',[0 0 0]);
plot3(x2,y2,z2,'Color',[0 0 0]);
plot3(x3,y3,z3,'Color',[0 0 0]);
plot3(x4,y4,z4,'Color',[0 0 0]);
% plot3(x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,x5,y5,z5,'Color',[0 0 0]);
view(3);
x=0:0.1:10;
z=0.4.*(x-5).^2;
y=zeros(length(x));
hold on;
plot3(x,y,z);
y=10.*ones(length(x));
plot3(x,y,z);
y=0:0.1:10;
z=0.4.*(y-5).^2;
x=zeros(length(x));
plot3(x,y,z);
x=10.*ones(length(x));
plot3(x,y,z);
set(gca,'xtick',[],'xticklabel',[]);
set(gca,'ytick',[],'yticklabel',[]);
set(gca,'ztick',[],'zticklabel',[]);