Cでレイトレーシング 2

by ULproject for C (Windows)

 

レイトレーシングの仕組みや

式の意味、導出などは

N88-BASICでかんたんにレイトレーシング1回~8回

N88-BASICでかんたんにレイトレーシング1~8回

続編BASICでレイトレーシング1回~7回

16回分の記事で紹介しています

 

N88-BASICでかんたんにレイトレーシング9回

N88-BASIC用と

N88-BASICで3DCGの行列(matrix) 第1回~

N88-BASIC用を組み合わせてCで書きました

 

0は減衰しない点光源(陰対応のRGB版)

反射と透過の追跡

 

大文字のみはベクトル、小文字のみはスカラー

 

ついでに以下の操作できるキーを追加しました

 

0 1 2 3 4、で動かす球の選択

9、で光源を水色の球内へ

@ : ; ] p [、で球を上下左右後前に動かす(+shiftで移動大)

q w e、で点の大きさ1 2 4

(点が大きいほうが荒いので速い)

 

↑ ↓ ← → / \、で視点を上下左右後前に動かす(+shiftで移動大)

スペースで後ろを向く

 

a、でラジコン方式、sで視点移動方式

enter、でリセット

 

Windows用のプログラムは長くなりますので

GlutとOpenGLを使用してWindowと描画関係を

簡素にしています

 

ただし、CONSOLEアプリとWIN32アプリの

両方でコンパイルできるようにしてあります

その他、詳しくは

Cでレイトレーシング 1

を見て下さい

 

ray302.c、mat302.h、mat302.c

のコンパイルには

Glut.h , Glut32.lib

が必要で

実行には

Glut32.dll

が必要です

GLUT(OpenGL Utility Toolkit)はサポートが終了

していて入手困難な場合は

GLUT互換のfreeglutが存在するらしいですので

こちらを試して見て下さい

 

どちらも、入手不可で、コンパイルなしで

実行する場合は

ray302.exe

を、実行して下さい

こちらは、GLUTを使用せずにコンパイル

しているため、

Glut32.dll

は必要ありません

(OpenGLを使用するためのdllは

Windowsに標準搭載だったはずなので

そのまま動くはずです)

 

続編BASICでかんたんにレイトレーシング第7回

VL-BASIC拡張命令のレイトレーシング

(VL-BASIC付属サンプルのb/g6.bas)

より工夫していない分、動作速度は遅いですが

了承願います

 

ray302.c, mat302.h, mat302.c, ray302.exeを含む

cl30201.zipは

以下のリンクからダウンロードできます

VL-BASIC(N88-BASIC互換?)ホームページ

Readme.txtを読んで遊んで見て下さい