我正在写一个三维框架,该框架由以各种角度排列的多边形表面组成。在我的代码的特定部分中,我想基于光源的角度来计算表面的亮度,该光源的角度由矢量确定。
更具体地说,表面的方向由矢量表示,光源也由矢量给出。根据常识,当光线直接照射在表面上或矢量的角度差为0时,表面最亮。
但是,在当前解决方案中,我需要为每个光源计算六次atan()才能获得差异,这在计算上效率低下。
有更好的方法吗?
答案 0 :(得分:0)
我认为有。查找Lambert's cosine law。它说来自散射表面的光的强度只是光矢量(指向光源)和平面的法线矢量之间夹角的余弦。因此,您所需要做的就是对向量进行归一化并取点积。