0

私の目標は、マウス ポインターがキャンバス上にある場所になるように、仮想世界で図形を移動することです。

私が持っているもの: - Canvas3D オブジェクト上のマウス位置 (x、y) - Canvas3D ビューポートから始まるピック レイが最初のシーン オブジェクトと交差する場所の Point3d オブジェクト。(ドラッグを開始したい場所の 3D 空間内のポイント)

私が欲しいもの: - Point3dの座標を変換して、最初の交点(Point3dオブジェクト)が常にキャンバス上のマウス位置と重なるようにする方法(ユーザーがクリックしたものを決定するためにピックレイを使用したときと同じ) Canvas3D オブジェクトから)。

ありがとう!

4

1 に答える 1

1

背景平面に平行で、オブジェクトとの交点を含む平面を使用するように聞こえます。マウスが実際の背景を超えて移動する場合でも、この平面を使用できます。これは、無限に広がる数学的概念にすぎないためです。

私は Java プログラマーではないので、コードを提供することはできませんが、私は数学者なので、必要な方程式は次のとおりです ;)

P は元の交点を表し、背景平面の単位法線を n と呼びます。この法線は、関心のある平面の法線でもあります。R が光線上の点を表し、l がその単位方向ベクトルを表すとします。

その場合、平面の方程式は、平面内の点 x に対して (xP).n = 0 です (. は 2 つのベクトルの内積を表します)。光線上の点の式は x = R + t*l で、t は任意の実数です。したがって、光線は次の場合に平面と交差します。

(t*l + R - P).n = 0

つまりいつ

t = (P - R).n / ( ln )

これにより、光線方程式にプラグインして交点を与える値が得られます。

于 2010-05-21T11:49:20.770 に答える