标签:webgl
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正。
function torus(row, column, irad, orad){ var pos = new Array(), col = new Array(), idx = new Array(); for(var i = 0; i <= row; i++){ var r = Math.PI * 2 / row * i; var rr = Math.cos(r); var ry = Math.sin(r); for(var ii = 0; ii <= column; ii++){ var tr = Math.PI * 2 / column * ii; var tx = (rr * irad + orad) * Math.cos(tr); var ty = ry * irad; var tz = (rr * irad + orad) * Math.sin(tr); pos.push(tx, ty, tz); var tc = hsva(360 / column * ii, 1, 1, 1); col.push(tc[0], tc[1], tc[2], tc[3]); } } for(i = 0; i < row; i++){ for(ii = 0; ii < column; ii++){ r = (column + 1) * i + ii; idx.push(r, r + column + 1, r + 1); idx.push(r + column + 1, r + column + 2, r + 1); } } return [pos, col, idx]; }这个torus函数,一共接收四个参数。
function hsva(h, s, v, a){ if(s > 1 || v > 1 || a > 1){return;} var th = h % 360; var i = Math.floor(th / 60); var f = th / 60 - i; var m = v * (1 - s); var n = v * (1 - s * f); var k = v * (1 - s * (1 - f)); var color = new Array(); if(!s > 0 && !s < 0){ color.push(v, v, v, a); } else { var r = new Array(v, n, m, m, k, v); var g = new Array(k, v, v, n, m, m); var b = new Array(m, m, k, v, v, n); color.push(r[i], g[i], b[i], a); } return color; }这个函数为了表示HSV的颜色,接收四个参数,第四个参数是透明度,这个函数中就是将颜色转换为RGBA然后返回结果。
绘制立体模型(圆环体)
转载请注明:转自lufy_legend的博客http://blog.csdn.net/lufy_legend
[WebGL入门]二十,绘制立体模型(圆环体),布布扣,bubuko.com
标签:webgl
原文地址:http://blog.csdn.net/lufy_legend/article/details/38590691