考虑到两个CGPoints,让我们说P1和P2,我想:
有什么建议吗?
就目前而言,我有以下方法来推导出各点:
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部分定义的变量。
[相关链接。查找/推导此类答案的良好互动指南是here。]
答案 0 :(得分: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;
}
从您的评论中我发现您想要使用rectangualr boundin框对线进行碰撞检测。 所以我会搜索“线和矩形交叉点”。结果给出了交点:如果有交点,则该线已经到达了边界矩形。