2017-10-27 9 views
1

私は3Dベクトルと3D面を通常持っています。与えられた顔の法線に沿ってこのベクトルをPython(numpyの有無にかかわらず)を使って動かすにはどうすればよいですか?平面に沿って頂点を平面に沿って移動させます。

理想的には、私はxyの顔法線を使って行列を作成し、元のベクトルなどで乗算しますが、構築方法については頭を悩ますことはできません。線形代数からしばらく経ちました。

編集:

私の質問が広すぎることを指摘してくれてありがとう。

私の目標は、ノーマルで定義された面に沿って、元の点からxy単位離れた新しい点を得ることです。

例:ポイントが(0,0,0)で、法線が(0, 0, 1)の場合、結果は(x, y, 0)になります。

例2:ポイントが(1, 0, 0)で、法線が(0, 1, 0)の場合、結果は(1+x, 0, y)になります。

pointnormalx、およびyで動作するように外挿する必要があります。そのnormalによって定義される平面にvector

+0

行列を、おそらくビット行き過ぎです。ノーマルと直交するベクトルを見つけて(無限に多い)、それをあなたのポイント位置に追加してください。より具体的なヘルプについては、より具体的な質問が必要です。とにかく、それはおそらく[math.se]に適しています。 –

+1

* 'x'と' y'単位の距離*はどういう意味ですか? 2つのポイントは1つの距離しか持てません。 2つの異なる方向に沿って2つの距離を意味する場合、それらの方向を定義する必要があります。ノーマルだけでは不十分です(ノーマルについては任意に回転できます)。 –

+0

ああ!それは理にかなっています、@ NicoSchertler。 'x'と' y'がどこに行くのかを知る方法はありません...もっと情報が必要です。ありがとう。 –

答えて

1

The projectionです:

def projection(vector, normal): 
    return vector - vector.dot(normal) * normal 

おそらくこれはあなたが何かしたいこと:

x + projection(y, normal) 
+0

こんにちは、アンディ!私はおそらくもっと書いたはずです。私は空間の3D点と顔の3D法線ベクトルを持っています。私は元の点から離れた新しい点xとyを、法線によって定義された面に沿って欲しい。 –

+1

@SergioMouraは元のベクトルに投影を追加する必要があるように聞こえますが、xとyは異なる場合があります。 –

関連する問題