判断P是否在三角形ABC内:
判定条件 : cross(BA,BP) 与 cross(BP,BC)同向,且 cross(BA,PA)与cross(PA,CA)同向
注意:向量求叉乘时,是按小于180的角算的
clc;clear;clf;
x1 = rand();
x2 = rand();
x3 = rand();
y1 = rand();
y2 = rand();
y3 = rand();
x = rand();
y = rand();
tx = [x1 x2 x3 x1];
ty = [y1 y2 y3 y1];
plot(tx,ty);
hold on;
plot(x,y,'ro');
A = [x1 y1 0];
B = [x2 y2 0];
C = [x3 y3 0];
P = [x y 0];
AB = A-B;
AP = A-P;
AC = A-C;
BA = B-A;
BP = B-P;
BC = B-C;
BABP = cross(BA,BP);
BPBC = cross(BP,BC);
ABAP = cross(AB,AP);
APAC = cross(AP,AC);
if BABP(3)*BPBC(3) > 0 && ABAP(3)*APAC(3) > 0
text(x,y,'内部');
else
text(x,y,'外部');
end