HTMLでレイトレーシング (4回目)
2021/6/12(土) HTML でレイトレーシング (4 回 目 ) by ULproject for HTML(JavaScript, canvas) 参考記事 N88-BASICでレイトレーシング (4回目) 今回は陰影 (濃淡)を付けます 濃淡は表面の色を表す diffuse(拡散反射係数) を使用します RGB各0~1で指定し、0~1の実数で濃淡を表現 します RGB各256階調で表現するための変換をしています 前回の x0,y0,ix,iy,izの値を使用して 色 c、濃淡b、大きさiz×izの点を (ix × iz + x0 , iy × iz + y0) の PC画面座標に描く関数 function draws(CL, x0, y0, ix, iy, iz) { var c, i; if (CL[3] < 0.0) return; c = '#'; i = Math.floor(CL[0]*255); if (i > 255) i = 255; else if (i < 0) i = 0; c += ('00' + i.toString(16)).substr(-2); // R i = Math.floor(CL[1]*255); if (i > 255) i = 255; else if (i < 0) i = 0; c += ('00' + i.toString(16)).substr(-2); // G i = Math.floor(CL[2]*255); if (i > 255) i = 255; else if (i < 0) i = 0; c += ('00' + i.toString(16)).substr(-2); // B linebf(ix*iz + x0, iy*iz + y0, iz, iz, c); } Math.floorは小数点以下切捨て i.toString(16)は16進数の文字列に変換し ('00' + i.toString(16)).substr(-2) で、右から 2文字を取り出してい