N88-BASICでレイトレーシング (7回目)
2021/6/7(月)
N88-BASICでレイトレーシング (7回目)
(by ULproject for N88-BASIC, NL-BASIC)
(NL-BASICはAlt+6で高速化します)
反射は、前回のspecularの式
S = E - 2(E・N)N = E + (2cosθ)N
が、そのまま使えます。
視点V、視線Eの交点Pでの反射Sを前回で求め
ていますので、それらが保存されるように変更を
加えました
P、Sを新たなV、Eとしてその先の交点の色を追加
するということを繰り返せば反射で映ったものを
描けます
BASICの再帰呼出しは、ローカル変数の保存を
プログラムで作らなければならないので
必要な変数の保存と戻すサブルーチン
*PUSH、*POPをつくり呼び出しています
DATA文にLEVEL変数を追加し、反射回数を制限しています
また、SLCに反射による減衰量を保存し、一定数以下なら
反射を制限するようにしています
表示する球を4個(後ろにある光源を入れると5個)
に増やすなど、ところどころ変更が加えてあります
NL-BASICとblg~.zip(ray007.bas)は
以下のリンクからダウンロードできます
Readme.txtを読んで遊んで下さい
次回