Matlab 算数学题 -- 空间曲线求切线和法向量

clc; clear;
syms x y z t
%t = linspace(0,2*pi,100);
x = t-sin(t);
y = 1-cos(t);
z = 4.*sin(t./2); 
S = jacobian([x,y,z],t)  % 曲线方程的切向量(得到x,y,z关于t的导数方程)

t = pi/2;
S0 = subs(S) % 切点处的x,y,z方向分别的切向量

x0 = t-sin(t) % 切点(x0,y0,z0)
y0 = 1-cos(t)
z0 = 4.*sin(t./2)
F = -[x;y;z]+[x0;y0;z0]+S0*t %切线方程
G = [x-x0,y-y0,z-z0]*S0  %法平面方程

figure
%axis square %坐标轴尺寸正方形
%set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')  %隐藏坐标轴
t = linspace(0,2*pi,100);
x = eval(x);
y = eval(y);
z = eval(z);
plot3(x,y,z)
grid on
xlabel('x')
ylabel('y')
zlabel('z')
hold on
u = -1:0.01:1;
x_Tangent = u.*S0(1)+x0;
y_Tangent = u.*S0(2)+y0;
z_Tangent = u.*S0(3)+z0;
plot3(x_Tangent,y_Tangent,z_Tangent) % 切线
xlab = -1:0.1:1;
[x_normalPlane,y_normalPlane] = meshgrid(xlab);
z_normalPlane = double((-S0(1).*(x_normalPlane-x0)-S0(2).*(y_normalPlane-y0))/S0(3))+z0;
mesh(x_normalPlane,y_normalPlane,z_normalPlane)

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值