【发布时间】:2014-05-05 07:22:49
【问题描述】:
我需要弄清楚如何计算一个点在直线的哪一侧。我正在寻找一种非常快速且简单的碰撞算法,因为我只需要知道对象在哪一侧来定义碰撞状态。
就像:
if(x > line.x)
return EnumSide.LEFT;
但线必须是对角线。有什么想法吗?
【问题讨论】:
-
在有问题的 x 处评估函数并确定 y 值是大于还是小于函数的
我需要弄清楚如何计算一个点在直线的哪一侧。我正在寻找一种非常快速且简单的碰撞算法,因为我只需要知道对象在哪一侧来定义碰撞状态。
就像:
if(x > line.x)
return EnumSide.LEFT;
但线必须是对角线。有什么想法吗?
【问题讨论】:
给定一条从点 p0(x0, y0) 到 p1(x1, y1) 的有向线,可以使用以下条件判断点 p2(x2, y2) 是否在直线的左侧,在对,或者在同一行:
值 = (x1 - x0)(y2 - y0) - (x2 - x0)(y1 - y0)
如果值 > 0,则 p2 位于行的左侧。
如果 value = 0,则 p2 在同一行。
如果值
这里有一张图来解释这一切:
【讨论】: