Рисование прикольной окружности

  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.awt.Point;
  4. import java.awt.image.BufferedImage;
  5. import java.io.File;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import javax.imageio.ImageIO;
  9.  
  10. /**
  11.  * Creates an image with circle of lines.
  12.  * @author aNNiMON
  13.  */
  14. public class CircleTrip {
  15.  
  16.     public static void main(String[] args) {
  17.         new CircleTrip(1000, 1000).process(30);
  18.     }
  19.  
  20.     private static final String FORMAT_NAME = "png";
  21.  
  22.     private final ArrayList<Point> list;
  23.     private final BufferedImage image;
  24.  
  25.     public CircleTrip(int width, int height) {
  26.         list = new ArrayList<Point>();
  27.         image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  28.     }
  29.  
  30.     private void process(int angles) {
  31.         double anglePerPoint = 360d / angles;
  32.         double i = 0;
  33.         int cx = getWidth() / 2;
  34.         int cy = getHeight() / 2;
  35.         int radius = Math.min(cx, cy);
  36.         while (i < 360) {
  37.             double radAngle = Math.toRadians(i);
  38.             list.add(new Point((int) (cx + Math.cos(radAngle) * radius),
  39.                                (int) (cy + Math.sin(radAngle) * radius)));
  40.             i += anglePerPoint;
  41.         }
  42.  
  43.         paint(image.getGraphics());
  44.         saveImage(image, "image_" + angles);
  45.     }
  46.  
  47.     private void paint(Graphics g) {
  48.         g.setColor(Color.WHITE);
  49.         g.fillRect(0, 0, getWidth(), getHeight());
  50.         g.setColor(Color.BLACK);
  51.         final int size = list.size();
  52.         for (int i = 0; i < size; i++) {
  53.             final int x1 = list.get(i).x;
  54.             final int y1 = list.get(i).y;
  55.             for (int j = 0; j < size; j++) {
  56.                 int x2 = list.get(j).x;
  57.                 int y2 = list.get(j).y;
  58.                 g.drawLine(x1, y1, x2, y2);
  59.             }
  60.         }
  61.     }
  62.  
  63.     private void saveImage(BufferedImage image, String name) {
  64.         try {
  65.             File out = new File(name + '.' + FORMAT_NAME);
  66.             out.createNewFile();
  67.             ImageIO.write(image, FORMAT_NAME, out);
  68.         } catch (IOException ex) { }
  69.     }
  70.  
  71.     private int getWidth() {
  72.         return image.getWidth();
  73.     }
  74.  
  75.     private int getHeight() {
  76.         return image.getHeight();
  77.     }
  78. }
Рисует такую штуку
Можно поиграться с параметрами и разбить окружность на 150 кусков в 6000x6000

Реклама

Мы в соцсетях

tw tg yt gt