鏡面反射

2009-07-17
blog

レイトレーサーを作るシリーズ:

視線が鏡面にぶつかったとき、法線に対する視線の反射ベクトル(入射角=反射角)を次の式で求める:

求めた反射ベクトルと交差点で光線追跡を継続する:

// 反射ベクトルを求める
vec reflection(vec v, vec normal) {
return v.add(normal.scale(-2 * v.dot(normal)));
}

vec calc_reflection(vec pos, vec normal, vec raydir) {
vec refvec = reflection(raydir, normal);
return raytrace(pos, refvec);
}