Guest User

Untitled

a guest
Jan 5th, 2013
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.image.*;
  3. import javax.imageio.*;
  4. import java.io.*;
  5.  
  6. /*
  7. Autore : Marco 'RootkitNeo'
  8. Descrizione: Classe che si occupa della creazione del frattale
  9. Dipendenza : http://pastebin.com/jfTDFE8W
  10. */
  11.  
  12.  
  13. class Fractal {
  14. // Variabili
  15. // -----------------------------------------------------------------------------------------------------------
  16. private Image img; // Frattale
  17. private double X0,X1, Y0, Y1, modulo, x, y; // [X0,Y0][X0,Y1] punti luce; modulo: valore temporaneo abs(); x,y valori temporanei pixel immagine
  18. private int cicli,profondita, width, height; // profondita: dettaglio immagine
  19. private Complex c1, c2; // Numeri complessi
  20. // -----------------------------------------------------------------------------------------------------------
  21.  
  22.  
  23. Fractal(int width, int height, double X0, double X1, double Y0, double Y1, int profondita) {
  24. this.width = width;
  25. this.height= height;
  26. this.X0 = X0;
  27. this.X1 = X1;
  28. this.Y0 = Y0;
  29. this.Y1 = Y1;
  30. this.profondita = profondita;
  31.  
  32. }
  33.  
  34. void generaFrattale() {
  35. int[] pixels = new int[width*height];
  36. int k = 0;
  37. img = null;
  38.  
  39. for(int i=0; i<height; i++) {
  40. y = Y1 + (((double)i * (Y0-Y1)) / (double)height);
  41.  
  42. for(int j = 0; j<width; j++) {
  43. x = X1 + (((double)j * (X0-X1)) / (double)width);
  44.  
  45. c1 = new Complex(x,y);
  46. c2 = c1;
  47.  
  48.  
  49. for(cicli = 0; cicli < profondita; cicli++) {
  50. c1 = c1.somma(c1.prodotto(c1,c1),c2);
  51. modulo = c1.abs();
  52.  
  53. if(modulo > 4.0) break;
  54. }
  55.  
  56. if(modulo<=4.0) {
  57. pixels[k++] = (255 << 24) | 0;
  58. } else {
  59. int r, g, b;
  60.  
  61. r = (cicli>>2);
  62. g = (cicli>>1);
  63. b = 10+(cicli<<2);
  64.  
  65. r = (r>128) ? 128 : r;
  66. g = (g>128) ? 128 : g;
  67. b = (b>255) ? 255 : b;
  68.  
  69. pixels[k++] = (255 << 24) | (r << 16) | (g << 8) | b;
  70.  
  71. }
  72. }
  73. }
  74.  
  75. try {
  76. Toolkit tk = Toolkit.getDefaultToolkit();
  77. img = tk.createImage(new MemoryImageSource(width, height,pixels,0,width));
  78. } catch(Exception e) {
  79. e.printStackTrace();
  80. }
  81. }
  82.  
  83.  
  84. void salvaImmagine(String name) {
  85. if(img == null) return;
  86. BufferedImage b = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
  87. Graphics g = b.getGraphics();
  88.  
  89. try {
  90. g.drawImage(img.getScaledInstance(width,height,Image.SCALE_SMOOTH),0,0,null);
  91.  
  92. ImageIO.write(b,"PNG",new File(name+".png"));
  93. } catch(Exception e) {e.printStackTrace();}
  94. }
  95.  
  96.  
  97. Image getImage() {
  98. return img;
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment