Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1.  
  2. import java.awt.Dimension;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.RenderingHints;
  6. import java.awt.Polygon;
  7. import java.util.Random;
  8. import java.awt.event.MouseWheelEvent;
  9. import java.awt.event.MouseWheelListener;
  10. import java.awt.event.MouseEvent;
  11. import java.awt.event.MouseListener;
  12. import java.awt.event.MouseMotionListener;
  13. import java.awt.geom.AffineTransform;
  14. import java.awt.geom.NoninvertibleTransformException;
  15. import javax.swing.JPanel;
  16. import java.awt.geom.Point2D;
  17.  
  18. @SuppressWarnings("serial")
  19. public class Board extends JPanel {
  20.  
  21. double startx = 0;
  22. double starty = 0;
  23. double globescale = 1;
  24. double globex = 0;
  25. double globey = 0;
  26. double oldxstart = 0;
  27. double oldystart = 0;
  28. double done = 0;
  29. AffineTransform tx = new AffineTransform();
  30. Random generator = new Random(System.currentTimeMillis());
  31. Polygon p = new Polygon();
  32.  
  33. public void paint(Graphics g) {
  34. super.paint(g);
  35. Graphics2D g2 = (Graphics2D) g;
  36. RenderingHints rh =
  37. new RenderingHints(RenderingHints.KEY_ANTIALIASING,
  38. RenderingHints.VALUE_ANTIALIAS_ON);
  39.  
  40. rh.put(RenderingHints.KEY_RENDERING,
  41. RenderingHints.VALUE_RENDER_QUALITY);
  42.  
  43. g2.setRenderingHints(rh);
  44. Dimension size = getSize();
  45. double w = size.getWidth();
  46. double h = size.getHeight();
  47. double num = 10000;
  48. double EcAn = 360 / num;
  49. double ang = 0;
  50. double len;
  51. if (h < w) {
  52. len = Math.sqrt(2 * (Math.pow((h - 20) / 2, 2))) / num * 4;
  53. } else {
  54. len = Math.sqrt(2 * (Math.pow((w - 20) / 2, 2))) / num * 4;
  55. }
  56. double orgx = w / 2;
  57. double orgy = 20;
  58. double curx = w / 2;
  59. double cury = 20;
  60. double prox = w / 2;
  61. double proy = 20;
  62. double nexx;
  63. double nexy;
  64. double lenx;
  65. double leny;
  66. if (done == 0) {
  67. for (double deg = 0;
  68. deg < num;
  69. deg++) {
  70. ang = ang + EcAn;
  71. lenx = len * Math.sin(Math.toRadians(ang + 90));
  72. leny = len * Math.cos(Math.toRadians(ang + 90));
  73. double randomnumber1 = generator.nextDouble();
  74. double randomnumber2 = generator.nextDouble();
  75. nexx = prox - lenx + randomnumber1;
  76. nexy = proy - leny + randomnumber2;
  77. //g2.draw(new Line2D.Double(curx, cury, nexx, nexy));
  78. p.addPoint((int) nexx, (int) nexy);
  79. curx = nexx;
  80. cury = nexy;
  81. prox = prox - lenx;
  82. proy = proy - leny;
  83. }
  84. //g2.draw(p);
  85. }
  86. g2.fill(tx.createTransformedShape(p));
  87. done = 1;
  88. }
  89.  
  90. public Board() {
  91. this.addMouseWheelListener(new ZoomHandler());
  92. this.addMouseListener(new ClickHandler());
  93. this.addMouseMotionListener(new MotionHandler());
  94. }
  95.  
  96. private class ClickHandler implements MouseListener {
  97.  
  98. public void mouseClicked(MouseEvent e) {
  99. }
  100.  
  101. public void mousePressed(MouseEvent e) {
  102. startx = e.getX();
  103. starty = e.getY();
  104. }
  105.  
  106. public void mouseReleased(MouseEvent e) {
  107. oldxstart = startx;
  108. oldystart = starty;
  109. }
  110.  
  111. public void mouseEntered(MouseEvent e) {
  112. }
  113.  
  114. public void mouseExited(MouseEvent e) {
  115. }
  116. }
  117.  
  118. private class MotionHandler implements MouseMotionListener {
  119.  
  120. public void mouseDragged(MouseEvent e) {
  121. tx.setToIdentity();
  122. globex = e.getX() - startx;
  123. globey = e.getY() - starty;
  124. tx.translate(globex, globey);
  125. tx.scale(globescale, globescale);
  126. Board.this.revalidate();
  127. Board.this.repaint();
  128. }
  129.  
  130. public void mouseMoved(MouseEvent e) {
  131. }
  132. }
  133.  
  134. private class ZoomHandler implements MouseWheelListener {
  135.  
  136. public void mouseWheelMoved(MouseWheelEvent e) {
  137. //if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {
  138.  
  139. //Point2D p1 = e.getPoint();
  140. //Point2D p2 = null;
  141. //try {
  142. // p2 = tx.inverseTransform(p1, null);
  143. //} catch (NoninvertibleTransformException ex) {
  144. // should not get here
  145. // ex.printStackTrace();
  146. // return;
  147. //}
  148.  
  149. globescale -= (0.1 * e.getWheelRotation());
  150. globescale = Math.max(0.1, globescale);
  151.  
  152. tx.setToIdentity();
  153. tx.translate(globex, globey);
  154. tx.scale(globescale, globescale);
  155.  
  156. Board.this.revalidate();
  157. Board.this.repaint();
  158. //}
  159. }
  160. }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement