1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct Coordonnes {
int x;//abcisses
int y;//ordonnees
};
typedef enum {
FALSE,
TRUE
} boolean;
typedef struct Coordonnes Coord;
Coord Point, centre,A,B,P,cp1,cp2;
/*calcule la distance du point par rapport au centre du cercle */
int distanceOCentre(Coord centre, Coord point){
double distance = sqrt((point.x - centre.x)*(point.x - centre.x) + (point.y - centre.y));
return distance;
}
boolean isDansCercle(int point, int rayon){//Test si un point est dans un cercle
point = distanceOCentre(centre, Point);
if (point > rayon)
return FALSE;
}
double produitScalaire(Coord A, Coord B){
double produitS = ((A.x*B.x+A.y*B.y));
return produitS;
}
//Tres surement faux car concept erroné...
Coord produitVectoriel(Coord B,Coord A),(Coord P,Coord A)){
Coord produitV = ( ((A.x)*(B.y)) - ((A.y)*(B.x)), ((P.x*A.y)) - ((P.y*A.x)));
return produitV;
}
//Technique SAME SIDE
boolean sameSide(Coord P1, Coord P2, Coord A, Coord B){
cp1 = produitVectoriel(B-A, P1-A)
cp2 = produitVectoriel(B-A, P2 -A)
if (produitScalaire(cp1, cp2) >= 0){
return TRUE;
}
else {
return FALSE;
}
}
int PointInTriangle(Coord P, Coord A,Coord B,Coord C){
if ( SameSide(P,A B,C) and SameSide(P,B,A,C)
and SameSide(P,C,A,B) ) {
return true;
} else {
return false;
} |
Partager