在Matlab中,我有一条3D曲线(具有3个坐标的数组),它在三维坐标系中穿过xy平面。 “曲线”只是一堆x,y,z点,其形状为椭圆形,横跨3D空间并朝向原点螺旋。它多次穿过xy平面,我想在曲线与xy平面相交时插入x和y坐标(即当z = 0时)。我该怎么做?
答案 0 :(得分: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个零交叉,但我认为它也适用于任何数量的交叉。