2

Matlab には、3 次元座標系で xy 平面を横切る 3D 曲線 (3 つの座標を持つ配列) があります。「曲線」は x、y、z ポイントの集まりであり、その形状は 3D 空間全体に広がり、原点に向かってらせんを描く楕円形です。xy 平面を数回横切ります。曲線が xy 平面と交差するとき (つまり、z=0 のとき) に x 座標と y 座標を補間したいと思います。どうすればいいですか?

4

1 に答える 1

1

3 つのベクトルxy、および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 に答える