iOS - 如何在一条线上的指定距离处获取CGPoint?

时间:2017-02-16 13:20:54

标签: ios core-graphics cgpoint

有一种简单的方法可以做到这一点。

我有一个CGPoint点A(10,10)和另一个CGPoint点B(15,8)。我需要得到一个CGPoint,它与连接A和B的线路相同,并且在A点之前的某个距离(比如2)。

我试着寻找任何基于矢量的结构。有一种叫做CGVector的东西,但这里似乎没用。

1 个答案:

答案 0 :(得分:1)

可以这样做:

假设:线的方向来自头部:( point2)tail:(point1)

- (CGPoint)getPointFromLineConnecting:(CGPoint)point1 andPoint2:(CGPoint)point2 withDistanceFromPoint1:(CGFloat)dist {

    // distance between connecting points
    CGFloat distance = sqrtf(powf(point1.x-point2.x, 2) + powf(point1.y-point2.y, 2)); 

    // unit vector point: v = (x1-x0)i/distance + (y1-y0)j/distance
    CGPoint unitVectorPoint = CGPointMake((point2.x - point1.x)/distance, (point2.y - point1.y)/distance); 

    // resultant point at a distance d from p1 
    CGPoint resultPoint = CGPointMake((point1.x+dist*unitVectorPoint.x), (point1.y+dist*unitVectorPoint.y));

    return resultPoint;
}