在
bary
中对p1
,p2
和p3
的顶点法线进行插值?具体来说,我很困惑哪个系数属于哪个顶点。#1 楼
这就是定义向量的方式。看到您的定义矢量$ V_1 $和$ V_2 $从$ P_2 $点向外指向。三角形的平行四边形,是通过将三角形自身重复而形成的。另一种看待它的方式是,它的两个尖齿是三角形的面积的平方。 >(d11 * d20 - d01 * d21)
是$ P_2 $-$ T $-$ P_3 $
的平行四边形的平方面积
使用denom进行计算,则您已计算出三角形$ P_2 $-$ T $-$ P_3 $的总面积相对面积。因此公式
(d11 * d20 - d01 * d21) / denom
是相对于整个三角形大小的三角形大小:这是对角施加在该点上的权重。这就是与点$ P_1 $相关的重心权重。
下一行只是三角形$ P_2 $-$ T $-$ P_1 $的相对面积或:
与$ P_3 $相对的是$ P_3 $的重心坐标。使用
1 - bary[0] - bary[1]
与$ P_2 $相反。注意:您可以为不同的顺序选择不同的第一个向量。
评论
$ \ begingroup $
太好了,我正在寻找这种解释。顺便说一句,有一个小错误,$ V_1 $应该是$ V_0 $,$ V_2 $应该是$ V_1 $,而$ V_3 $应该指向$ T $。希望您有时间修复该错误。再次感谢,希望有很多人从中受益。
$ \ endgroup $
–... Bla ...
17年4月20日在5:04
$ \ begingroup $
Argh,@ Bla ...是的,我会重画图片。无论如何,我感觉代码中的变量可以具有更易理解的名称。 $ V_0 $-$ V_2 $ offcourse是合理的名称,但是用与您的积分相同的命名法来命名它们会更好。
$ \ endgroup $
– joojaa
17年4月20日在5:34
$ \ begingroup $
我刚刚更改了变量名称,希望现在它变得更清晰了。
$ \ endgroup $
–... Bla ...
17年4月20日在6:32
#2 楼
通过将t
更改为三角形上的点之一(p1, p2, p3
),可以凭经验找到哪个系数属于哪个顶点。那么,系数之一将是1
,其他系数是0
。基于此,您知道哪个系数属于哪个顶点。然后,对法线进行插值是微不足道的:
评论
尝试一些值,当内部点靠近顶点时,接近1的系数属于该顶点。@ratchetfreak我这样做了,但是我也很好奇如何从数学上找到各个系数。