Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- /*
- Aufgabe 3) Zeichnen mit Schleifen und Methoden
- */
- public class Aufgabe3 {
- private static void drawTriangle(double centerX, double centerY, double height, int direction) {
- direction = direction%4;
- final double shift = height;
- double[] center = {centerX, centerY};
- double[] point1;
- double[] point2;
- if (direction % 2 == 0) {
- final double x = centerX + (shift * (direction == 0 ? -1 : 1));
- point1 = getVerticalPoint(x, centerY, height, true);
- point2 = getVerticalPoint(x, centerY, height, false);
- } else {
- final double x = centerY + (shift * (direction == 1 ? 1 : -1));
- point1 = getHorizontalPoint(centerX, x, height, true);
- point2 = getHorizontalPoint(centerX, x, height, false);
- }
- StdDraw.polygon(merge(true, center, point1, point2), merge(false, center, point1, point2));
- }
- private static double[] merge(boolean x, double[]... points) {
- double[] cords = new double[points.length];
- for (int i = 0; i < points.length; i++) {
- if (x) {
- cords[i] = points[i][0];
- } else {
- cords[i] = points[i][1];
- }
- }
- return cords;
- }
- private static double[] getVerticalPoint(double centerX, double centerY, double height, boolean up) {
- final double[] cords = new double[2];
- cords[0] = centerX;
- cords[1] = centerY + (up ? height : -height);
- return cords;
- }
- private static double[] getHorizontalPoint(double centerX, double centerY, double height, boolean right) {
- final double[] cords = new double[2];
- cords[0] = centerX + (right ? height : -height);
- cords[1] = centerY;
- return cords;
- }
- private static void drawTrianglePattern(double centerX, double centerY, int height, int centerShift) { //Schleife lohnt sich aufgrund der verschiedenen States nicht
- final int pixelCenterShift = 1 * centerShift;
- drawTriangle(centerX - pixelCenterShift, centerY, height, 0);
- drawTriangle(centerX, centerY + pixelCenterShift, height, 1);
- drawTriangle(centerX + pixelCenterShift, centerY, height, 2);
- drawTriangle(centerX, centerY - pixelCenterShift, height, 3);
- }
- private static void drawTrianglePatternLine(double centerX, double centerY, int height, int growth, int distance) {
- //TODO: Implementieren Sie hier Ihre Lösung für die Angabe
- }
- public static void main(String[] args) {
- int pixelWidth = 200;
- int pixelHeight = 200;
- StdDraw.setCanvasSize(pixelWidth, pixelHeight);
- StdDraw.setXscale(0, pixelWidth);
- StdDraw.setYscale(0, pixelHeight);
- StdDraw.setPenColor(StdDraw.BLACK);
- StdDraw.setPenRadius(0.005);
- //TODO: Testen Sie die Methoden ausführlich
- drawTriangle(100, 100, 20, 0);
- StdDraw.pause(2000); //Wartezeit 5 Sekunden
- StdDraw.clear();
- drawTriangle(100, 100, 40, 1);
- StdDraw.pause(2000); //Wartezeit 5 Sekunden
- StdDraw.clear();
- drawTriangle(100, 100, 30, 2);
- StdDraw.pause(2000); //Wartezeit 5 Sekunden
- StdDraw.clear();
- drawTriangle(100, 100, 50, 3);
- StdDraw.pause(2000); //Wartezeit 5 Sekunden
- StdDraw.clear();
- drawTrianglePattern(100, 100, 50, 0);
- StdDraw.pause(2000); //Wartezeit 5 Sekunden
- StdDraw.clear();
- drawTrianglePattern(100, 100, 40, 10);
- StdDraw.pause(2000); //Wartezeit 5 Sekunden
- StdDraw.clear();
- drawTrianglePattern(100, 100, 20, 40);
- StdDraw.pause(2000); //Wartezeit 5 Sekunden
- StdDraw.clear();
- drawTrianglePattern(100, 100, 10, 20);
- StdDraw.pause(2000);//Wartezeit 5 Sekunden
- StdDraw.clear();
- pixelWidth = 700;
- pixelHeight = 200;
- StdDraw.setCanvasSize(pixelWidth, pixelHeight);
- StdDraw.setXscale(0, pixelWidth);
- StdDraw.setYscale(0, pixelHeight);
- StdDraw.setPenColor(StdDraw.BLACK);
- StdDraw.setPenRadius(0.005);
- drawTrianglePatternLine(50, 100, 20, 5, 20);
- //drawTrianglePatternLine(50, 100, 10, 3, 10);
- //drawTrianglePatternLine(50, 100, 10, 10, 15);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement