function fern(n=7, ratio=2.35, angle=25, x_start=150, width=400, height=500, y_start=475) {
let canvas = this || DOM.canvas(width, height);
let ps = canvas.ps || (() => {
let ps = new paper.PaperScope();
ps.setup(canvas);
return ps;
})();
canvas.ps = ps;
let axiom = ["X"];
let grammar = {
"X": ["F+[[X]-X]-F[-FX]+X"],
"F": "FF",
"+": "+",
"-": "-",
"[": "[",
"]": "]",
}
let code = axiom;
for (let i = 0; i < n; i++) {
code = code.map(l => grammar[l]).join("").split("")
}
let magnitude = height / Math.pow(ratio, n);
draw(ps, code, angle, magnitude, x_start, y_start);
return canvas;
}