我想使用Swift在Core Graphics中的任意两个任意CGPoint
之间绘制semicircle。 我想使用Core Graphics和不图层。我们需要一个标记来决定进入哪两个可能的方向。
例如,给定CGPoint(x: 8, y: 92)
和CGPoint(x: 28, y: 66)
,并知道我们想要顺时针方向绘制半圆并且它是一个完美的半圆,我应该插入{{1}完成这个?
我根据Rob Mayoff的回答为此创建了一个gist。
答案 0 :(得分:2)
拨打您的指定点p0
和p1
。
您想要调用graphicsContext.addArc(center: center, radius: radius, startAngle: radians0, endAngle: radians1, clockwise: clockwise)
并让它绘制一个端点为p0
和p1
的半圆。让我们弄清楚论据应该是什么。
要制作以p0
和p1
结尾的半圆,center
必须是p0
和p1
之间的中点:{{1} }。
要使弧线在CGPoint(x: 0.5 * (p0.x + p1.x), y: 0.5 * (p0.y + p1.y))
和p0
结束,p1
必须是从radius
到center
的距离(或{{1} }}),等于p0
和p1
之间距离的一半:p0
。
p1
必须是从0.5 * hypot(p1.x - p0.x, p1.y - p0.y)
到radians0
的角度,它等于从center
到p0
的角度(因为p1
},p0
和center
是共线的):p0
。
要制作半圆,p1
必须等于atan2(p1.y - p0.y, p1.x - p0.x)
。
radians1
是您“决定进入哪两个可能方向的标志”。