有沒有簡單的方法來做到這一點。iOS - 如何讓CGPoint沿着一條指定的距離?
我有一個CGPoint
pointA(10,10)和另一個CGPoint
pointB(15,8)。我需要得到一個CGPoint
這是在連接A和B,並在A點之前的特定距離(說2)相同的線路上。
我試圖尋找任何基於結構的矢量。有一種叫CGVector
的東西,但在這裏似乎很沒用。
有沒有簡單的方法來做到這一點。iOS - 如何讓CGPoint沿着一條指定的距離?
我有一個CGPoint
pointA(10,10)和另一個CGPoint
pointB(15,8)。我需要得到一個CGPoint
這是在連接A和B,並在A點之前的特定距離(說2)相同的線路上。
我試圖尋找任何基於結構的矢量。有一種叫CGVector
的東西,但在這裏似乎很沒用。
它可以這樣做:
假設:線的方向是從頭部:(點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;
}
@Sneak,我重新檢查了它並解決了一個問題。我相信現在應該可以正常工作 – KrishnaCA
非常接近。上面的代碼片段中唯一的假設是它的上升線。但我可以指出這一點。會回來,並將其標記爲答案,除非有更好的建議。 – OutOnAWeekend
@AnandKumar,我相信編輯的答案滿足所有條件 – KrishnaCA
這個問題我覺得是simliar這樣:HTTP: //stackoverflow.com/questions/2969181/moving-cgpoint-a-certain-distance-along-a-certain-heading-iphone,並應該幫助你解決你的問題。 – 2017-02-16 13:38:51
@Sneak,我相信這與此類似,並且您發佈的問題是http://math.stackexchange.com/questions/175896/finding-a-point-along-a-line-a-certain-distance-away - 從另一點 – KrishnaCA
@KrishnaCA是的,我也看到了,也很好地鏈接它也gj。 – 2017-02-16 13:44:16