投稿

7月, 2021の投稿を表示しています

VL-BASICで3乗の展開の図(2回目)

イメージ
2021/7/24(土) VL-BASICで3乗の展開の図(2回目)   三項式の展開   (a + b + c) n  = (a + b + c)(a + b + c)… 右辺のn個の(a + b + c)から aをp個、bをq個、cをr個選んだ項は a p b q c r  (p + q + r = n)となり n個のaからp個のaを選び 残りn-p個からq個のbを選ぶ組合せ になっているので a p b q c r  の係数は n C p n-p C q  となり   nCp = nPp/p! = n!/{(n-p)!p!}と p + q + r = n ⇒ n - p - q = r より n C p n-p C q  = [n!/{(n-p)!p!}][(n-p)!/{(n-p-q)!q!}] = n!/(p!q!r!) となり、これは aがp個、bがq個、cがr個の順列(並べ方の数) になります   (a + b + c) n   = ΣΣ{n!/(p!q!r!)}a p b q c r  (r = n - q - r) (q = 0~n-p内)(p = 0~n 外)   (a + b + c) 3   = aaa + 3aab + 3aac + 3abb + 6abc + 3acc + bbb + 3bbc + 3bcc + ccc a > b > cとして図形を表示しました   blg~.zip(cub002v.bas)は 以下のリンクからダウンロードできます V L-BASIC(N88-BASIC互換?)ホームページ Readme.txtを読んで遊んで下さい

VL-BASICで3乗の展開の図 (1回目)

イメージ
2021/7/22(木) VL-BASICで 3乗の展開の図 (1回目) 二項式の展開   (a + b) n  = (a + b)(a + b) … (a + b) 右辺の n個の(a + b)から aをn-i個、bをi個選んだ項はa n-i b i   となり n個のbからi個のbを選ぶ (= n個のaからn-i個のaを選ぶ) 組み合わせは n C i   通りとなる i = 0~nまですべての場合の和が展開式と なるので、二項定理 (a + b) n  = Σ n C i a n-i b i  (i = 0~n) を導ける   例 (a + b) 3  = (a + b)(a + b)(a + b)       1回目 2回目 3回目   を展開した各項は、 a,bどちらかを 3回選んだ積になっており   aaa, aab, aba, abb, baa, bab, bba, bbb   aab (またはabaやbaaも同じ)つまり aが2回、bが1回の組合せは 3個中2個aを選ぶ、または、 3個中1個bを選ぶ、選び方と同じなので 3 C 2  = 3 C 1  = 3通り(上記図でも3通りと分かる) となる (aabの並べ方3!/(2!1!)に等しい) (abbも同じ) 同様に aaa(とbbb)は 3 C 3  = 3 C 0  = 1通り よって (a + b) 3  = Σ n C i a n-i b i  (i = 0~3) = a 3  + 3a 2 b + 3ab 2  + b 3     n = 0~を縦に、i = 0~nを横に n C i   の値を 並べたものをパスカルの三角形と言う n = 0       1 n = 1      1 1 n = 2     1 2 1 n = 3    1 3 3 1 n = 4   1 4 6 4 1 …   下記の通り、各数値は 1段上の左右の数値の和になっている   (a + b) 2  = a 2  + 2ab + b 2   (a + b) 3  = (a 2  + 2ab + b 2 )(a + b)        1   2     1 = a 3  + (a 2 )b + (2ab)a + (2ab)b + (b 2 )a + b 3     1     1   +  2      

VL-BASICで動くレイトレーシング (3回目)

イメージ
2021/7/18(日) VL-BASICで動くレイトレーシング (3回目)   by ULproject   VL-BASICの拡張命令でレイトレーシングです CPUのみの計算で動いています   フォトンマッピングによる集光模様を表示してみました 移動はブースター方式 (宇宙船を操作している感覚)にし 裸眼立体視も表示してみました   blg~.zip(mray003v.bas)は 以下のリンクからダウンロードできます VL-BASIC(N88-BASIC互換?)ホームページ Readme.txtを読んで遊んで下さい   操作方法は hキーで表示されます

VL-BASICで動くレイトレーシング (2回目)

