Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Complex
- {
- float a, b;
- Complex(float r, float c)
- {
- a=r;
- b=c;
- }
- Complex()
- {
- a=0;
- b=0;
- }
- Complex mult(Complex c)
- {
- float newR=a*c.a-b*c.b;
- float newC=a*c.b+b*c.a;
- return new Complex(newR, newC);
- }
- Complex add(Complex c)
- {
- float newR=a+c.a;
- float newC=b+c.b;
- return new Complex(newR, newC);
- }
- float mag()
- {
- return pow(a*a+b*b, .5);
- }
- String toString()
- {
- return a+" + "+b+"i";
- }
- }
- Complex zero=new Complex(), c, z=new Complex();
- int val;
- float a, b, x=0, y=0;
- float cX=0, cY=0, rad=2, inc=.1, oldRad=2;
- float prevX=0, prevY=0;
- void setup()
- {
- background(0);
- strokeWeight(1);
- size(2000, 2000, P2D);
- colorMode(HSB);
- noLoop();
- fill(0);
- }
- void draw()
- {
- rect(0, 0, width, height);
- for (int t=0; t<width*height; t++)
- {
- a=2*oldRad*x/width-(oldRad-prevX);
- b=2*oldRad*y/height-(oldRad-prevY);
- c=new Complex(a, b);
- val=iterate();
- if (val!=256)
- stroke(val, 255, 255);
- else
- stroke(0, 0, 0);
- point(x, y);
- t++;
- x=t%width;
- y=t/height;
- }
- println("Done!");
- }
- int iterate()
- {
- int i;
- z=zero;
- for (i=0; i<256&&z.mag()<2; i++)
- z=z.mult(z).add(c);
- return i;
- }
- void mousePressed()
- {
- cX=2*oldRad*mouseX/width-(oldRad-prevX);
- cY=2*oldRad*mouseY/width-(oldRad-prevY);
- print("Center: ("+cX+", "+cY+")\n");
- }
- void keyPressed()
- {
- inc=rad/10;
- if (key!=ENTER)
- {
- if (key=='+')
- rad+=inc;
- else if (key=='-')
- rad-=inc;
- else if(key=='0')
- {
- rad=2;
- cX=0;
- cY=0;
- }
- println("Radius: "+rad);
- }
- else
- {
- println("Drawing new set centered @ ("+cX+", "+cY+") with radius: "+rad);
- prevX=cX;
- prevY=cY;
- oldRad=rad;
- redraw();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement