/**
 *
 * Beschreibung
 * Testklasse, um die einzelnen Funktionen der Klassen fuer die 3D-Grafik zu testen.
 *
 * @version 1.0 vom 10.04.2011
 * @author Schaller
 */

public class Testen {

    public static void main(String[] args) {
        Vektor v = new Vektor(2, 1, -4);
        System.out.println("Vektor erzeugt.");
        if (v.getX()!=2 || v.getY() != 1 || v.getZ()!=-4) {
            System.out.println("Koordinaten des Vektors kuennen nicht richtig abgefragt werden oder werden im Konstruktor nicht richtig gesetzt.");
        } else {
            System.out.println("get-Methode des Vektors funktioniert");
        }// end of if
        v.setX(4);
        v.setY(-2);
        v.setZ(3);
        if (v.getX()!=4 || v.getY() != -2 || v.getZ()!=3) {
            System.out.println("Koordinaten des Vektors werden mit set nicht richtig angepasst.");
        } else {
            System.out.println("set-Methode des Vektors funktioniert");
        }// end of if
        Vektor v2 = new Vektor(1,1,1);
        v.add(v2);
        if (v.getX()!=5 || v.getY() != -1 || v.getZ()!=4) {
            System.out.println("Methode add des Vektors arbeitet nicht korrekt.");
        } else {
            System.out.println("add-Methode des Vektors funktioniert");
        }// end of if

        Punkt p1 = new Punkt(0,2,-5);
        System.out.println("Punkt erzeugt.");
        if (p1.getX()!=0 || p1.getY() != 2 || p1.getZ()!=-5) {
            System.out.println("Koordinaten des Punktes kuennen nicht richtig abgefragt werden");
        } else {
            System.out.println("get-Methode des Punktes funktioniert");
        }// end of if
        p1.verschiebe(v);
        if (p1.getX()!=5 || p1.getY() != 1 || p1.getZ()!=-1) {
            System.out.println("verschieben Methode des Punktes arbeitet nicht korrekt.");
        } else {
            System.out.println("verschiebe-Methode des Punktes funktioniert");
        }// end of if

        Punkt p2 = new Punkt(10,4,10);
        Strecke st = new Strecke(p1,p2);
        System.out.println("Strecke erzeugt");
        if (st.getPunkt(1)!=p1 || st.getPunkt(2)!=p2) {
            System.out.println("Punkte werden nicht korrekt in der Strecke gespeichert oder falsch mit get ausgelesen (getPunkt(0) soll 1. Punkt liefern, getPunkt(1) den 2. Punkt)");
        } else {
            System.out.println("Konstruktor und get-Methode der Strecke arbeiten korrekt");
        }// end of if

        p1 = new Punkt(10,2,17);
        p2 = new Punkt(4,-4,-17);
        Gerade g = new Gerade(p1,p2);
        System.out.println("Gerade erzeugt");
        if (g.getStuetzpunkt() != p1) {
            System.out.println("Konstruktor oder getStuetzpunkt arbeiten nicht korrekt. (Erster uebergebener Punkt im Konstruktor soll Stuetzpunkt werden).");
        } else {
            System.out.println("Stuetzpunkt korrekt gespeichert und getStuetzpunkt funktioniert.");
        }// end of if
        v = g.getRichtungsvektor();
        if (v.getX()!=-6 || v.getY() != -6 || v.getZ()!=-34) {
            System.out.println("Richtungsvektor ist falsch. Entweder Konstruktor oder getRichtungsvektor arbeiten nicht korrekt (Richtungsvektor = p2 -p1).");
        } else {
            System.out.println("Richtungsvektor korrekt berechnet und getRichtungsvektor funktioniert");
        }// end of if
        Punkt sp = g.getSchnittpunktXYEbene();
        if (sp.getX()!=7 || sp.getY() != -1 || sp.getZ()!=0) {
            System.out.println("getSchnittpunktXYEbene arbeitet nicht korrekt, wenn es Schnittpunkt gibt.");
        } else {
            System.out.println("getSchnittpunktXYEbene funktioniert, wenn es Schnittpunkt gibt");
        }// end of if
        p1 = new Punkt(10,2,17);
        p2 = new Punkt(4,-4,17);
        g = new Gerade(p1,p2);
        sp = g.getSchnittpunktXYEbene();
        if (sp != null) {
            System.out.println("getSchnittpunktXYEbene arbeitet nicht korrekt, wenn es keinen Schnittpunkt gibt (Methode soll null zurueckliefern).");
        } else {
            System.out.println("getSchnittpunktXYEbene funktioniert, wenn es keinen Schnittpunkt gibt");
        }// end of if

    }
}
