Я пытаюсь создать изогнутую стрелку для отображения в сцене ab ARKit
, однако кривизна посоха стрелы просто отрисовывается как прямая линия с обеих сторон.
func createTurnArrow(_ direction: Direction) -> SCNShape {
let path = UIBezierPath()
path.move(to: CGPoint(x: 0.2, y: 0)) // A
path.addLine(to: CGPoint(x: 0, y: 0.2)) // B
path.addLine(to: CGPoint(x: 0, y: 0.1)) // C
path.addQuadCurve(to: CGPoint(x: -0.3, y: -0.3), controlPoint: CGPoint(x: -0.3, y: 0.1)) // Curve 1
path.addLine(to: CGPoint(x: -0.1, y: -0.3)) // D
path.addQuadCurve(to: CGPoint(x: 0, y: -0.1), controlPoint: CGPoint(x: -0.1, y: -0.1)) // Curve 2
path.addLine(to: CGPoint(x: 0, y: -0.2)) // E
path.close()
return direction == .left ?
SCNShape(path: path.reversing(), extrusionDepth: self.defaultDepth) :
SCNShape(path: path, extrusionDepth: self.defaultDepth)
}
Моя интуиция подсказывает мне, что создайте узел с помощью этой функции:
SCNNode(geometry: createTurnArrow(.right))
должен создать такую форму:
но вместо этого выводит это без каких-либо кривых в хвост стрелки:
Я пробовал кучу других математических заданий, чтобы получить текущие контрольные точки для квадратичных кривых, но ничего страшного. Есть идеи?
EDIT:
Где находится схема с нанесенными точками и мое предположение о том, как это должно быть отображено с помощью кривых.