From 96b5475447d3e20d2ac90fd5ddb032d490ec997d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Thu, 24 Dec 2015 12:21:29 +0100 Subject: [PATCH] :bulb: Generalize polygon systems --- scripts/ifs.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/scripts/ifs.js b/scripts/ifs.js index df58ae2..c3c2408 100644 --- a/scripts/ifs.js +++ b/scripts/ifs.js @@ -12,6 +12,20 @@ const polygonTransforms = (vertices, frac) => vertices.map( ) ); +const regularVertices = count => { + var step = 2 * Math.PI / count; + var initial = -Math.atan(Math.sin(step) / (Math.cos(step) - 1)); + var result = []; + + for (var i = 0; i < count; i += 1) { + var current = step * i + initial; + + result.push([Math.cos(current) * 10, Math.sin(current) * 10]); + } + + return result; +}; + export const barnsley = [[ linearTransform(0, 0, 0, 0.16, 0, 0), linearTransform(.85, .04, -.04, .85, 0, 1.6), @@ -21,8 +35,7 @@ export const barnsley = [[ .01, .85, .07, .07 ]]; -export const sierpinski = [polygonTransforms([ - [.866, .5], - [-.866, .5], - [0, -1] -], 1 / 2), [1 / 3, 1 / 3, 1 / 3]]; +export const sierpinski = [ + polygonTransforms(regularVertices(3), 1 / 2), + [1 / 3, 1 / 3, 1 / 3] +];