/** *
Überschrift: GDV aufg1
*Beschreibung:
*Copyright: Copyright (c) 2005
*Organisation:
* @author Vanessa Fischer, Nikolas Isensee (Gruppe 23) * @version 1.0 */ import java.awt.*; import java.awt.geom.*; import javax.swing.JFrame; public class CircleColouring extends JFrame { public CircleColouring() { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; //Verwendung von Antialiasing, um die Raender weniger ausgefranst //erscheinen zu lassen g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //Die Linien sollen eine Dicke von 1.5 statt 1.0 haben. BasicStroke bs = new BasicStroke(1.0f); g2d.setStroke(bs); //Rot {Anfangswert, Zielwert} int[] red = { 172, 217 }; //Grün {Anfangswert, Zielwert} int[] green = { 3, 219 }; //Blau {Anfangswert, Zielwert} int[] blue = { 3, 17 }; //rgb-Matrix int steps = 1440; //Anzahl Morph-Schritte int[] re = new int[steps + 1]; int[] gr = new int[steps + 1]; int[] bl = new int[steps + 1]; float alpha; float stepsDouble = steps; float x, y, x2, y2; int r = 100; double winkel = 0; x = (float) (r * Math.cos(winkel)); x2 = x + 20; y = (float) (r * Math.sin(winkel)); y2 = (y * x2) / x; Color color = new Color(red[0], green[0], blue[0]); GeneralPath gp = new GeneralPath(); gp.moveTo(x, y); gp.lineTo(x2, y2); g2d.setColor(color); g2d.draw(gp); for (int i = 1; i <= steps; i++) { alpha = i / stepsDouble; winkel = winkel + 0.125; double winkel1 = winkel * Math.PI / 180; re[i] = (int) ( (1 - alpha) * red[0] + alpha * red[1]); gr[i] = (int) ( (1 - alpha) * green[0] + alpha * green[1]); bl[i] = (int) ( (1 - alpha) * blue[0] + alpha * blue[1]); Color c = new Color(re[i], gr[i], bl[i]); g2d.setColor(c); if (winkel <= 90) { x = (float) (Math.abs(r * Math.cos(winkel1))) + 150; x2 = (float) (Math.abs( (r - 60) * Math.cos(winkel1))) + 150; y = (float) (Math.abs(r * Math.sin(winkel1))) + 150; y2 = (float) (Math.abs( (r - 60) * Math.sin(winkel1))) + 150; } else { x = (float) ( -1 * (Math.abs(r * Math.cos(winkel1))) + 150); x2 = (float) ( -1 * (Math.abs( (r - 60) * Math.cos(winkel1))) + 150); y = (float) (Math.abs(r * Math.sin(winkel1))) + 150; y2 = (float) (Math.abs( (r - 60) * Math.sin(winkel1))) + 150; } GeneralPath gp1 = new GeneralPath(); gp1.moveTo(x, y); gp1.lineTo(x2, y2); g2d.setColor(c); g2d.draw(gp1); } } public static void main(String[] args) { CircleColouring a3 = new CircleColouring(); a3.setTitle("Farbkreis"); a3.setSize(400, 400); a3.setVisible(true); } }