Matlab求切线和法平面(surfnorm,jacobian)

时间:2024-03-07 11:38:46

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!