问题:
如果在一个二维坐标系中,已知三角形三个点的坐标,那么对于坐标系中的任意一点,如何判断该点是否在三角形内(点在三角形边线上也认为在三角形内)。假设三角形的三个点的坐标为ABC(逆时针顺序),需要判断点D是否在该三角形内。
解法:
如果有一个点D在三角形ABC内,那么沿着三角形的边界逆时针走,点D一定保持在边界的左边,也就是说点D在边AB、BC、CA的左边。于是问题转化成如何去判断一个点P3是在射线P1P2的左边,这其实是个数学问题,通过判断P1P2和P1P3两个向量的叉积的正负来判断。
二维向量的叉积公式:
a(x1,y1),b(x2,y2),则a×b=(x1y2-x2y1)。