我正在尝试创建一条曲线箭头,在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))
应该生成类似于这样的形状: 但是,它没有将箭头的尾部呈现为任何曲线: 我尝试了许多其他的数学方法来获取二次曲线的当前控制点,但都没有成功。有任何想法吗?
编辑:哪里有带有绘制点的原理图和我对如何使用曲线进行渲染的假设?