gpt4 book ai didi

ios - 获取圆区域内的所有CGPoint

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:57 25 4
gpt4 key购买 nike

我有圆心和圆的半径,我只想得到圆的面积覆盖的所有CGPoint。基本上我需要通过这些 CGPoint 获取所有像素,我有一个通过 CGPoint 从 UIImage 获取像素的代码。当用户点击时,我通过 UITapGestureRecognizer 获取圆的中心点。我已经知道圆的半径了。

谁能告诉我如何从圆圈中获取所有 CGPoint 或像素。谢谢

例如下面圆的原点是CGPoint(x: 206, y: 105),圆的直径是50。

enter image description here

另一个例子我怎样才能得到这些所有的 CGPoints

enter image description here

最佳答案

首先,您可能会在距离中心的半径范围内得到 minX 和 minY。

其次,逐点检查并计算到中心的距离。

func distance(from: CGPoint, to: CGPoint) -> CGFloat {
return CGFloat(sqrt((from.x - to.x)*(from.x - to.x) + (from.y - to.y)*(from.y - to.y)))
}

func isInCircle(withCenter center: CGPoint, point: CGPoint, radius: CGFloat) -> Bool {
return distance(from: center, to: point) <= radius
}

func getPoints(withCenter center:CGPoint, radius: CGFloat) -> [CGPoint] {
let minX = Int(center.x - radius)
let minY = Int(center.y - radius)
let maxX = Int(center.x + radius)
let maxY = Int(center.y + radius)

var result = [CGPoint]()
for x in minX...maxX {
for y in minY...maxY {
let point = CGPoint(x: x, y: y)
if isInCircle(withCenter: center, point: point, radius: radius) {
result.append(point)
}
}
}

return result
}


let x = getPoints(withCenter: CGPoint.init(x: 206, y: 150), radius: 50)
print(x)

关于ios - 获取圆区域内的所有CGPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57762257/

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