Autant vous dire que je suis une cave en maths, mais là n'est pas le problème...

Je dois tester si un point est dans un triangle, et j'ai trouvé 2 méthodes, l'une appellée ' Same side ' et l'autre est barycentrique...

J'ai voulu essayé la première méthode... et bon il y a sûrement pleins de fautes grosses comme des camions que j'ai loupé... mais il me manque un concept sans lequel je suis completement bloqué.

Ci joint mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
        }
Mais vous allez me dire, c'est pas compliqué de trouver la formule de produit vectoriel, fais un effort mon gars... Seulement tout ce que je trouve est en dimension 3, et bon j'ai besoin de dimension 2...

J'avoue c'est une excuse un peu pipée, mais je suis entrain de craquer mentalement...

Merci d'avance...

PS : Je teste aussi si un point est dans un cercle mais ce n'est pas la priorité.