1

私は3本の平行線を持っています(すべて3D線です)。AB、CD、EFと言います。中心線、つまりCDは、AB、DEが存在する2つの平面の交点によって与えられます。ABとCDの間の最短距離(たとえばd1)は、CDとEF(たとえばd2)と正確に等しくありません。

中心線からの距離が短い線は、他の線と等距離の間隔を空けて、4番目の線に置き換える必要があります。

私は各線のベクトルを知っており、3Dポイントが各線上にあることも知っています。(ABとEFの場合、線上にある別の点を知っています。つまり、ABとEFは線分と見なすことができます)

私はそれをやろうとしていました。しかし、正確に理解することはできず、いくつかの間違った答えを得ました。時々4行目で分離がより短くなります(ベクトルが他の方向を向いているか、間違った方向をたどっている可能性があります)。AB、CD、EFラインのベクトルは同じ方向を向いていません。

だから、私はこれを行うための具体的な方法を探しています。私はc++でこれを行うためのvector3とlineクラスを持っています。

誰かがこれを行う方法を教えてくださいb1本の線をシフトする(つまり4本目の線を引く)。ありがとう

4

1 に答える 1

2

そこにある数式の植字機能がこの回答に非常に役立ったので、私は数学スタック交換であなたの質問に答えました。中心となるアイデアは、中心線から他の各線を指し、線の方向に垂直な2つのベクトルを確立することです。次に、これらのベクトルの長さを比較し、短い方のベクトルを長い方のベクトルの長さにスケーリングし、そのスケーリングされたベクトルを使用して新しい行を取得できます。

于 2012-11-29T07:53:23.957 に答える