verschiedene Farben, die mit Java erstellen worden, mit den Augen unterscheiden ****

ist es möglich so ähnlich aussehende farben auszuschliessen, dass sie nicht wierder
verwendet werden ****

danke

Ottens
 
Meines Erachtens nach ist das nicht möglich. Was du machen kannst, wenn du die Farben erzeugen lässt, dass du den Abstand zur nächsten Farbe größer machst. Ich nehme mal an, dass du die Farben mit einer Schleife initialisierst?
 
Möglich ist es schon, geht aber schwer in Mathematik/Physik rein.
Hab irgendwann mal darüber was gelesen...hab es aber weder komplett verstanden, noch kann ich es wiederfinden.

Allein schon vom Aufwand her ist Fabios Methode das einzig Sinnvolle.
 
Zuletzt bearbeitet:
ich habe so einen Pool als Reihung von Farben, dann erstelle ich davon eine Liste und in der Liste
wenn ich eine neue farbe erstelle mit Random schleife ich die farbe durch die Liste ob liste.contains(farbe)
|| oder semiColorExist() wenn eine von beiden wahr dann soll neue Farbe erstellt werden sonst die Farbe zur
Liste einfügen

while()
semiColorExist(randomColor, einePoolFarbe ) -->

if( Math.abs(randomColor.getGreen - PoolFarbe.getGreen()) < 50) soll neue farbe erstellt werden
for Rot und Blau auch
Math.abs liefert den Betrag also immer plus.

aber zeigt mir immer Farben die ähnlich aussehen, wo ist der Fehler ****
 
Das könnte daran liegen, dass du dir nur die Farben von new Color(0-50, 0-50, 0-50) erstellst. Die Farben gehen aber bis new Color(0-255, 0-255, 0-255).
Aber ein bischen mehr Code wäre nicht schlecht, weil ich sonst auch nur raten kann.
 
1) hab ich den Beitrag vier Mal lesen müssen, bis ich ihn verstanden habe.
2) Wenn du schon auf Ähnlichkeit prüfst musst du nicht auch noch auf Gleichheit prüfen. Die ist in der Ähnlichkeit schon drin.
3) Ohne Code können wir nur raten
 
public void paintComponent(Graphics gr) {
super.paintComponent(gr);
farbe = getNewColor();
while ((semiColorIsSavedToList(farbe) || liste.contains(farbe))){
farbe = getNewColor();
}
liste.add(farbe);
g2d.setColor(farbe);
g2d.drawString(" neue Farbe ",250 , 20);
g2d.fillOval(250, 20, 200, 200);
vorfarbe = farbe;
setOldColor(farbe);
}
 
Hallo Fabio. ich bedanke mich für deine Hilfe
hier ist etwas code

beste Gruß

Ottens

public void paintcomponent(Gra g) {
Graphics2D g2 = (Graphics2D) g;
far = getNewColor();
while ((semiColorIsSavedToList(far)){
far = getNewColor();
}
list.add(far);
g2d.setColor(far);
g2d.drawString(" neue Far ",250 , 20);
g2d.fillOval(250, 20, 200, 200);

}
public boolean semiColorIsSavedToList(Color farbe) {
for(int index = 0 ; index < liste.size() -1; index++ ){
Color pool = liste.get(index);
boolean erg =semiColorExist(farbe, pool);
return erg;
}

public boolean semiColorExist(Color farbe, Color pool){
int r = Math.abs(farbe.getRed() - pool.getRed());
int g = Math.abs(farbe.getGreen() - pool.getGreen());
int b = Math.abs(farbe.getBlue() - pool.getBlue());
if( r <= 50 || g <= 50 || b <= 50){
return true;
}
return false;
}
public Color getNewColor(){
Random rnd = new Random();
int rRnd = rnd.nextInt(256);
int gRnd = rnd.nextInt(256);
int bRnd = rnd.nextInt(256);
while((rRnd > 210) || (Math.abs(rRnd - vorfarbe.getRed())< 50)){
rRnd = rnd.nextInt(256);
}
while((gRnd > 200) || (Math.abs(gRnd - vorfarbe.getGreen())< 50)){
gRnd = rnd.nextInt(256);
}
while(bRnd < 150 || (Math.abs(bRnd - vorfarbe.getBlue())< 50)){
bRnd = rnd.nextInt(256);
}

Color farbe = new Color(rRnd,gRnd,bRnd);
return farbe;
}
 
Zuletzt bearbeitet:
Hallo Fabio,

du meinst System.out.println(" ein String "); ja das mache ich auch aber viele sagen mir
ich soll das nicht benutzen, es ist kein gutes Style meinen viele aber mir auch lieber
zu benutzen.

Grüße

Ottens
 

Neue Beiträge

Zurück