//source: angle 2.0 //éditer par arnaud et vincent #include #include #include #include float angle () { float x,s; x=drand48()*2-1; return asin(x); } main() { int i; int face; int erreur=0; int fonction; float longueur=4; float largeur=1.5; float position, distance, moyenne, teta, x1, y1; FILE* dat=fopen("distance.dat","w"); FILE* log=fopen("log.dat","w"); srand48(time(NULL)); moyenne=0; for (i=0;i<=10000;i++) { position=drand48()*(2*longueur+2*largeur); teta=angle(); if (position0) { if ((y1+(tan(teta)*longueur))0) { distance=sqrt(longueur*longueur+tan(teta)*longueur*tan(teta)*longueur); fonction=3; } else { distance=sqrt(y1*y1+(y1/tan(teta))*(y1/tan(teta))); fonction=4; } } } if (position>largeur&&position<(largeur+longueur))//face 2 { x1=position-largeur; y1=largeur; if(teta>0) { if((x1+tan(teta)*largeur)0) { distance=sqrt(largeur*largeur+tan(teta)*largeur*tan(teta)*largeur); fonction=9; } else { distance=sqrt(x1*x1+(x1/tan(teta))*(x1/tan(teta))); fonction=10; } } } if (position>(largeur+longueur)&&position<(2*largeur+2*longueur))//face 3 { x1=longueur; y1=largeur-(position-(largeur+longueur)); if(teta>0) { if ((y1-tan(teta)*longueur)>0) { distance=sqrt(longueur*longueur+tan(teta)*longueur*tan(teta)*longueur); fonction=11; } else { distance=sqrt(y1*y1+(y1/tan(teta))*(y1/tan(teta))); fonction=12; } } else //teta<0 { teta=fabs(teta); if((y1+tan(teta)*longueur)(2*largeur+longueur))//face 4 { x1=longueur-((2*largeur+2*longueur)-position); y1=0; if(teta>0) { if((x1-tan(teta)*largeur)>0) { distance=sqrt(largeur*largeur+tan(teta)*largeur*tan(teta)*largeur); fonction=15; } else { distance=sqrt(x1*x1+(x1/tan(teta))*(x1/tan(teta))); fonction=16; } } else //teta<0 { teta=fabs(teta); if ((x1+tan(teta)*largeur)