【问题标题】:Efficiently Calculate the Difference Between Two Vectors有效计算两个向量之间的差异
【发布时间】:2018-09-03 16:49:41
【问题描述】:

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

更具体地说,表面的方向由向量表示,光源也由向量给出。众所周知,当光线直接照射在表面上时,或者当向量的角度差为 0 时,表面最亮。

但是,在我目前的解决方案中,我需要为每个灯光计算六次 atan() 才能获得差异,这在计算上效率很低。

有没有更好的办法?

【问题讨论】:

  • 我认为你应该在你的光源向量和代表平面的 versor 之间使用点积。这只是 3 次乘法。

标签: java vector 3d


【解决方案1】:

我认为有。查找Lambert's cosine law。它表示来自漫反射表面的光强度只是光矢量(指向光源)与平面法线矢量之间角度的余弦。因此,您需要做的就是对向量进行归一化并取点积。

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多