イメージ
2021/7/14(水) VL-BASICで動くレイトレーシング (2回目)   by ULproject   VL-BASICの拡張命令でリアルタイムレイトレーシング です CPUのみの計算で動いていますので コア数 (32スレッドまで)が多いほど速くなります   雪だるまとトーラス (ドーナツ)と鏡を配置し 移動はブースター方式 (宇宙船を操作している感覚)にし 裸眼立体視も表示してみました   blg~.zip(mray002v.bas)は 以下のリンクからダウンロードできます VL-BASIC(N88-BASIC互換?)ホームページ Readme.txtを読んで遊んで下さい   操作方法は hキーで表示されます

VL-BASICで動くレイトレーシング

イメージ
2021/7/10(土) VL-BASICで動くレイトレーシング   by ULproject   HTMLで動くレイトレーシング   を VL-BASICの拡張命令で作ってみました   VL-BASICは行列による移動になりますので mray003.html が一番近いです (VL-BASIC拡張命令では点の大きさの変更には 対応していませんので省略しています )   以下、モデル (球)の配置の説明 mray003.htmlのModel関数と同じように作りました   *MODEL GPU MATERIAL(PUSH) GPU MATRIX(MODE, MODEL) ' GPU MATERIAL(SPECULAR, 1.0, 1.0, 1.0) GPU MATERIAL(SHININESS, 10.0) GPU MATERIAL(REFLECT, 0.0, 0.0, 0.0) GPU MATERIAL(CLARITY, 0.0, 0.0, 0.0) GPU MATERIAL(REFRACT, 1.0) ' 光源 GPU MATERIAL(LIGHT    , 1.0, 1.0, 1.0) '--- 光源の光の色と強さ GPU MATERIAL(ATTENUATE, 1.0, 0.0, 0.0) '--- 光減衰(0,1,2乗の係数) GPU MATERIAL(DIFFUSE, 1.0, 1.0, 1.0) GPU MATRIX(PUSH) GPU TRANSLATE(-500, 500, 500) GPU SPHERE(2) GPU MATRIX(POP) GPU MATERIAL(LIGHT    , 0.0, 0.0, 0.0) '--- 光源の光の色と強さ ' 大球 GPU MATERIAL(DIFFUSE, 0.0, 1.0, 1.0) GPU MATRIX(PUSH) GPU TRANSLATE(3, 8, -80) GPU SPHERE(18) GPU MATRIX(POP) ' 小球 GPU MATERIAL(DIFFUSE, 1.0, 1.0, 0.0) GPU MATRIX(PUSH) GPU TRANSLATE(-6, 14, -60) GPU SPHERE(6) GPU MATRIX(P

HTMLで動くレイトレーシング

イメージ
2021/7/6(火) HTMLで動くレイトレーシング (1回目)~(4回目)   (by ULproject for HTML,JavaScript,canvas)   HTMLでレイトレーシング (8回目) HTMLで行列(matrix) (2回目) HTMLでクォータニオン(quaternion) (1回目) を使ってレイトレーシングを動かしてみました   HTML,JavaScript,canvasは、使い慣れていない ため、不具合などが多々あると思いますが、 ご了承ください   (1回目)~(4回目)のプログラムの説明   上記リンク先のプログラムをほぼそのまま結合 (1回目) mray001.html … 行列による移動 (2回目) mray002.html … クォータニオンによる移動   上記プログラムを OpenGL風インターフェースに改造 (3回目) mray003.html … mray001.htmlを改造 (4回目) mray004.html … mray002.htmlを改造   以下、モデル (球)の配置の説明   function model() {   var md;     Sn = 0;    // Model reset   md = Mode; // Push Mode   Mode = 0;  // Model mode     Specular(1.0);   Shininess(10.0);   Reflect(0.0);   Clarity(0.0);   Refract(1.0);     // 光源   Diffuse(1.0, 1.0, 1.0);   Push();   Translate(-500, 500, 500);   Sphere(2);   Pop();     // 大球   Diffuse(0.0, 1.0, 1.0);   Push();   Translate(3, 8, -80);   Sphere(18);   Pop();     // 小球   Diffuse(1.0, 1.0, 0.0);   Push();   Translate(-6, 14, -60);   Sphere(6);   Pop();     // 透明   Diffuse(0.1, 0.1, 0.1);