我有一个 3d 点,定义为[x0, y0, z0]
.
该点属于一个平面,定义为[a, b, c, d]
.
normal
= [a, b, c]
, and ax + by + cz + d = 0
如何将 3d 点转换或映射为一对(u,v)
坐标?
这一定是非常简单的事情,但我无法弄清楚。
首先,您需要计算您的u
and v
向量。u
and 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])
请注意,这假设 u-v 坐标的原点是世界原点 (0,0,0)。
即使你的向量这也会起作用[x0 y0 z0]
并不完全位于飞机上。如果是这样的话,它只会将其投射到飞机上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)