Advertisement
Guest User

Mandelbrot p3 processing

a guest
Feb 23rd, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. class Complex
  2. {
  3. float a, b;
  4. Complex(float r, float c)
  5. {
  6. a=r;
  7. b=c;
  8. }
  9. Complex()
  10. {
  11. a=0;
  12. b=0;
  13. }
  14. Complex mult(Complex c)
  15. {
  16. float newR=a*c.a-b*c.b;
  17. float newC=a*c.b+b*c.a;
  18. return new Complex(newR, newC);
  19. }
  20. Complex add(Complex c)
  21. {
  22. float newR=a+c.a;
  23. float newC=b+c.b;
  24. return new Complex(newR, newC);
  25. }
  26. float mag()
  27. {
  28. return pow(a*a+b*b, .5);
  29. }
  30. String toString()
  31. {
  32. return a+" + "+b+"i";
  33. }
  34. }
  35. Complex zero=new Complex(), c, z=new Complex();
  36. int val;
  37. float a, b, x=0, y=0;
  38. float cX=0, cY=0, rad=2, inc=.1, oldRad=2;
  39. float prevX=0, prevY=0;
  40. void setup()
  41. {
  42. background(0);
  43. strokeWeight(1);
  44. size(2000, 2000, P2D);
  45. colorMode(HSB);
  46. noLoop();
  47. fill(0);
  48. }
  49. void draw()
  50. {
  51. rect(0, 0, width, height);
  52. for (int t=0; t<width*height; t++)
  53. {
  54. a=2*oldRad*x/width-(oldRad-prevX);
  55. b=2*oldRad*y/height-(oldRad-prevY);
  56. c=new Complex(a, b);
  57. val=iterate();
  58. if (val!=256)
  59. stroke(val, 255, 255);
  60. else
  61. stroke(0, 0, 0);
  62. point(x, y);
  63. t++;
  64. x=t%width;
  65. y=t/height;
  66. }
  67. println("Done!");
  68. }
  69. int iterate()
  70. {
  71. int i;
  72. z=zero;
  73. for (i=0; i<256&&z.mag()<2; i++)
  74. z=z.mult(z).add(c);
  75. return i;
  76. }
  77. void mousePressed()
  78. {
  79. cX=2*oldRad*mouseX/width-(oldRad-prevX);
  80. cY=2*oldRad*mouseY/width-(oldRad-prevY);
  81. print("Center: ("+cX+", "+cY+")\n");
  82. }
  83. void keyPressed()
  84. {
  85. inc=rad/10;
  86. if (key!=ENTER)
  87. {
  88. if (key=='+')
  89. rad+=inc;
  90. else if (key=='-')
  91. rad-=inc;
  92. else if(key=='0')
  93. {
  94. rad=2;
  95. cX=0;
  96. cY=0;
  97. }
  98. println("Radius: "+rad);
  99. }
  100. else
  101. {
  102. println("Drawing new set centered @ ("+cX+", "+cY+") with radius: "+rad);
  103. prevX=cX;
  104. prevY=cY;
  105. oldRad=rad;
  106. redraw();
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement