Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.RenderingHints;
- import java.awt.Polygon;
- import java.util.Random;
- import java.awt.event.MouseWheelEvent;
- import java.awt.event.MouseWheelListener;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.MouseMotionListener;
- import java.awt.geom.AffineTransform;
- import java.awt.geom.NoninvertibleTransformException;
- import javax.swing.JPanel;
- import java.awt.geom.Point2D;
- @SuppressWarnings("serial")
- public class Board extends JPanel {
- double startx = 0;
- double starty = 0;
- double globescale = 1;
- double globex = 0;
- double globey = 0;
- double oldxstart = 0;
- double oldystart = 0;
- double done = 0;
- AffineTransform tx = new AffineTransform();
- Random generator = new Random(System.currentTimeMillis());
- Polygon p = new Polygon();
- public void paint(Graphics g) {
- super.paint(g);
- Graphics2D g2 = (Graphics2D) g;
- RenderingHints rh =
- new RenderingHints(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- rh.put(RenderingHints.KEY_RENDERING,
- RenderingHints.VALUE_RENDER_QUALITY);
- g2.setRenderingHints(rh);
- Dimension size = getSize();
- double w = size.getWidth();
- double h = size.getHeight();
- double num = 10000;
- double EcAn = 360 / num;
- double ang = 0;
- double len;
- if (h < w) {
- len = Math.sqrt(2 * (Math.pow((h - 20) / 2, 2))) / num * 4;
- } else {
- len = Math.sqrt(2 * (Math.pow((w - 20) / 2, 2))) / num * 4;
- }
- double orgx = w / 2;
- double orgy = 20;
- double curx = w / 2;
- double cury = 20;
- double prox = w / 2;
- double proy = 20;
- double nexx;
- double nexy;
- double lenx;
- double leny;
- if (done == 0) {
- for (double deg = 0;
- deg < num;
- deg++) {
- ang = ang + EcAn;
- lenx = len * Math.sin(Math.toRadians(ang + 90));
- leny = len * Math.cos(Math.toRadians(ang + 90));
- double randomnumber1 = generator.nextDouble();
- double randomnumber2 = generator.nextDouble();
- nexx = prox - lenx + randomnumber1;
- nexy = proy - leny + randomnumber2;
- //g2.draw(new Line2D.Double(curx, cury, nexx, nexy));
- p.addPoint((int) nexx, (int) nexy);
- curx = nexx;
- cury = nexy;
- prox = prox - lenx;
- proy = proy - leny;
- }
- //g2.draw(p);
- }
- g2.fill(tx.createTransformedShape(p));
- done = 1;
- }
- public Board() {
- this.addMouseWheelListener(new ZoomHandler());
- this.addMouseListener(new ClickHandler());
- this.addMouseMotionListener(new MotionHandler());
- }
- private class ClickHandler implements MouseListener {
- public void mouseClicked(MouseEvent e) {
- }
- public void mousePressed(MouseEvent e) {
- startx = e.getX();
- starty = e.getY();
- }
- public void mouseReleased(MouseEvent e) {
- oldxstart = startx;
- oldystart = starty;
- }
- public void mouseEntered(MouseEvent e) {
- }
- public void mouseExited(MouseEvent e) {
- }
- }
- private class MotionHandler implements MouseMotionListener {
- public void mouseDragged(MouseEvent e) {
- tx.setToIdentity();
- globex = e.getX() - startx;
- globey = e.getY() - starty;
- tx.translate(globex, globey);
- tx.scale(globescale, globescale);
- Board.this.revalidate();
- Board.this.repaint();
- }
- public void mouseMoved(MouseEvent e) {
- }
- }
- private class ZoomHandler implements MouseWheelListener {
- public void mouseWheelMoved(MouseWheelEvent e) {
- //if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {
- //Point2D p1 = e.getPoint();
- //Point2D p2 = null;
- //try {
- // p2 = tx.inverseTransform(p1, null);
- //} catch (NoninvertibleTransformException ex) {
- // should not get here
- // ex.printStackTrace();
- // return;
- //}
- globescale -= (0.1 * e.getWheelRotation());
- globescale = Math.max(0.1, globescale);
- tx.setToIdentity();
- tx.translate(globex, globey);
- tx.scale(globescale, globescale);
- Board.this.revalidate();
- Board.this.repaint();
- //}
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement