0

円上の点を3次元で返す関数が必要です。

円は、点AとB、およびその半径によって定義される線分を「キャップ」する必要があります。各キャップは線分に垂直です。エンドポイントの1つを中心とします。

これはくだらない図です

4

2 に答える 2

1

NをAからBの方向の単位ベクトル、つまりN =(BA)/ length(AB)とします。最初のステップは、{N、X、Y}が基底を形成するように、さらに2つのベクトルXとYを見つけることです。つまり、{N、X、Y}のすべてのペアが互いに垂直になるように、またそれらがすべて単位ベクトルになるように、さらに2つのベクトルが必要です。これについて考える別の方法は、x軸が線分と一致する新しい座標系を作成することです。y軸とz軸の方向を指すベクトルを見つける必要があります。

XとYには無限に多くの選択肢があることに注意してください。どういうわけか、機能する2つを見つける必要があります。

これを行う1つの方法は、最初にベクトル{N、W、V}を見つけることです。ここで、Nは上からのものであり、WとVは(1,0,0)、(0,1,0)、および(0,0)の2つです。 、1)。Nの最小座標に対応するWとVの2つのベクトルを選択します。したがって、N =(.31、.95、0)の場合、Wには(1,0,0)と(0,0,1)を選択します。およびV.(数学オタク注:WとVを選択するこの方法により、{N、W、V}がR ^ 3にまたがることが保証されます)。次に、グラムシュミットプロセスを{N、W、V}に適用して、上記のようにベクトル{N、X、Y}を取得します。プロセスによって変更されないように、ベクトルNを最初のベクトルにする必要があることに注意してください。

これで、線分に垂直で互いに垂直な2つのベクトルができました。これは、Aの周りの円上の点がX * cos t + Y * sin t + Aであることを意味します。ここで、0 <= t <2*piです。これは、2次元の円の通常の説明とまったく同じです。上記の新しい座標系で記述されているだけです。

于 2010-09-28T03:21:19.547 に答える
1

David Normanが指摘したように、核心はNに直交する2つの直交する単位ベクトルX、Yを見つけることです。しかし、これらを計算するより簡単な方法は、Nを(1,0、 0)次に、XとしてQの下の(0,1,0)の画像を取り、YをQの下の(0,0,1)の画像として取ります。これは複雑に聞こえるかもしれませんが、次のようになります。

s =(N [0]> 0.0)?1.0:-1.0

t = N [0] + s; f = -1.0 /(s * t);

X [0] = f * N [1] * t; X [1] = 1 + f * N [1] * N [1]; X [2] = f * N [1] * N [2];

Y [0] = f * N [2] * t; Y [1] = f * N [1] * N [2]; Y [2] = 1 + f * N [2] * N [2];

于 2010-09-28T13:48:08.800 に答える