ソースプログラムを覗いてみよう!! |
簡単なプログラムですが、ブリンキングや
電光掲示板風の文字の動かし方の良い例になっています。
計算メソッド、演算子定義を使って
πやe(自然対数の底)を計算しています。
精度の良さをお楽しみください。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
BigNumberを分母・分子にもつ分数は遅いので
doubleを分母・分子にもつ分数を表現しました。
BigNumberより精度は悪くなりますが、
単純なdoubleより精度は良くなります。
BigNumberより圧倒的に速度は速いです。
四元数については以下を参照。
四元数の説明(PDF)
飾りっけのないプログラムですので、
改良して面白く可笑しくしてみましょう。
3Dモデルを作成するツールは数多くあるが、プログラムで書くとこうなる。
なお、画像例等が必要ですのでLZH形式で圧縮しています。解凍してお使い下さい。
実行確認はC#.net 2008で行っています。
全体動画 透過光 ソリッドテクスチャリング テクスチャマッピング バンプマッピング リフレクションマッピング リフラクションマッピング
チェーン法を使った簡単なテストです。
Formに、textBox1, listBox1, button1, button2, botton3, button4, button5
を配置し、form1_Load, button1_Click, button2_Click, ..., button5_Clickを
イベントとして指定してください。
オープンアドレス法を使った簡単なテストです。
Formに、textBox1, listBox1, button1, button2, botton3
を配置し、form1_Load, button1_Click, button2_Click, button3_Click,
listBox1_SelectedIndexChangedをイベントとして指定してください。
立体視のためのランダムドットを表示するプログラムです。
画面上で立体視できない人は画面キャプチャ等で
印刷してチャレンジしてみましょう。
拡大画像
反復関数系によるシダの描画です。
Formに, button1を配置し,form1_Load, button1_Clickをイベントとして指定してください。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
ここに示した例以外の関数系も確かめてみましょう。
高さデータを陰線消去して3次元表示します。
form1_Loadをイベントとして指定してください。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
高さ[numX,numY]の値を変更して実行してみましょう。
C#特有のJag配列による集合演算の定義例です。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
国土地理院発行の数値地図(50mメッシュ)を読み込んで等高線を描くプログラムです。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
DirectXで音を鳴らせていますので、効果音が必要な方は、
DirectXをインストール後、「// for DirectX」のコメントがついている行の
コメントを削除(先頭の//を削除)してください。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。【実行時のキー操作】
@左右カーソルキー 砲台の左右移動
Aスペースキー ミサイル発射
B[esc]キー ゲーム再開
その他のバージョンではソースプログラムをコピーしてお使いください。
画像、音声ファイルはサブフォルダbin/Debug内の
拡張子GIF, wavのファイルを使うか、自分で用意してください。
BitArrayを使えるようにするためにusing System.Collections;を追加してください。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
文字列照合問題での3種類の手法を比較します。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
最も簡単な描画プログラムの例となっています。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
平面充填問題のC#による表現例です。
button1を貼り付けイベントとしてbutton1_Clickを指定,
さらに、form1_Loadをイベントとして指定してください。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
3Dモデル表示法の5手法のC#による表現例です。
button1〜button5を貼り付けイベントとしてbutton1_Click〜button5_Clickを指定,
さらに、checkBox1を貼り付けてください。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
立体座標系から平面座標系への変換の簡単な例題は以下が参考になります。
【立体から平面座標系への変換】
レイトレーシング法で簡単な立体を描くC#のプログラム例です。
コントロール等の配置はソースプログラムの先頭で説明しています。
単体の球体 球体と床 映込みのある球体
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
【手法の概要】
視点を中心に、2次元方向内の微小な角度(画角)ごとのそれぞれの方向から
受け取る光線に対して算術演算を行うことによって、光線を逆方向に追跡し、
その方向に見える光を判定することで描画を行う。
立体図形の演算での表示プログラム例です。
コントロール等の配置はソースプログラムの先頭で説明しています。
和(合体)A ∪ B 積(共通)A ∩ B 差(カット)A − B
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
【手法の概要】
以下の表のように演算相手の内部/外部を判定して表面を描画する。
演算の種類 表記 描く部分(Aの表面) 描く部分(Bの表面) 和 (合体) A ∪ B Bの外部(!in(B)) Aの外部(!in(A)) 積 (共通) A ∩ B Bの内部( in(B)) Aの内部( in(A)) 差(カット) A − B Bの外部(!in(B)) Aの内部( in(A))
描く部分がA, B 共に存在する場合、視点に近いほうを描く。
二次曲面を表示するプログラム例です。
コントロール等の配置はソースプログラムの先頭で説明しています。
C#2008用プロジェクトファイルを解凍すると、 C# 2008で実行できます。
その他のバージョンではソースプログラムをコピーしてお使いください。
マージソートの再帰呼び出しを省略するソートのプログラム例です。
以下は、再帰的なマージソートです。 改良型マージソートと比較することをおすすめします。
再帰版マージソート
ヒープソートのプログラム例です。
度数ソートのプログラム例です。
シェルソートのプログラム例です。
クィックソートのプログラム例です。
シェーカソート(あるいは双方向バブルソート:Bidirection Bubble Sort)の
プログラム例です。
配列による集合演算のプログラム例です。