Matlab求切线和法平面(surfnorm,jacobian)
1、matlab中绘制法线的函数是:
surfnorm(X,Y,Z) 绘制(X,Y,Z)所表示的曲面的法线
[Nx,Ny,Nz] = surfnorm(X,Y,Z) 给出(X,Y,Z)所表示的曲面的法线数据
举个例子:绘制一个球面x^2+y^2=z^2的法线。
输入命令
[X,Y,Z] = sphere(); %sphere函数绘制半径为1的圆
surfnorm( X, Y, Z ); %绘制圆形法线
surfnorm(X( : ,11 : 21), y( : ,11 : 21), ( : ,11 : 21 ),) %这边取一半的数据,绘制半个
2、绘制切线和法平面最重要的函数当然是jacobian.
jacobian( [ x ,y ,z ], t )就能得到 x, y, z 关于 t 的导数
输入命令定义空间曲线
syms x y z t %声明xyzt为变量
x = sin(t); y = cos(t);z = 2*t
S = jacobian([x,y,z],t) %S
我们可以看到S即曲线方程的切向量
我们要求某一点的导函数需要给S中的t赋值,假如要找在t=pi/4处的法线。
t = pi/4;
S0 = subs(S); %subs用来替换S中给t新赋的值
此时S0 =
求在t=pi/4处的切线和法平面方程
切线方程F为
x = x0 + x”(t)
y = y0 + y”(t)
z = z0 + z”(t)
法平面方程G为
( x – x0) * x”( t0 ) + ( y- y0) * y”(t0) + (z-z0) * z”(t0) = 0
转为matlab语句可写为
F=-[ x; y; z ]+[ x0; y0; z0 ]+S0 * t
G=[x – x0, y – y0, z – z0] * S0
回到程序,输入命令
x0=sin(t)
y0=cos(t)
z0=2*t
F=-[ x; y; z ]+[ x0; y0; z0 ]+S0 * t
G=[x – x0, y – y0, z – z0] * S0
可使用命令pretty(F),pretty(G)来查看切线和法平面方程
得到切线方程F,和法平面方程G以后,绘制图形就手到擒来了。
You can learn anything!