2012-05-10 56 views
0

我有两点即时通讯画一条线(x1,y1x2,y2)之间的路径中的点,但我需要知道的x3,y3坐标是gapSize从点x2,y2了。关于如何解决这个问题的任何想法(该程序是用Objective-C编写的,如果这有帮助的话)?如何找到一条线

example

回答

5

您可以简单地计算为

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

然后你得到的坐标如下弧度的角度:

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

这是你的意思?

+0

完美,正是我所需要的! – Manuel

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

很抱歉的数学。我没有尝试编码,但它听起来是正确的。我希望这有帮助。

1

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

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

的点之间的距离是

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

沿着线点A单位矢量是由

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

给定一个新的点,从乙在于gapSize的距离,在该单位矢量的方向是

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