2017-07-18 241 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。爱你的答案 –