Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. package vectorlib;
  2.  
  3. import java.awt.BasicStroke;
  4. import java.awt.Color;
  5. import java.awt.Frame;
  6. import java.awt.Graphics;
  7. import java.awt.Graphics2D;
  8. import java.awt.Panel;
  9. import java.awt.RenderingHints;
  10. import java.awt.event.WindowAdapter;
  11. import java.awt.event.WindowEvent;
  12. import java.awt.geom.Path2D;
  13.  
  14. import javax.swing.JTextField;
  15.  
  16. public class PathWindow extends Frame {
  17.  
  18. int sizeX = 800;
  19. int sizeY = 600;
  20.  
  21. public PathWindow() {
  22. this.setSize(sizeX, sizeY);
  23. this.setTitle("Computergrafik und Computeranimation");
  24. this.add(new MyPanel());
  25. this.setVisible(true);
  26. this.addWindowListener(
  27. new WindowAdapter() {
  28. public void windowClosing(WindowEvent e) {
  29. System.exit(0);
  30. }
  31. }
  32. );
  33. }
  34.  
  35. public static void main(String[] args) {
  36. new PathWindow();
  37. }
  38.  
  39. private class MyPanel extends Panel {
  40.  
  41. public void paint(Graphics g) {
  42. Graphics2D g2d = (Graphics2D)g;
  43. g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  44.  
  45. Path2D.Double path = new Path2D.Double(Path2D.WIND_NON_ZERO);
  46.  
  47. int offsetX = 400;
  48. int offsetY = 300;
  49.  
  50. path.moveTo(0 + offsetX,100 + offsetY);
  51. path.quadTo(70 + offsetX,-40 + offsetY,-87 + offsetX,-50 + offsetY);
  52.  
  53. path.quadTo(0 + offsetX,80 + offsetY,87 + offsetX,-50 + offsetY);
  54. path.quadTo(-70 + offsetX,-40 + offsetY,0 + offsetX,100 + offsetY);
  55.  
  56. path.closePath();
  57.  
  58. g2d.fill(path);
  59.  
  60.  
  61. // path.moveTo(300, 300);
  62. // path.quadTo(100, 0, 0, 150);
  63. // path.quadTo(300, 600, 200, 300);
  64. // path.closePath();
  65. //
  66. // g2d.setColor(Color.RED);
  67. // g2d.fill(path);
  68.  
  69. // g2d.drawLine(400, 200, 500, 300);
  70. // g2d.drawLine(500, 300, 400, 400);
  71. //
  72. // g2d.setColor(Color.BLUE);
  73. // g2d.drawLine(400, 400, 300, 500);
  74. // g2d.drawLine(300, 500, 500, 600);
  75. // g2d.drawLine(500, 600, 300, 700);
  76.  
  77. //Vektoren
  78. //Vector v = new Vector(-10,-20,0);
  79. //drawCoord(g2d);
  80. //drawVector(v, Color.GREEN, g2d);
  81. }
  82. }
  83.  
  84. private void drawGrid(Graphics2D g2d) {
  85. g2d.setStroke(new BasicStroke(0.5f));
  86. g2d.setColor(Color.LIGHT_GRAY);
  87. for (int i = -600; i < 800; i+=10) {
  88. g2d.drawLine(i, 600, i + 600, 0);
  89. }
  90. for (int i = 0; i < 800; i+=10) {
  91. g2d.drawLine(0, i, 800, i);
  92. }
  93. }
  94.  
  95. private void drawVector(Vector v, Color c, Graphics2D g2d) {
  96. int vx = (int)v.getX() * 10;
  97. int vy = (int)v.getY() * 10;
  98. g2d.setColor(c);
  99. g2d.drawLine(sizeX/2, sizeY/2, vx + sizeX/2, -vy + sizeY/2);
  100. g2d.drawOval(vx + sizeX/2-5, -vy + sizeY/2-5, 10, 10);
  101. g2d.drawString(" (" + vx / 10 + " | " + vy / 10 + ")", vx + sizeX/2, -vy + sizeY/2);
  102. }
  103.  
  104. private void drawCoord(Graphics2D g2d) {
  105. int coordSizeX = 10;
  106. int coordSizeY = 10;
  107. g2d.setColor(Color.BLACK);
  108. g2d.setStroke(new BasicStroke(2));
  109. g2d.drawLine(sizeX/2 - coordSizeX * 10, sizeY / 2, sizeX / 2 + coordSizeX * 10, sizeY/2);
  110. g2d.drawString("(" + coordSizeX + ")", sizeX / 2 + coordSizeX * 10, sizeY / 2);
  111. g2d.drawLine(sizeX/2, sizeY / 2 - coordSizeY * 10, sizeX / 2, sizeY / 2 + coordSizeY * 10);
  112. g2d.drawString("(" + coordSizeX + ")", sizeX / 2, sizeY / 2 - coordSizeY * 10);
  113. }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement