C++ 判断点与线段关系:向量叉积方法
可以使用向量叉积来判断点与线的关系。设点为P,线段的两个端点为A和B,则有以下情况:
-
当P与A、B共线时,可判断P是否在线段AB上。判断方法为:先判断P是否在线段AB的延长线上,如果不是,则判断P是否在AB所在的直线上,如果是,则判断P是否在AB的投影线段上,即P是否在AB所在的直线段上,且P在AB的端点之间。
-
当P在AB的同侧时,可判断P与AB的关系。设AB向量为V1=(x1,y1),PA向量为V2=(x2,y2),则P与AB的关系为:V1×V2=|V1||V2|sinθ,其中θ为V1与V2之间的夹角。当θ为锐角时,sinθ>0,此时P在AB的左侧;当θ为钝角时,sinθ<0,此时P在AB的右侧。
-
当P在AB的异侧时,可判断P到AB的距离。设P到AB的距离为d,则有:d=|V1×V2|/|V1|,其中V1与V2同上。
原文地址: https://www.cveoy.top/t/topic/nyTg 著作权归作者所有。请勿转载和采集!