检查线段是否与特定点的垂直线相交?

时间:2010-08-18 03:14:29

标签: algorithm vector geometry

如此图所示:

alt text

我有一组线段。我想检查哪些线段与从给定点(x0,y0)绘制的垂直线相交。

(例如:AB通过检查,BC没有。)

我得到的唯一信息是线段的两个点,(x1,y1),(x2,y2)和目标点(x0,y0)。

是否可以使用这三点推导出一个简单的公式?

提前致谢。

umanga

2 个答案:

答案 0 :(得分:4)

作为背景,如果您需要,可以阅读dot productgeometric interpretation,特别是scalar projection

定义向量 v0 =(x0,y0) - (x1,y1)和 v2 =(x2,y2) - (x1,y1)。

然后交点是

(x1,y1)+(( v0 v2 )/( v2 v2 ))的 V2

如果标量值( v0 v2 )/( v2 v2,则交点将位于线段上)介于0和1之间。

答案 1 :(得分:1)

对于AB线和X线,两个角度ABX和BAX必须是锐角(或右侧)。