Advertisement
DulcetAirman

Pentagramm

Jun 11th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.70 KB | None | 0 0
  1. package com.example.foo;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Graphics;
  5. import java.awt.Polygon;
  6. import java.awt.event.WindowAdapter;
  7. import java.awt.event.WindowEvent;
  8. import java.awt.event.WindowListener;
  9. import java.util.Arrays;
  10.  
  11. import javax.swing.JDialog;
  12. import javax.swing.JPanel;
  13. import javax.swing.SwingUtilities;
  14. import javax.swing.WindowConstants;
  15.  
  16. public class SomeClass {
  17.  
  18.   public static void main(String[] args) {
  19.     SwingUtilities.invokeLater(SomeClass::main2);
  20.   }
  21.  
  22.   static void main2() {
  23.     JDialog dlg = new JDialog();
  24.     dlg.setSize(400, 400);
  25.     JPanel pnl = new JPanel() {
  26.       private static final long serialVersionUID = -8457824227977035142L;
  27.  
  28.       public void paint(Graphics g) {
  29.         super.paint(g);
  30.         g.drawPolygon(star(200));
  31.       };
  32.     };
  33.     pnl.setSize(400, 400);
  34.     dlg.getRootPane().setLayout(new BorderLayout());
  35.     dlg.getRootPane().add(pnl);
  36.     dlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  37.     dlg.addWindowListener(new WindowAdapter() {
  38.       @Override
  39.       public void windowClosed(WindowEvent e) {
  40.         System.exit(0);
  41.       }
  42.     });
  43.     dlg.setVisible(true);
  44.   }
  45.  
  46.   static Polygon star(final int r) {
  47.     final int n = 5;
  48.     final double angle = 2d * Math.PI / n;
  49.     final double side = 2d * r * Math.cos(angle);
  50.     int[] xs = new int[n];
  51.     int[] ys = new int[n];
  52.     double x = r;
  53.     double y = 0;
  54.     double φ = angle;
  55.     for (int ω = 0; ω < n * 2; ω += 2) {
  56.       final int i = ω % n;
  57.       xs[i] = (int) x;
  58.       ys[i] = (int) y;
  59.       x += (side * Math.cos(φ));
  60.       y += (side * Math.sin(φ));
  61.       φ += angle;
  62.     }
  63.     return new Polygon(xs, ys, n);
  64.   }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement