シンプルなスフィア レイ トレーシング アプリケーションにスペキュラ ライティングとディフューズ ライティングを実装しようとしていますが、ベクトルに問題があります。
以下を使用してライトを更新しようとしていますが、生成された画像はまったく同じに見えるので、何か間違っていることがわかります。何らかの方法でベクトルを台無しにしていると思います。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;