From 343ab111e8b55579e4b4508eae9c5ab028fc877f Mon Sep 17 00:00:00 2001 From: yuanchuan Date: Sun, 28 May 2017 16:40:32 +0800 Subject: [PATCH] add clover shape --- src/shapes.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/shapes.js b/src/shapes.js index 35b3ea5..16a9fe7 100644 --- a/src/shapes.js +++ b/src/shapes.js @@ -72,3 +72,25 @@ export const hypocycloid = memo('hypocycloid', function(k = 3) { export function astroid() { return hypocycloid(4); } + +export const clover = memo('clover', function(k = 3) { + switch (k) { + case 4: k = 2; break; + case 5: k = 5; break; + case 3: k = 3; + default: { + if (k > 5) k = 5; + else if (k < 3) k = 3; + } + } + var split = 240; + var deg = Math.PI / (split / 2); + var points = []; + for (var i = 0; i < split; ++i) { + var theta = deg * i; + var x = Math.cos(k * theta) * Math.cos(theta); + var y = Math.cos(k * theta) * Math.sin(theta); + points.push((x * 50 + 50 + '% ') + (y * 50 + 50+ '%')); + } + return `polygon(${ points.join(',') })`; +});