R
Rudi Rijkaard
Gast
hallo
ich hab ein kleines applet geschrieben, dass den pythagorasbaum rekursiv zeichnen soll
den code habe ich beigefügt
lieber gleich im voraus:ich bin noch blutiger java-anfänger
also nicht erschrecken, falls ein paar blöde fehler darin auftauchen
aber ich denke mal bis zur eigentlichen rekursion habe ich alles einigermaßen richtig gemacht
und zwar soll dann noch zusätzlich die farbe des quadrats in abhängigkeit der rekursionstiefe so variiert werden,dass die blätter des baumes immer grüner werden
ich hab das auch einigermaßen hinbekommen aber wenn ich das applet dann ausführe kommt manchmal die fehlermeldung(ebenfalls beigefügt), dass wohl anscheinend die zeile "farbebaum=new Color(80,tiefe*5,0);" fehlerhaft ist
wie kann ich diesen fehler am besten korrigieren?
sind zudem insbesondere die zeilen
richtig?
bitte um schnelle antwort
java.lang.IllegalArgumentException: Color parameter outside of expected range: Green
at java.awt.Color.testColorValueRange(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at pythagoras.drawTree(pythagoras.java:23)
at pythagoras.drawTree(pythagoras.java:50)
at pythagoras.drawTree(pythagoras.java:51)
at pythagoras.paint(pythagoras.java:11)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.IllegalArgumentException: Color parameter outside of expected range: Green
at java.awt.Color.testColorValueRange(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at pythagoras.drawTree(pythagoras.java:23)
at pythagoras.drawTree(pythagoras.java:50)
usw.
ich hab ein kleines applet geschrieben, dass den pythagorasbaum rekursiv zeichnen soll
den code habe ich beigefügt
lieber gleich im voraus:ich bin noch blutiger java-anfänger
also nicht erschrecken, falls ein paar blöde fehler darin auftauchen
aber ich denke mal bis zur eigentlichen rekursion habe ich alles einigermaßen richtig gemacht
und zwar soll dann noch zusätzlich die farbe des quadrats in abhängigkeit der rekursionstiefe so variiert werden,dass die blätter des baumes immer grüner werden
ich hab das auch einigermaßen hinbekommen aber wenn ich das applet dann ausführe kommt manchmal die fehlermeldung(ebenfalls beigefügt), dass wohl anscheinend die zeile "farbebaum=new Color(80,tiefe*5,0);" fehlerhaft ist
wie kann ich diesen fehler am besten korrigieren?
sind zudem insbesondere die zeilen
Code:
if((tiefe==0) ||(laenge<2)){
g.drawLine(b-ax,h-ay,b-bx,h-by);
}else{
drawTree(g,dx,dy,ex,ey,tiefe+1);
drawTree(g,ex,ey,cx,cy,tiefe+1);
richtig?
bitte um schnelle antwort
java.lang.IllegalArgumentException: Color parameter outside of expected range: Green
at java.awt.Color.testColorValueRange(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at pythagoras.drawTree(pythagoras.java:23)
at pythagoras.drawTree(pythagoras.java:50)
at pythagoras.drawTree(pythagoras.java:51)
at pythagoras.paint(pythagoras.java:11)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.IllegalArgumentException: Color parameter outside of expected range: Green
at java.awt.Color.testColorValueRange(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at java.awt.Color.<init>(Unknown Source)
at pythagoras.drawTree(pythagoras.java:23)
at pythagoras.drawTree(pythagoras.java:50)
usw.
Code:
import java.applet.Applet;
import java.awt.*;
public class pythagoras extends Applet {
public void init(){
}
public void paint (Graphics g){
drawTree(g,50,100,150,100,20);
}
public void drawTree(Graphics g,int ax,int ay,int bx,int by, int tiefe){
int abx=bx-ax;
int aby=by-ay;
double laenge=Math.sqrt(abx*abx+aby*aby);
int b=getWidth()-100;
int h=getHeight()-100;
if((tiefe==0) ||(laenge<2)){
g.drawLine(b-ax,h-ay,b-bx,h-by);
}else{
Color farbebaum;
farbebaum=new Color(80,tiefe*5,0);
g.setColor(farbebaum);
int bcx=aby;
int bcy=-abx;
int cx=bx-bcx;
int cy=by-bcy;
int dx=ax-bcx;
int dy=ay-bcy;
g.drawLine(b-ax,h-ay,b-bx,h-by);
g.drawLine(b-bx,h-by,b-cx,h-cy);
g.drawLine(b-ax,h-ay,b-dx,h-dy);
g.drawLine(b-dx,h-dy,b-cx,h-cy);
double r1=0.2;
double r2=0.8;
double r=(r1+Math.random()*(r2-r1));
double dpx=r*abx;
double dpy=r*aby;
double PE=Math.sqrt(r*(1-r))*laenge;
double einheitsvektorx=(1/laenge)*bcx;
double einheitsvektory=(1/laenge)*bcy;
int ex= (int) (dx+dpx-(PE*einheitsvektorx));
int ey= (int) (dy+dpy-(PE*einheitsvektory));
drawTree(g,dx,dy,ex,ey,tiefe+1);
drawTree(g,ex,ey,cx,cy,tiefe+1);
}}
}