Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.35 KB | None | 0 0
  1. import java.awt.*;
  2.  
  3. /*
  4. Aufgabe 3) Zeichnen mit Schleifen und Methoden
  5. */
  6. public class Aufgabe3 {
  7.  
  8. private static void drawTriangle(double centerX, double centerY, double height, int direction) {
  9. direction = direction%4;
  10. final double shift = height;
  11. double[] center = {centerX, centerY};
  12. double[] point1;
  13. double[] point2;
  14. if (direction % 2 == 0) {
  15. final double x = centerX + (shift * (direction == 0 ? -1 : 1));
  16. point1 = getVerticalPoint(x, centerY, height, true);
  17. point2 = getVerticalPoint(x, centerY, height, false);
  18. } else {
  19. final double x = centerY + (shift * (direction == 1 ? 1 : -1));
  20. point1 = getHorizontalPoint(centerX, x, height, true);
  21. point2 = getHorizontalPoint(centerX, x, height, false);
  22. }
  23. StdDraw.polygon(merge(true, center, point1, point2), merge(false, center, point1, point2));
  24. }
  25.  
  26. private static double[] merge(boolean x, double[]... points) {
  27. double[] cords = new double[points.length];
  28. for (int i = 0; i < points.length; i++) {
  29. if (x) {
  30. cords[i] = points[i][0];
  31. } else {
  32. cords[i] = points[i][1];
  33. }
  34. }
  35. return cords;
  36. }
  37.  
  38. private static double[] getVerticalPoint(double centerX, double centerY, double height, boolean up) {
  39. final double[] cords = new double[2];
  40. cords[0] = centerX;
  41. cords[1] = centerY + (up ? height : -height);
  42. return cords;
  43. }
  44.  
  45. private static double[] getHorizontalPoint(double centerX, double centerY, double height, boolean right) {
  46. final double[] cords = new double[2];
  47. cords[0] = centerX + (right ? height : -height);
  48. cords[1] = centerY;
  49. return cords;
  50. }
  51.  
  52.  
  53. private static void drawTrianglePattern(double centerX, double centerY, int height, int centerShift) { //Schleife lohnt sich aufgrund der verschiedenen States nicht
  54. final int pixelCenterShift = 1 * centerShift;
  55. drawTriangle(centerX - pixelCenterShift, centerY, height, 0);
  56. drawTriangle(centerX, centerY + pixelCenterShift, height, 1);
  57. drawTriangle(centerX + pixelCenterShift, centerY, height, 2);
  58. drawTriangle(centerX, centerY - pixelCenterShift, height, 3);
  59. }
  60.  
  61. private static void drawTrianglePatternLine(double centerX, double centerY, int height, int growth, int distance) {
  62. //TODO: Implementieren Sie hier Ihre Lösung für die Angabe
  63. }
  64.  
  65. public static void main(String[] args) {
  66.  
  67. int pixelWidth = 200;
  68. int pixelHeight = 200;
  69. StdDraw.setCanvasSize(pixelWidth, pixelHeight);
  70. StdDraw.setXscale(0, pixelWidth);
  71. StdDraw.setYscale(0, pixelHeight);
  72. StdDraw.setPenColor(StdDraw.BLACK);
  73. StdDraw.setPenRadius(0.005);
  74.  
  75. //TODO: Testen Sie die Methoden ausführlich
  76. drawTriangle(100, 100, 20, 0);
  77. StdDraw.pause(2000); //Wartezeit 5 Sekunden
  78. StdDraw.clear();
  79. drawTriangle(100, 100, 40, 1);
  80. StdDraw.pause(2000); //Wartezeit 5 Sekunden
  81. StdDraw.clear();
  82. drawTriangle(100, 100, 30, 2);
  83. StdDraw.pause(2000); //Wartezeit 5 Sekunden
  84. StdDraw.clear();
  85. drawTriangle(100, 100, 50, 3);
  86. StdDraw.pause(2000); //Wartezeit 5 Sekunden
  87. StdDraw.clear();
  88.  
  89.  
  90. drawTrianglePattern(100, 100, 50, 0);
  91. StdDraw.pause(2000); //Wartezeit 5 Sekunden
  92. StdDraw.clear();
  93. drawTrianglePattern(100, 100, 40, 10);
  94. StdDraw.pause(2000); //Wartezeit 5 Sekunden
  95. StdDraw.clear();
  96. drawTrianglePattern(100, 100, 20, 40);
  97. StdDraw.pause(2000); //Wartezeit 5 Sekunden
  98. StdDraw.clear();
  99. drawTrianglePattern(100, 100, 10, 20);
  100. StdDraw.pause(2000);//Wartezeit 5 Sekunden
  101. StdDraw.clear();
  102.  
  103. pixelWidth = 700;
  104. pixelHeight = 200;
  105. StdDraw.setCanvasSize(pixelWidth, pixelHeight);
  106. StdDraw.setXscale(0, pixelWidth);
  107. StdDraw.setYscale(0, pixelHeight);
  108. StdDraw.setPenColor(StdDraw.BLACK);
  109. StdDraw.setPenRadius(0.005);
  110.  
  111. drawTrianglePatternLine(50, 100, 20, 5, 20);
  112. //drawTrianglePatternLine(50, 100, 10, 3, 10);
  113. //drawTrianglePatternLine(50, 100, 10, 10, 15);
  114. }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement