0

vtk カメラを焦点を中心に回転させようとしています。目的は、モデルを「軌道に乗せる」ことです。

呼び出しを使用しcamera.SetPosiiton(x, y, z)てカメラの位置を設定していますが、レンダリング ウィンドウの更新期間ごとに同じことができることがわかっています。

焦点には位置 (0, 0, 0) があり、他のバウンディング ボックスを取得すると、最初のカメラ (x, y, z) の位置が得られます。焦点 (0, 0, 0) からカメラ位置 9x, y, z) までの距離は、球の半径を表します。

私の頭の中では、これは基本的にポイント (0, 0, 0) の周りでカメラを段階的に動かします。私は、開始カメラ ポイントを供給し、次のカメラ位置を計算するために使用できる数学関数があると推測しています。

これにより、モデルが空間で回転しているように見えるはずです。私のカメラ ビューはすべての x、y、z 平面からずれているため、2 次元の問題ではなく 3 次元の問題になっています。ただし、カメラをモデル (焦点) から同じ距離に維持したい

私が達成しようとしているのは次のようなものです:- 鉛筆を持ってください (私のモデルは長くて狭いです)。腕の長さで指先で持ち、先端を天井に向けます。鉛筆を 30 度まで傾けます。これがカメラの開始位置です。傾斜角度と目からの距離を維持しながら、鉛筆本体を指で回転させます。

この投稿は役に立ちます:球の端に点をプロットしますが、これは最初の x、y 位置に到達するための半径を知っていることを前提としています。

これを行うために必要な数学を教えてください。私の数学はひどく錆びています。

4

2 に答える 2

1

あなたが望むのは、軸を中心にベクトルを回転させることです。これは、回転行列を使用して最も簡単に行うことができます

したがって、目的の回転軸が zx 平面上の z 軸から 30 度傾いている場合、回転軸は (cos(pi/6),0,sin(pi/6)) であり、回転角度をインクリメントし、プラグします。行列Rを取得するために回転行列に入れると、新しいカメラ位置ベクトルはR*(x,y,z)'になります

于 2013-07-30T09:09:44.780 に答える
0

ポイント (+-1,0,0)、(0,+-1,0)、(0,0,+-1) から始めます。これらは、すべての点が単位球上にある 2 つのピラミッドを形成します。

これで、各三角形の中点を取り、それらが単位球上にあるように投影できます。三角形ごとに、これで 3 つの新しい三角形が得られ、プロセスを繰り返すことができます。

三角形の中点に代わる方法は、各辺の中点を取り、それらを結合することです。これにより、単位円に投影できる 3 つの新しい点が得られます。これにより、サブ分割ごとに 4 つの三角形が得られます。

必要な回数だけ繰り返します。

于 2013-07-30T08:24:52.840 に答える