Choose a preset view by changing the `CURRENT_VIEW` constant or play with the values of `settings.custom`.
Log in to post a comment.
const CURRENT_VIEW = "custom" // normal | star | small | lighting | custom // [zoom, x, y, cutoff] const settings = { normal: [1, 0, -0.5, 30], star: [8000, 0.2075, 0.4245, 100], small: [55, 0, -1.475, 40], lighting: [300, 0.855, -0, 35], custom: [1, 0, -0.5, 30] } const QUALITY = 0.8 // between 0 and 0.9 const DEPTH = 1000 * QUALITY const RES = 1000 // max: 2000 const SHOW_CENTER = true // don't change those const ZOOM = settings[CURRENT_VIEW][0] const X = settings[CURRENT_VIEW][1] const Y = settings[CURRENT_VIEW][2] const CUTOFF = settings[CURRENT_VIEW][3] const NATIVE_RES = 200 const RES_RATIO = RES / NATIVE_RES const HALF_RES = RES / 2.0 Canvas.setpenopacity(-(1-QUALITY*0.3)); //Canvas.setpenopacity(-1); const turtle = new Turtle(); if (SHOW_CENTER) { for (let a = 0; a < 100; a++) { turtle.circle(1) } } class ComplexNumber{ constructor(real, im){ this.r = real || 0.0; this.i = im || 0.0; } pow2(){ let a = this.r; let b = this.i; this.r = a * a - b * b; this.i = 2 * (a * b); return this; } len(){ return this.r * this.r + this.i * this.i; } times(k){ this.r *= k; this.i *= k; return this; } add(complex){ this.r += complex.r; this.i += complex.i; return this; } } const showPoint = (x, y, k) => { //if (Math.random()>QUALITY) {return} x /= RES_RATIO y /= RES_RATIO //if (x > 100 || x < -100 || y > 100 || y < -100) {return} //for (; k>0; k-=20) { turtle.penup() turtle.goto(x, y) turtle.pendown() //turtle.right(Math.random()*360) turtle.forward(k) //turtle.circle(r) //} } function pixel(x, y){ let k; let i = Y + (y ) / RES_RATIO / (ZOOM * 100); let j = X + (x ) / RES_RATIO / (ZOOM * 100); let z = new ComplexNumber(0, 0); let c = new ComplexNumber(i, j); //c.times(0.13 / ZOOM); //c.r -= 0.6 for(k = 0; k < DEPTH; k++) { z = z.pow2().add(c); if(z.len() > 3.0){ break; } } if ((z.len() >= 3.0 || !z.len()) && k > CUTOFF ) { showPoint(x, y, k/DEPTH) } } function walk(i) { const x = i - HALF_RES const test = false for (let y = -HALF_RES; y < (test ? 0 : HALF_RES); y+=1) { if (Math.random() < QUALITY) { pixel(x, y) } } return x < (test ? 0 : HALF_RES); }