我有一个简单的问题,我想我走错了路
一些描述,我有这样的直觉
我想把它填成光滑的形状
但更平滑(见边框有逐步效果)
我为这个结果做了什么,我创建了所有顶点和所有底部点的点数组,并像这样平滑它
let path = CGMutablePath()
var prevPoint: CGPoint?
var isFirst = true
for point in points {
if let prevPoint = prevPoint {
let midPoint = CGPoint(
x: (point.x + prevPoint.x) / 2,
y: (point.y + prevPoint.y) / 2
)
if isFirst {
path.addLine(to: midPoint)
}
else {
path.addQuadCurve(to: midPoint, control: prevPoint)
}
isFirst = false
}
else {
path.move(to: point)
}
prevPoint = point
}
if let prevPoint = prevPoint {
path.addLine(to: prevPoint)
}
path.closeSubpath()
我最难把它画成有边的形式 像这样
红色是我当前算法所拥有的人工制品
mb 我需要在更多点之间进行一些插值,例如 Bézier 曲线,我确实尝试了 3 个点进行插值,但效果更好,但不是我想要的,或者 mb 联合算法(我为此看到了大型 C++ 库,但还没有尝试并认为对我来说很慢),如果你有一些关于这个的阅读信息,我将不胜感激