有效地计算两个向量之间的差异

问题描述 投票:1回答:1

我正在编写一个三维框架,它由以不同角度排列的多边形表面组成。在我的代码的某一部分,我想基于光源计算表面的亮度,光源的角度由矢量给出。

更具体地,表面的取向由矢量表示,并且光源也由矢量表示。根据常识,当光直接照射在其上时,或者当矢量的角度差为0时,表面最亮。

然而,在我目前的解决方案中,我需要为每个光计算atan()六次以获得差异,这在计算上是低效的。

有没有更好的办法?

java vector 3d
1个回答
0
投票

我觉得有。查找Lambert's cosine law。它表示来自漫反射表面的光强度只是光矢量(指向光源)与平面法向矢量之间角度的余弦。因此,您需要做的就是将矢量标准化并采用点积。

© www.soinside.com 2019 - 2024. All rights reserved.