/* * Dateiname: Farb1.txt * Autor: Fritz Dimmel <fritz@dimmel.at> * Matr.Nr.: 0302230 * Kennzahl: 535 * Datum: 2003-11-13 * Beschreibung: * Dokumentation zum JAVA Programm Farb1 */ .) AUFGABENSTELLUNG --------------------- Ziel des Programms ist es, einen RGB Wert (0/0/0 bis 255/255/255) einzugeben, der dann auf einen niedrigeren Farbquader heruntergerechnet wird und dann zwei Eckpunkte des Mini-Quaders in dem er sich nun befindet zurueckgibt. Dabei soll das Reduktionsverhaeltnis fuer die Farben Rot:Gruen:Blau mit 7:7:3 definiert werden. Es entstehen nun 147 kleine Quader innerhalb des grossen 255er Wuerfels. Der Benutzer soll nun drei Werte eingeben. Das Programm ermittelt nun, in welchem dieser Quader sich der Farbpunkt befindet. Nun soll der naeheste Eckpunkt des Quaders zum Punkt und der am weitesten entfernteste Punkt des Quaders zum Punkt ausgegeben werden. Zu beachten ist, dass, falls der Punkt ein Eckpunkt des Quaders ist, dieser zweimal aus- gegeben wird. Weiters muss beachtet werden, dass, falls der Punkt genau in der Mitte des Quaders liegt, die "kleinere" Ecke (nach Zahlen: z.B. 109 < 146) ausgegeben wird. Ist der Punkt genau an der Kante des Quaders, soll auch hier der kleiner Quader hergenommen werden. .) AUSFUEHRUNG --------------------- Die main-Methode wird initialisiert und die notwendigen Variablen deklariert. Der User kann nun die drei Farbwerte eingeben (mit EprogIO.readInt). Tritt hier ein Fehler auf werden Fehlermeldung je nach Fehlertyp ausgegeben: (entweder die Zahlen sind nicht im erlaubten Bereich (error == true): "?" wird ausgegeben, oder es wird keine Int-Zahl eingegeben (EprogException): "FALSCHE EINGABE" wird ausgegeben). Sind alle Eingaben korrekt, beginnt die Ueberpruefungsprozedur. Mit der Methode checkEckpunkt() wird ueberprueft, ob der eingegebene Farbwert ein Eckpunkt ist. Dabei werden die Farbwerte in der Reihenfolge Blau/Gruen/Rot mit den vordefinierten Eckpunkten des Quaders verglichen. Sind alle drei Punkte ident, handelt es sich um einen Eckpunkt und der String ergebnis, der zurueckgegeben wird, beinhaltet bereits zweimal hintereinander den eingegebenen Farbwert. Handelt es ich nicht um einen Eckpunkt wird nun die Methode calcErgebnis aufgerufen. Diese Methode berechnet nun nacheinander die linken und rechten Grenzen des jeweiligen Rot/Gruen/Blau Farbwertes mit den Methoden getLeftBoarder und getRightBoarder. Anschliessend wird noch mit der Methode findNearest und findFarest ermittelt, welcher Eckpunkt jeweils naeher dem Farbwert liegt bzw. weiter weg ist. Abschliessend wird noch der String ergebnis generiert und an die main-Methode zurueckgegeben.