我正在寻求对我对确定点是否位于 3D 三角形内部的方法的看法的认可。
给定一条 R(t) = e + td 形式的射线和一组三个点 T = {V0, V1, V2},它们在三维空间中形成一个三角形,我知道如何找到该平面的参数方程三点形成以及如何确定射线是否与该平面相交。最后,如果它相交,我想知道交点是否实际上在三角形边的边界内。
请看下面我的照片。
我的想法是,我可以计算每个边缘向量与从边缘向量中的第一条边缘到该点的向量之间的点积,并检查它们是否都是正数。像这样:
如果是这种情况,该点应该在三角形内部。正确的?这不是与计算机图形学中确定背面的方法相同吗?
在图形学中,人们通常使用重心坐标。就你而言,P
可以描述为P = aV0 + bV1 + cV2
, where a + b + c = 1
. P
位于内部当且仅当0 <= a, b, c <= 1
.
如果三角形由v1, P, v2
有面积S1
,形成的三角形P, v0, v2
面积为S2
, and P, V0, V1
面积为S3
. Then a = S1/S
, b = S2/S
and c = S3/S
, where S
是三角形的面积V0, V1, V2
.
求面积S = 1/2||(V0-V1)creosspdoruct(V0-V2)||
.
您可以查看tutorial http://pages.cpsc.ucalgary.ca/~amahdavi/pmwiki-2.2.8/uploads/Site/RayTracing3.ppt我把它放在我的网站上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)