From ccae5511ecab15475cea250f8bd4bc5f75d8397b Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 17 Nov 2015 10:07:41 +0100 Subject: "Solution" for eip 04 - H4-2 --- ws2015/eip/blaetter/04/Schleife.java | 43 +++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'ws2015') diff --git a/ws2015/eip/blaetter/04/Schleife.java b/ws2015/eip/blaetter/04/Schleife.java index 05e791b..a693cb0 100644 --- a/ws2015/eip/blaetter/04/Schleife.java +++ b/ws2015/eip/blaetter/04/Schleife.java @@ -1,20 +1,47 @@ import java.awt.Rectangle; +import java.awt.Color; +import java.awt.Point; public class Schleife { public static void main(String[] args) { - int margin = 25; - int box_height = 50; - int box_width = 150; - Rectangle r1 = new Rectangle(margin, margin + box_width, box_width, box_height); GraphicsWindow gw = new GraphicsWindow(); - gw.fill(r1); - // ... TODO ... - - gw.setText("Klicken Sie zum Beenden."); + drawGradient(gw); + gw.mouseClick(); System.exit(0); } + private static void drawGradient(GraphicsWindow gw) { + Color fg = gw.getColor(); + for (Point p = new Point(0,0); p.y <= 480; p.move(0, p.y + 1)) // gw.GetWidth would have been nice + { + for (;p.x <= 640; p.move(p.x + 1, p.y)) + { + gw.setColor(f(p.x, p.y) <= 0 ? Color.red : color(p.x, p.y)); + // System.out.format("%s in %s\n", p.toString(), gw.getColor().toString()); // DEBUG + gw.drawPoint(p); + } + } + gw.setColor(fg); + } + + private static double f(int x, int y) { + double xprime = (x - 200) / 120; + double yprime = (200 - y) / 100; + return Math.pow(xprime * xprime + yprime * yprime - 1, 3) - (xprime * xprime * yprime * yprime * yprime); + // pow is comparatively expensive (at least it would be if this were C ;) ) + } + + private static Color color(int x, int y) { + // System.out.format("(%d, %d)\n", x, y); // DEBUG + double g = 0.15 * (1200 - x - y); + double b = 0.15 * (x + y); + return new Color((int) 0, (int) g, (int) b); + /* Why can’t we have nice things? Like proper type signatures? + * We introduce some error by truncating to integer -- We deemed this to be of no moment. + */ + } + } -- cgit v1.2.3