9

で定義された 3D ポイントがあり[x0, y0, z0]ます。

この点は、 で定義される平面に属し[a, b, c, d]ます。

normal= [a, b, c]、およびax + by + cz + d = 0

(u,v)3d 点を座標のペアに変換またはマッピングするにはどうすればよいですか?

これは本当に単純なものに違いないのですが、私には理解できません。

4

2 に答える 2

15

まず、uvベクトルを計算する必要があります。u平面のv法線に直交し、互いに直交します。それらを定義する一意の方法はありませんが、便利で迅速な方法は次のようなものです。

n = [a, b, c] 
u = normalize([b, -a, 0]) // Assuming that a != 0 and b != 0, otherwise use c.
v  = cross(n, u) // If n was normalized, v is already normalized. Otherwise normalize it.

これで、単純な内積で次のようになります。

u_coord = dot(u,[x0 y0 z0])
v_coord = dot(v,[x0 y0 z0])

これは、UV 座標の原点がワールド原点 (0,0,0) であると仮定していることに注意してください。

これは、ベクトル[x0 y0 z0]が平面上に正確にない場合でも機能します。その場合は、平面に投影するだけです。      

于 2013-09-06T18:19:44.360 に答える