#include "vektor.H"
#include <iostream>
int main()
{
    vektor2_koordtype v1(3,12);
    vektor2_koordtype v2(-10,2);
    cout << "v1 "<<v1<<" v2 "<<v2<<" v1+v2 "<<v1+v2<<endl;
    vektor2_koordtype v3(-7,-2);
    vektor2_koordtype v4(5,-2);
    vektor2_poltype vpol(&v1);
    printf("\nV1: %f,%f  in Pol: %f,%f\n",v1.x,v1.y,vpol.betrag,vpol.dir);
    vpol.import(&v2);
    printf("V2: %f,%f  in Pol: %f,%f\n",v2.x,v2.y,vpol.betrag,vpol.dir);
    vpol.import(&v3);
    printf("V3: %f,%f  in Pol: %f,%f\n",v3.x,v3.y,vpol.betrag,vpol.dir);
    vpol.import(&v4);
    printf("V4: %f,%f  in Pol: %f,%f\n",v4.x,v4.y,vpol.betrag,vpol.dir);
    // Tested: O.K.

    vektor2_poltype vp1(2,0.5235);
    vektor2_poltype vp2(3.5,-1.39626);
    vp1.add(&vp2);
    printf("\nAdd: erg: %f,%f\n",vp1.betrag,vp1.dir);
    // Tested: O.K.

    v1.import(3,1);
    v1.rotate(2);
    printf("\nRotate: erg: %f,%f\n",v1.x,v1.y);
    // Tested: O.K.
    v1.import(3,1);
    vp1.import(&v1);
    v2.import(-1,3);
    vp2.import(&v2);
    v3.import(&v1);
    v3.add(&v2);
    printf("\nAdd: v1 + v2 = %f, %f",v3.x,v3.y);
    vektor2_poltype vp3(&v3);
    vektor2_poltype vp4(&vp1);
    vp4.add(&vp2);
    printf("\nAdd vp1 & vp2 = %f, %f = vp3: %f, %f\n",vp4.betrag,vp4.dir,vp3.betrag,vp3.dir);
    vp4.import(&vp3);
    vp4.sub(&vp2);
    printf("Sub vp3 - vp2 = %f, %f = vp1: %f, %f\n",vp4.betrag,vp4.dir,vp1.betrag,vp1.dir);
    // Tested: O.K.

    linie2_koordpunkt_koordpunkttype l1_kp_kp(2,1,1,3);
    linie2_koordpunkt_koorddirtype l1_kp_kd(&l1_kp_kp);
    linie2_polpunkt_poldirtype l1_pp_pd(&l1_kp_kp);
    printf("\nStartpunkt: %f,%f Endpunkt: %f,%f\n",l1_kp_kp.startp.x,l1_kp_kp.startp.y,l1_kp_kp.endp.x,l1_kp_kp.endp.y);
    printf("oder: %f,%f  %f,%f\n",l1_kp_kd.startp.x,l1_kp_kd.startp.y,l1_kp_kd.richtung.x,l1_kp_kd.richtung.y);
    printf("oder: %f,%f  %f,%f\n",l1_pp_pd.startp.betrag,l1_pp_pd.startp.dir,l1_pp_pd.richtung.betrag,l1_pp_pd.richtung.dir);
    vektor2_koordtype sp;
/*    printf("\nSchnitt mit sich selbst: %i\n",l1_pp_pd.schneide(&l1_pp_pd,&sp));
    printf("Schnittpunkt: %f, %f\n",sp.x,sp.y);*/

    vektor2_poltype startp(10,0);
    vektor2_poltype dir(2,0);
    l1_pp_pd.import(&startp,&dir);
    startp.import(7,0);
    linie2_polpunkt_poldirtype l2_pp_pd(&startp,&dir);
    printf("\nSchnitt l1 & l2 : %i\n",l1_pp_pd.schneide(l2_pp_pd,&sp));
    printf("Schnittpunkt: %f, %f\n",sp.x,sp.y);
    
    
    linie2_koordpunkt_koorddirtype la(&vektor2_koordtype(0.0,0.0),&vektor2_koordtype(4.0,2.0));
    linie2_koordpunkt_koorddirtype lb(&vektor2_koordtype(2,1),&vektor2_koordtype(float(-4.0),float(-2.0)));
    printf("\nSchnitt la(1,0)-(3,0) & lb(2,0)-(4,0) : %i\n",la.schneide(lb,&sp));
    printf("Schnittpunkt: %f, %f\n",sp.x,sp.y);
    return(0);
}





