Matlab:计算矢量和分析曲面的交点

时间:2015-04-17 15:33:58

标签: matlab vector iteration intersection surface

我想计算由给定的向量的R ^ 3中的交点      p + alpha * n其中x是空间矢量,n是另一个矢量,alpha是要确定的标量。

通过配方以分析形式给出表面

f(x,y)= [x,y,z(x,y)]其中z(x,y)可以是任意非线性表面描述

我设置了线性化:

 [n1 n2   n3        ] (d_alpha)= [p1 + alpha*n1 - x]
 [-1  0  -dz(x,y)/dx] (d_x)    = [p2 + alpha*n2 - y]
 [ 0 -1  -dz(x,y)/dx] (d_y)    = [p3 + alpha*n3 - z(x,y)]

并搜索迭代alpha,x和y的起始值

但是,我似乎无法融合在这里。知道我的错误在哪里吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以将等式编写为

x_line(a) = p1 + a * n1
y_line(a) = p2 + a * n2 
z_line(a) = p3 + a * n3
z_plane(x, y) = fun(x, y)

假设您的问题有一个独特的解决方案,那么作为dz的函数,沿着平面上方线的z方向a的高度就是

dz(a) = z_line(a) - fun(x_line(a), y_line(a))
      = p3 + a * n3 - fun(p1 + a * n1, p2 + a * n2)

要查找线与平面的交点,您只需找到a为零的dz值。这可以在Matlab中使用anonymous functionfzero来完成,如下所示:

dz = @(a) = p3 + a * n3 - fun(p1 + a * n1, p2 + a * n2);
a_intersect = fzero(dz, a0);

其中a0a的某些(任意)开始猜测。 您可能需要阅读一些关于光线追踪的内容,我想您可能会在网上找到一些介绍性的大学笔记。这是寻找例如非常标准的问题。光线与曲面镜或抛物面镜的交点。