【问题标题】:Calculate on which side of a line a point is计算点在直线的哪一侧
【发布时间】:2014-05-05 07:22:49
【问题描述】:

我需要弄清楚如何计算一个点在直线的哪一侧。我正在寻找一种非常快速且简单的碰撞算法,因为我只需要知道对象在哪一侧来定义碰撞状态。

就像:

if(x > line.x)
    return EnumSide.LEFT;

但线必须是对角线。有什么想法吗?

【问题讨论】:

标签: java line collision


【解决方案1】:

给定一条从点 p0(x0, y0) 到 p1(x1, y1) 的有向线,可以使用以下条件判断点 p2(x2, y2) 是否在直线的左侧,在对,或者在同一行:

值 = (x1 - x0)(y2 - y0) - (x2 - x0)(y1 - y0)

如果值 > 0,则 p2 位于行的左侧。
如果 value = 0,则 p2 在同一行。
如果值

这里有一张图来解释这一切:

【讨论】:

  • 在此答案及其 cmets 中根据行列式和叉积给出了解释:stackoverflow.com/a/1560510/284529
  • 我认为你犯了一个错误。 (x2 - x0)(y1 - y0) 应该是 (y1 - y0)(y2 - y1)
  • @JohnDemetriou 我认为您的想法应该是 (y1 - y0)(x2 - x0) 这当然是他刚刚颠倒的内容。我怀疑它应该是(y1-y0)(y2-y1),x需要参与。
猜你喜欢
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
相关资源
最近更新 更多