2017-07-18 19 views
1

画像のように、円の上に線を描きたい(円の円弧を横切る)。円弧を垂直に交わる線をどのように描くことができますか(Core Graphics)?

私は基本的な考え方は、円が中央CGPointについて一定の半径を有していることである。このコードに円を描く

let center = CGPoint(x: bounds.width/2, y: bounds.height/2) 

let path = UIBezierPath(arcCenter: center, radius: radius, startAngle: Conversion.degreesToRadians(value: CGFloat(0)), endAngle: Conversion.degreesToRadians(value: CGFloat(360)), clockwise: true) 
path.lineWidth = 2 
path.lineCapStyle = CGLineCap.square 
UIColor.white.setStroke() 
path.stroke() 

enter image description here

+1

CoreGraphicsの操作方法は質問ですか? (通常、CoreGraphicsを使用するのではなく、代わりに「ストローク」に「UIBezierPath」を追加するか、「CAShapeLayer」を追加します)。あるいは、これらの線分の始点と終点をどのように把握するかの背後にある数学に疑問がありますか?サークルそのものを描く方法を知っていますか?それがそうであるように、この質問は広すぎると感じます。 – Rob

+0

円を描画するコードと、どこに行を配置するかを入力してください –

+0

これらの線分の開始点と終了点を特定する方法は? –

答えて

0

を使用しています。円上の点を把握するために、あなたはとてもようにx、y座標を計算することができる:

角度はラジアンで測定される
func point(center: CGPoint, radius: CGFloat, angle: CGFloat) -> CGPoint { 
    let x = center.x + radius * cos(angle) 
    let y = center.y + radius * sin(angle) 
    return CGPoint(x: x, y: y) 
} 

、3時から始まり、時計回りに行きます。

したがって、これらの垂直交差ストロークは、所定の角度で2つのCGPointの間の単なる線分です。線分の開始に使用される「半径」は、たとえば、円の半径よりわずかに小さいものです。線の終点については、同じ角度を使用しますが、円の半径よりも少し大きい半径値を使用してください。

+0

ありがとうございました。愛urの答え –

関連する問題