/*
 * 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.