2017-07-18 240 views
1

我想在圓上畫一條直線(截取圓的圓弧),就像在圖片中一樣。如何繪製垂直於圓弧的直線(Core Graphics)?

我使用這個代碼來繪製圓

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

的基本思想是,一個圓有大約中心CGPoint一定的半徑。爲了弄清楚圓上的一個點,就可以計算出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點鐘和順時針去。

因此,那些垂直相交筆劃只是在給定角度處的兩個CGPoint之間的線段,其中用於線段起點的「半徑」可能是例如剛好小於圓的半徑的東西。對於線的結束點,請使用相同的角度,但使用剛好大於圓的半徑的半徑值。

+0

謝謝Rob。愛你的答案 –