什么是重心计算?

时间:2011-05-20 17:30:01

标签: math vector

我一直在研究XNA的Barycentric方法,我在网上找到的描述对我来说非常不透明。一个例子很好。只是用英语解释会很好......目的是什么,怎么用呢?

2 个答案:

答案 0 :(得分:2)

来自Wikipedia

  

在几何中,重心坐标系是一个坐标系,其中点的位置被指定为放置在单形(三角形,四面体等)顶点的质量的质心或重心。

我相信它们在游戏开发中用于光线追踪。

当光线与普通网格中的三角形相交时,您只需将其记录为点击或未命中。但是如果你想实现一个 suburf修饰符(下面的图片),这会使网格更加平滑,你将需要光线从三角形中心点击的距离(这更容易使用)重心坐标)。

SubsURf修饰符并不难以可视化:

Subsurf modifier

立方体是原始形状,内部的光滑网格是“suburfed”立方体,我认为递归深度为三或四。


实际上,这可能不正确。不要拿我的确切的话,但我知道它们用于几何形状的纹理映射。

以下是一些您可以查看的幻灯片:http://www8.cs.umu.se/kurser/TDBC07/HT04/handouts/HO-lecture11.pdf

答案 1 :(得分:2)

在实践中,关于三角形ABC的点P的重心坐标仅仅是根据三角形顶点的权重(u,v,w),使得P = u * A + v * B + w * C 。如果该点位于三角形内,则在[0,1]和u + v + w =​​ 1中得到u,v,w。

它们用于涉及关于三角形顶点的点位置的知识的任何任务,例如,跨三角形的属性插值。例如,在光线追踪中,你在三角形中有一个生命值。当您想知道该点的法线或其他属性时,可以计算三角形内的重心坐标。然后,您可以使用这些权重来总结三角形顶点的属性,并获得插值属性。

要在三角形P内计算点u,v,w的重心坐标(ABC),您可以使用:

u = [PBC] / [ABC]
v = [APC] / [ABC]
w = [ABP] / [ABC]

其中[ABC]表示三角形ABC的区域。