我正在尝试为一个简单的球体光线追踪应用程序实现镜面反射和漫反射照明,但我的矢量有问题。
我正在尝试使用以下内容来更新灯光,但生成的图像看起来完全一样,所以我知道我做错了什么。我假设我以某种方式弄乱了向量。hit 是被击中的球体,mindis 是到这个球体点的距离。Pir、pig、pib 是颜色的 rgb。
P3D intersection = ray.position.add(ray.direction).scale(mindis);
P3D l = intersection.sub(light).normalize();
P3D n = hit.center.sub(intersection).normalize();
double dot = l.dot(n);
P3D f = l.add(n).scale(-2.0 * dot);
double dot2 = f.dot(ray.direction);
pir += dot2 * 20;
pig += dot2 * 20;
pib += dot2 * 20;