js canvas webgl实现三维十二面体粒子效果代码
代码语言:html
所属分类:粒子
代码描述:js canvas webgl实现三维十二面体粒子效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> </head> <body> <script> Object.assign(window, { random: Math.random, sin: Math.sin }); Object.assign(window, { ech(a, b, f) {a.forEach((e, i) => a[i] = f(e, b[i]));}, add(a, b) {ech(a, b, (x, y) => x + y);}, sub(a, b) {ech(a, b, (x, y) => x - y);}, mult(a, s) {ech(a, a, x => x * s);}, mag(p) {return Math.hypot(...p);}, norm(a) {mult(a, 1 / mag(a));}, g: 0.5 + Math.sqrt(5) / 2 }); function shuffle(array) { for (let i = array.length - 1; i > 0; i--) { const j = random() * (i + 1) | 0; [array[i], array[j]] = [array[j], array[i]]; } } const count = 1e5; const dodec = [ (m, n) => [-1, m, n], (m, n) => [1, m, n], (m, n) => [0, m * g, n / g], (m, n) => [m * g, n / g, 0], (m, n) => [n / g, 0, m * g]]; const d = [...Array(20)].map((e, i) => { const m = i / 5 | 0; return dodec[i % 5](m % 2 * 2 - 1, (m / 2 | 0) * 2 - 1); }); let f = (x, i) => x + r.........完整代码请登录后点击上方下载按钮下载查看
网友评论0