私はいくつかの異なる解決策を試しましたが、今のところ運がありません。
- (CGPoint)contractLineTemp:(CGPoint)point :(CGPoint)circle :(float)circleRadius {
CGFloat x,y;
x = point.x - circle.x;
y = point.y - circle.y;
CGFloat theta = atan2(x, y);
CGPoint newPoint;
newPoint.x = circle.x + circleRadius * sin(theta);
newPoint.y = circle.y + circleRadius * cos(theta);
return newPoint;
}
- (CGPoint)contractLineTemp:(CGPoint)startPoint :(CGPoint)endPoint :(float)scaleBy {
float dx = endPoint.x - startPoint.x;
float dy = endPoint.y - startPoint.y;
float scale = scaleBy * Q_rsqrt(dx * dx + dy * dy);
return CGPointMake (endPoint.x - dx * scale, endPoint.y - dy * scale);
}
これらのソリューションはどちらも一種の作業です。円の中心に線を引くと、円と正確に交差していることがわかります。
http://www.freeimagehosting.net/le5pi
上記の解決策のいずれかを使用して、角度に応じて円の円周に描画すると、円の中心に向かって移動しなくなります。2番目の画像では、線は円の右端の中央にあり、まっすぐ右に進んでいるはずです。
http://www.freeimagehosting.net/53ovs
http://www.freeimagehosting.net/sb3b2
リンクでごめんなさい。私は現在画像を投稿するのは初めてです。
助けてくれてありがとう。