1

给定两个 CGPoints,比如说 P1 和 P2,我想:

  • 找到连接它们的线
  • 沿着这条线找到所有 CGPoints

有什么建议么?


到目前为止,我得到了以下方法来得出各个点:

1)我首先从定义如下的直线方程开始:

y = m * x + b

2) 求 m:

m = (P2.y - P1.y) / (P2.x - P2.x)

然后,为了找到 b,我们将记住线的方程,我们可以将其应用于我们拥有的两个点(P1 和 P2)中的任何一个,所以:

b = y - m*x 

变成:

b = P1.y - m*P1.x (where we have both P1 and m)

这个方程有一个期望,当 P1 和 P2 是一个在另一个之上(P1.x == P2.x)时的情况。在这种情况下,成为 x 不变的方程,因此我们只有一个由点的 y 部分定义的变量。

[引用。在这里找到/得出此类答案的一个很好的交互式指南。]

4

1 回答 1

2

至少这是错误的:

m = (P2.y - P1.y) / (P2.x - P2.x)

它应该是

m = (P2.y - P1.y) / (P2.x - P1.x)

或更好

   denom = P2.x - P1.x;

   if (denom != 0) {
     m = (P2.y - P1.y) / denom;
   } else {
     //handle special case
     m = 0;
   }

从您的评论中,我看到您想对带有矩形边界框的线进行碰撞检测。所以我会搜索“线和矩形交叉点”。结果为您提供了交点:如果有,则该线已击中边界矩形。

于 2013-10-16T16:55:21.783 回答