CoreGraphics で弧を描く方法を理解しようとしています。次のシナリオでどのメソッド呼び出しを行うか、および角度を計算する方法を理解しています。
----------
| |
*--------*
ポイントが両方とも長方形の下部にある場合。しかし、2 つの点が別の場所にある場合、正しい角度を計算する方法がわかりません。
---------*
| |
*---------
私の画像の下部を参照してください。
Ray Wenderlich は、最初に述べたポイント位置のみの円弧の作成に関する優れたチュートリアルを提供しています。
// sample code for creating arc for path from bottom of rect
CGMutablePathRef createArcPathFromBottomOfRect(CGRect rect, CGFloat arcHeight) {
CGRect arcRect = CGRectMake(rect.origin.x, rect.origin.y + rect.size.height
- arcHeight, rect.size.width, arcHeight);
CGFloat arcRadius = (arcRect.size.height/2) + (pow(arcRect.size.width, 2) /
(8 * arcRect.size.height));
CGPoint arcCenter = CGPointMake(arcRect.origin.x + arc.size.width/2,
arcRect.origin.y + arcRadius);
CGFloat angle = acos(arcRect.size.width/ (2*arcRadius));
CGFloat startAngle = radians(180) + angle;
CGFloat endAngle = radians(360) - angle;
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, NULL, arcCenter.x, arcCenter.y, arcRadius, startAngle,
endAngle, 0);
return path;
}
画像の下部に示されているように、他の状況で角度を計算するにはどうすればよいですか?