[已解决] 参数曲面求切平面的问题

[复制链接]
曹呆呆槑 发表于 2021-3-31 10:31:34
u1=linspace(3,5,101);
th=0:0.1*pi/180:2*pi;
[U,Th]=meshgrid(u1,th);
alpha=10*pi/180;
p=0.05;
x=-U.*cos(alpha).*sin(Th);
y=U.*cos(alpha).*cos(Th);
z=-U.*sin(alpha)+p*Th;
mesh(x,y,z);

已知空间一个曲面,想画出该曲面在某一点处的切平面


需要分别求出该点的三个偏导数再进行求解
一个问题是偏导数清楚怎么求;
还有一个问题是求出切平面方程F(x,y,z)=0,如何将这个平面在matlab中画出来

希望有老师能给点思路一下

屏幕截图 2021-03-31 101946.png

最佳答案


EngineerLeon 发表于 2021-4-8 15:51:08
曹呆呆槑 发表于 2021-4-8 14:59
x,y的网格不知道怎么确定
x,y是根据u和th确定的
我自己把u和th作为参数计算出x,y的最值,然后对其进行 ...

你的三维图归根结底是在xyz坐标系中绘制的,所以才说直接用x,y的网格,这有什么"不知道怎么确定"的呢?

你的切点肯定在原曲面上,而且你有切点的参数数值,可以算出来切点的xyz坐标,比如 [ x0, y0, z0 ],法向量的计算去按知乎那里的推导过程计算,假定求出切点的法向量是  [ a, b, c ],切点本身也在切平面上,所以平面方程可以表达为
a * x0 + b * y0 + c * z0 == a * x + b * y + c * z

x, y, z就是切平面的坐标应当满足的关系式

这个式子总可以表达为 z = p1 * x + p2 * y + p3 的形式
(特定曲面的某些切面可能由于与坐标轴平行或垂直等特殊关系,x, y, z中有某个或某两个会不存在,即对应的法向量含有两个或一个零,那些特例反更简单,这里不讨论)

它对应着 z = @( x,  y ) p1 * x + p2 * y + p3 形式的函数,你自己按照图里面想要绘制切面的 x, y 区域,meshgrid生成网格,代入上述函数里面,这不就三个绘图用的矩阵全都有了么!然后调用surf或者mesh之类绘制切平面

5 条回复


EngineerLeon 发表于 2021-4-6 10:11:02
知乎上面有推导过程,自己去看
  1. zhihu.com/question/36705383
复制代码

无非就是自己根据那个推导过程计算一下特定切点的法向量的数值,再根据法向量得到切平面的方程并绘图

上图是你的参数曲面的四个随机切点的法向量与切平面,太扁了看着不明显
TangentPlanes00.png

下图是椭球的四个随机切点的法向量与切平面
TangentPlanes01.png






曹呆呆槑 发表于 2021-4-7 16:46:19
EngineerLeon 发表于 2021-4-6 10:11
知乎上面有推导过程,自己去看

无非就是自己根据那个推导过程计算一下特定切点的法向量的数值,再根据法向 ...

根据您的建议现在确定u=4,Th=90°处切平面方程
切点[x1,y1,z1],法向量[x',y'z']
切平面方程表示为
x'(x-x1)+y'(y-y1)+z'(x-z1)=0
一个是不知道怎么将这种平面方程转化成参数(u,th)的参数方程,并且绘制出来;


EngineerLeon 发表于 2021-4-8 07:31:29
曹呆呆槑 发表于 2021-4-7 16:46
根据您的建议现在确定u=4,Th=90°处切平面方程
切点[x1,y1,z1],法向量[x',y'z']
切平面方程表示为

为什么要舍近求远再转化成参数u, th表达的形式
有了切平面的xyz方程之后,直接用反求一下z = a * x + b * y + c的表达式,然后用x,y的网格绘制啊

曹呆呆槑 发表于 2021-4-8 14:59:59
EngineerLeon 发表于 2021-4-8 07:31
为什么要舍近求远再转化成参数u, th表达的形式
有了切平面的xyz方程之后,直接用反求一下z = a * x + b * ...

x,y的网格不知道怎么确定
x,y是根据u和th确定的
我自己把u和th作为参数计算出x,y的最值,然后对其进行划分网格,然后画出来的图形是这样的
所以转换成u和th的网格比较清楚
后面参数变化的话也知道应该怎么调整。
untitled.png

EngineerLeon 发表于 2021-4-8 15:51:08
曹呆呆槑 发表于 2021-4-8 14:59
x,y的网格不知道怎么确定
x,y是根据u和th确定的
我自己把u和th作为参数计算出x,y的最值,然后对其进行 ...

你的三维图归根结底是在xyz坐标系中绘制的,所以才说直接用x,y的网格,这有什么"不知道怎么确定"的呢?

你的切点肯定在原曲面上,而且你有切点的参数数值,可以算出来切点的xyz坐标,比如 [ x0, y0, z0 ],法向量的计算去按知乎那里的推导过程计算,假定求出切点的法向量是  [ a, b, c ],切点本身也在切平面上,所以平面方程可以表达为
a * x0 + b * y0 + c * z0 == a * x + b * y + c * z

x, y, z就是切平面的坐标应当满足的关系式

这个式子总可以表达为 z = p1 * x + p2 * y + p3 的形式
(特定曲面的某些切面可能由于与坐标轴平行或垂直等特殊关系,x, y, z中有某个或某两个会不存在,即对应的法向量含有两个或一个零,那些特例反更简单,这里不讨论)

它对应着 z = @( x,  y ) p1 * x + p2 * y + p3 形式的函数,你自己按照图里面想要绘制切面的 x, y 区域,meshgrid生成网格,代入上述函数里面,这不就三个绘图用的矩阵全都有了么!然后调用surf或者mesh之类绘制切平面
回复此楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表