Как я могу вычислить N точек на кривой Безье, имеющей 2 контрольные точки? У меня есть аналогичный способ получить N точек по дуге / окружности с помощью функции ниже. Есть ли аналогичный способ сделать это с кривой Безье? К сожалению, path.addArc()
и path.addCurve()
не возвращают достаточно очков, чтобы мои формы были гладкими в Spritekit
, поэтому получение большого количества точек и использование path.addLine()
между ними - достаточно хорошее решение.
func getCirclePoints(centerPoint: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool) -> [CGPoint] {
let n : CGFloat = clockwise ? -1 : 1
let points: [CGPoint] = stride(from: startAngle - n, through: endAngle + n, by: n).map {
let degreesToRadians = CGFloat($0) * .pi / 180
let x = centerPoint.x + radius * cos(degreesToRadians)
let y = centerPoint.y + radius * sin(degreesToRadians)
return CGPoint(x: x, y: y)
}
return points
}