2

我有一些我在 matlab/octave 中绘制的 3D 参数方程,并且想知道它们在哪里相交,我该如何去做。请注意,这只是一个简单的例子,我计划有多个相交的参数方程。

我想要做的是在一个交叉点开始和结束每个情节。

我的第一个想法是将(t)处找到的所有交点放入一个数组中并绘制我想要的那些我只是无法弄清楚如何获得(t)处的交点

下面的示例 matlab/octave 代码:

clear all, clf
t = 0:pi/60:2.45*pi;
plot3 ((t).*cos(t), (t).*sin(t), (t),'b*'); 
hold on
plot3 ((t).*sin((t)),  (t).*cos((t)),  (t),'r'); 

这是一个箭头指向交叉点的图像

图片

4

1 回答 1

0

我想说,如果可能的话,最好用分析方法求解这个方程组。

看,使用您的原始代码(只是更改了绘制的线条样式)

clear all, clf
t = 0:pi/60:2.45*pi;
plot3 ((t).*cos(t), (t).*sin(t), (t),'*b-');
hold on
plot3 ((t).*sin((t)),  (t).*cos((t)),  (t),'or-');

我在其中一个十字路口有这张照片:

在此处输入图像描述

这很好,因为这两个图在其中一个绘制点中完美地相交。

现在考虑以下情况。我将您的第二行更改为

t = 0:0.05:2.45*pi;

现在我在交叉点看到了这个:

在此处输入图像描述

现在,为不同的参数值生成的两条 3D 折线t在一般情况下不会有任何共同点。因此,对这些线性段的交叉点的简单检查将失败。

如果您将方程式更新为具有更复杂依赖关系的更复杂的方程式,也会发生同样的事情t(否则您真的很幸运)。分析解决方案(如果可能)在这里将是无与伦比的。

作为一种数值方法,考虑从一条线上的任意点 P1(x1(t1),y1(t1),z1(t1)) 到任意点 P2(x2(t2),y2(t2) 的距离 D ,z2(t2)) 在另一个上。然后找到 D 的最小值作为两个独立参数 t1 和 t2 的函数。如果 D 至少为零(或非常接近于零),则这两条线相交。否则他们只是互相通过。

于 2013-05-18T11:49:06.580 回答