在 Matlab 中,我有一个在 3 维坐标系中穿过 xy 平面的 3D 曲线(具有 3 个坐标的数组)。“曲线”只是一堆 x、y、z 点,它的形状是椭圆形的,横跨 3D 空间并螺旋向原点。它多次穿过 xy 平面,我想在曲线与 xy 平面相交时(即当 z=0 时)插入 x 和 y 坐标。我该怎么做?
问问题
556 次
1 回答
1
假设你有 3 个向量x
, y
, 和z
坐标,
crossidx = find(diff(sign(z)) ~= 0); % z(zcross) and z(zcross+1) have different signs
z1 = z(crossidx);
z2 = z(crossidx+1);
dz = z2 - z1;
alpha = -z1;
beta = z2;
xcross = (beta*x(crossidx) + alpha*x(crossidx+1))./dz;
ycross = (beta*y(crossidx) + alpha*y(crossidx+1))./dz;
zcross = 0;
hold on; plot3(xcross, ycross, zcross, '*');
它应该适用于正到负或负到正交叉。我编写的代码假设只有 1 个零交叉,但我认为它也适用于任意数量的交叉。
于 2013-04-03T02:47:32.437 回答