平面中判断一个点是否在三角形内部有很多方法,其中一个比较快的方法是:利用叉乘计算PA,PB,PC,是否同向。代码如下:
def Triangle(PointA,PointB,PointC,P): # PointA,PointB,PointC为三角形的三个顶点,P为待计算点
PExtend = np.tile(P,(PointA.shape[0],3)) # 扩展P为与A同等维度
PA = PointA - PExtend
PB = PointB - PExtend
PC = PointC - PExtend
T1 = np.cross(PA,PB)
T2 = np.cross(PB,PC)
T3 = np.cross(PC,PA)
return T1*T2>=0 and T1*T3>=0