题目
来源于Mathwork上的Cody,Problem 558 - Is the Point in a Triangle?
Check whether a point or multiple points is/are in a triangle with three corners
Points = [x, y];
Triangle = [x1, y1; x2, y2; x3, y3]
Return true or false for each point tested.
For example,
input: Points = [0, 0.5]; Triangle = [0, 0; 1, 0; 1, 1]
output: y = 0;
代码
function y = your_fcn_name(Points, Triangle)
y=[];
for i=1:size(Points,1)
P=Points(i,:);
A=Triangle(1,:);B=Triangle(2,:);C=Triangle(3,:);
%使用同向法判断
y=[y,(cross_2(P-A,B-A)*cross_2(C-A,B-A)>0) & (cross_2(P-B,C-B)*cross_2(A-B,C-B)>0) & (cross_2(P-C,A-C)*cross_2(B-C,A-C)>0)];
end
% 二维向量的叉积
function y=cross_2(x1,x2)
y=x1(1)*x2(2)-x2(1)*x1(2);
end
end
测试