如何在一条线的路径中找到一个点

时间:2012-05-10 12:53:10

标签: objective-c ios math

我有两点之间我画一条线(x1,y1x2,y2),但我需要知道距离x3,y3 gapSize的坐标点x2,y2。关于如何解决这个问题的任何想法(该程序是用Objective-c编写的,如果它有用的话)?

example

3 个答案:

答案 0 :(得分:6)

您可以简单地以弧度计算角度

double rads = atan2(y2 - y1, x2 - x1);

然后你得到如下坐标:

double x3 = x2 + gapSize * cos(rads);
double y3 = y2 + gapSize * sin(rads);

这是你的意思吗?

答案 1 :(得分:1)

计算P1和P2之间的距离:d=sqrt( (y2-y1)^2 + (x2-x1)^2)

然后x2 = (d*x1 + gapSize*x3) / (d+gapSize)

所以x3 = (x2 * (d+gapSize) - d*x1) / gapSize

同样,y3 = (y2 * (d+gapSize) - d*y1) / gapSize

抱歉数学。我没有尝试编码,但听起来不错。我希望这会有所帮助。

答案 2 :(得分:1)

有很多方法可以做到这一点。最简单的(对我而言)如下。我会用数学来写它,因为我甚至不能拼写C。

因此,我们希望找到点C = {x3,y3},给定点A = {x1,y1}和B = {x2,y2}。

点之间的距离是

d = ||B-A|| = sqrt((x2-x1)^2 + (y2-y1)^2)

沿线指向的单位矢量由

给出
V = (B - A)/d = {(x2 - x1)/d, (y2-y1)/d}

在该单位向量的方向上距离B的距离为gapSize的新点是

C = B + V*gapSize = {x2 + gapSize*(x2 - x1)/d, y2 + gapSize*(y2 - y1)/d}