2017-02-16 29 views
1

有沒有簡單的方法來做到這一點。iOS - 如何讓CGPoint沿着一條指定的距離?

我有一個CGPoint pointA(10,10)和另一個CGPoint pointB(15,8)。我需要得到一個CGPoint這是在連接A和B,並在A點之前的特定距離(說2)相同的線路上。

我試圖尋找任何基於結構的矢量。有一種叫CGVector的東西,但在這裏似乎很沒用。

+1

這個問題我覺得是simliar這樣:HTTP: //stackoverflow.com/questions/2969181/moving-cgpoint-a-certain-distance-along-a-certain-heading-iphone,並應該幫助你解決你的問題。 – 2017-02-16 13:38:51

+2

@Sneak,我相信這與此類似,並且您發佈的問題是http://math.stackexchange.com/questions/175896/finding-a-point-along-a-line-a-certain-distance-away - 從另一點 – KrishnaCA

+0

@KrishnaCA是的,我也看到了,也很好地鏈接它也gj。 – 2017-02-16 13:44:16

回答

1

它可以這樣做:

假設:線的方向是從頭部:(點2)尾:(點1)

- (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; 
} 
+1

@Sneak,我重新檢查了它並解決了一個問題。我相信現在應該可以正常工作 – KrishnaCA

+0

非常接近。上面的代碼片段中唯一的假設是它的上升線。但我可以指出這一點。會回來,並將其標記爲答案,除非有更好的建議。 – OutOnAWeekend

+0

@AnandKumar,我相信編輯的答案滿足所有條件 – KrishnaCA

相關問題