これを行う簡単な方法はありますか?iOS - 行に沿って指定された距離でCGPointを取得するにはどうすればよいですか?
私はCGPoint
ポイントA(10,10)と別のCGPoint
ポイントB(15,8)を持っています。私はCGPoint
を得る必要があります。これは、AとBを結ぶ線と同じ線上にあり、点Aの前に特定の距離(例えば2)であります。
ベクトルベースの構造体を探しました。 CGVector
と呼ばれるものがありますが、ここではかなり役に立たないようです。
これを行う簡単な方法はありますか?iOS - 行に沿って指定された距離でCGPointを取得するにはどうすればよいですか?
私はCGPoint
ポイントA(10,10)と別のCGPoint
ポイントB(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;
}
@スニーク、再チェックして問題を解決しました。今はうまくいくはずだと私は信じている。 – KrishnaCA
かなり近い。上のコードスニペットの唯一の仮定は、その昇順の行です。しかし、私はその部分を理解することができます。何か良いことが示唆されない限り、これを答えとしてマークします。 – OutOnAWeekend
@AnandKumar、私は編集された答えがすべての条件を満たすと信じています – KrishnaCA
私が思うこの質問はこれにsimliar次のとおりです。http: //stackoverflow.com/questions/2969181/moving-cgpoint-a-certain-distance-along-a-heading-iphoneあなたの問題を解決するのに役立ちます。 –
@スニーク、これはこれと似ていると思います。投稿した質問http://math.stackexchange.com/questions/175896/finding-a-point-along-a-line-a-certain-distance-away -from-another-point – KrishnaCA
@KrishnaCAああ、私もそれを見ました。 –