Graphics 点积-如何帮助定义光源是否击中我的物体?

Graphics 点积-如何帮助定义光源是否击中我的物体?,graphics,3d,Graphics,3d,例如,光源来自1,3,-5,对象位于4,-2,-1 代数公式的答案是3。[1,3-5].[4,-2,-1] =1*4+3*-2+-5*-1=3 但这三个字是什么意思?我如何知道我的对象是否用这个数字3着色?还是还有更多?我确实环顾四周,没有找到任何结论。如果有人能提供一些见解,那就太好了。多谢各位 从答案判断,思考我是否理解错了问题。我正试着去想以下问题: 对于凸面上的点,法线n=(n1,n2,n3)和光 方向l=(l1、l2、l3),确定该点是否可以被光线看到 来源 在两点之间使用点积毫无意义

例如,光源来自1,3,-5,对象位于4,-2,-1

代数公式的答案是3。[1,3-5].[4,-2,-1] =1*4+3*-2+-5*-1=3

但这三个字是什么意思?我如何知道我的对象是否用这个数字3着色?还是还有更多?我确实环顾四周,没有找到任何结论。如果有人能提供一些见解,那就太好了。多谢各位

从答案判断,思考我是否理解错了问题。我正试着去想以下问题:

对于凸面上的点,法线n=(n1,n2,n3)和光 方向l=(l1、l2、l3),确定该点是否可以被光线看到 来源


在两点之间使用点积毫无意义。本质上,点积给出了两个向量的相似程度的度量。当应用于点时,该值将与从原点到点的方向的相似性以及它们到原点的距离有关。这个指标没有多大意义,正如你在“3”中发现的那样

要确定照明量,需要使用从曲面到灯光的方向的规格化向量与曲面法线之间的点积。结果将是一个从-1到1的值,您可以将其解释为简单gouraud着色的照明因子。在伪代码中:

illumination = max(0, dot(normalize(lightPosition - positionOnSurface), surfaceNormal))

确定光线是否击中物体是一个完全不同的问题,称为遮挡,而不是用数学公式来表示。这是关于测试从灯光到目标对象的路径中有哪些对象。

点积可以告诉您点位于直线的哪一侧。三角形由三条线组成。如果你在三条线的同一侧,那么你就在三角形内。您可以使用三个点积来测试三个面中的每一面。请参阅此链接上的幻灯片23

您确定
4、-2,1
是对象的位置吗?如果表面是正常的,这对我来说更有意义。光源也是一样。嗨,看来我弄错了。但即使这样,当位置颠倒时,我也不明白计算如何帮助我找出光线是否击中物体。@keshk你知道法线是什么吗?这是一个垂直于三角形平面的向量。我更新了这个问题。想知道一开始我是否不应该使用点积。法向量定义了一个平面。光向量不会击中该平面的唯一方式是,如果它与该平面平行,则法线和光方向之间的点积将为零。