gpt4 book ai didi

swift - 如何在 Core Graphics 中的任意两个点之间绘制一个完美的半圆?

转载 作者:行者123 更新时间:2023-11-28 11:58:44 24 4
gpt4 key购买 nike

我想画一个semicircle使用 Swift 在 Core Graphics 中任意两个 CGPoint 之间。 我想使用 Core Graphics 而不是层。我们需要一个标志来决定进入两个可能方向中的哪一个。

例如,给定 CGPoint(x: 8, y: 92)CGPoint(x: 28, y: 66),并且知道我们要绘制顺时针方向的半圆并且它是一个完美的半圆,我应该在 addArc 中插入什么来完成这个?

要点

我创建了一个 gist为此,基于 Rob Mayoff 在下面的回答。

最佳答案

调用给定的点 p0p1

您想调用 graphicsContext.addArc(center: center, radius: radius, startAngle: radians0, endAngle: radians1, clockwise: clockwise) 并让它绘制一个端点为 的半圆p0p1。让我们弄清楚参数应该是什么。

  • 要制作一个以p0p1 结束的半圆,center 必须是p0 之间的中点> 和 p1:CGPoint(x: 0.5 * (p0.x + p1.x), y: 0.5 * (p0.y + p1.y))

  • 要使圆弧在 p0p1 处结束,radius 必须是到 中心 的距离> 到 p0(或 p1),等于 p0p1 之间距离的一半: 0.5 * hypot(p1.x - p0.x, p1.y - p0.y)

  • radians0 必须是从 centerp0 的角度,等于从 p1 的角度到 p0(因为 centerp0p1 共线):atan2(p1.y - p0.y, p1.x - p0.x)

  • 要制作一个半圆,radians1 必须等于 radians0 + .pi

  • clockwise 是您的“决定进入两个可能方向中的哪一个的标志”。

关于swift - 如何在 Core Graphics 中的任意两个点之间绘制一个完美的半圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com