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
| L=list([5 0], [7 1],[7 3],[5 5],[3 2], [5 0]) ; // définit chaque point du poly
point_x = [];
point_y = [];
// Tracé polygone et point M
for point=L,
point_x = [point_x point(1)];
point_y = [point_y point(2)];
end
temp = point;
M = [3.5 1]; // point à tester
plot2d(M(1), M(2), -2, rect=[0,0,8,8]);
plot2d(point_x, point_y, 1, rect=[0,0,8,8]);
// Test d'inclusion
cote = []; // stocke le vecteur côté pour le test
for sommet=L,
cote = sommet-temp;// Vecteur côté
n_cote = [cote(2) -cote(1)]; // Vecteur normal au côté, non normalisé
SM = M-sommet; // vecteur reliant le sommet au point considéré
ps_M = sum(SM.*n_cote); // produit scalaire
if ps_M > 0 // si le produit scalaire change de signe (suivant convention), le point est extérieur
disp("M est un point extérieur");
end
end |
Partager