UIBezierPath 和曲线指向但只有一个 CGPoint 而不是两个
UIBezierPath and curve to point but only with one CGPoint instead of two
这是我的代码:
private func bezierPathForSmile(fractionOfMaxSmile : Double) -> UIBezierPath
{
let mouthWidth = faceRadius / Scaling.FaceRadiusToMouthWidthRatio
let mouthHeight = faceRadius / Scaling.FaceRadiusToMouthHeightRatio
let mouthVerticalOffset = faceRadius / Scaling.FaceRadiusToMouthOffsetRatio
let smileHeight = CGFloat(max(min(fractionOfMaxSmile, 1), -1)) * mouthHeight //an einai pio megalo tou 1 krata to 1 an einai pio megalo apo -1 krata to pio megalo
let start = CGPoint(x: faceCenter.x - mouthWidth / 2, y: faceCenter.y + mouthVerticalOffset)
let end = CGPoint(x: start.x + mouthWidth, y: start.y)
let cp1 = CGPoint(x: start.x + mouthWidth / 3, y: start.y + smileHeight)
let cp2 = CGPoint(x: end.x - mouthWidth / 3, y: cp1.y)
let path = UIBezierPath()
path.moveToPoint(start)
path.addCurveToPoint(end, controlPoint1: cp1, controlPoint2: cp2)
path.lineWidth = lineWidth
return path
}
我想问一下是否有一种方法可以通过仅指定 (start.x + end.x) /2 及其 y 轴与 start.y 或 end.y 的偏差,而不是使用:
path.addCurveToPoint(end, controlPoint1: cp1, controlPoint2: cp2)
有两个控制点。换句话说,我想通过仅指定中心的 GCPoint 来实现上述确切的事情。(start + end)/2
谢谢。
addCurveToPoint
使用两个控制点,而addQuadCurveToPoint
只使用一个控制点。
这是我的代码:
private func bezierPathForSmile(fractionOfMaxSmile : Double) -> UIBezierPath
{
let mouthWidth = faceRadius / Scaling.FaceRadiusToMouthWidthRatio
let mouthHeight = faceRadius / Scaling.FaceRadiusToMouthHeightRatio
let mouthVerticalOffset = faceRadius / Scaling.FaceRadiusToMouthOffsetRatio
let smileHeight = CGFloat(max(min(fractionOfMaxSmile, 1), -1)) * mouthHeight //an einai pio megalo tou 1 krata to 1 an einai pio megalo apo -1 krata to pio megalo
let start = CGPoint(x: faceCenter.x - mouthWidth / 2, y: faceCenter.y + mouthVerticalOffset)
let end = CGPoint(x: start.x + mouthWidth, y: start.y)
let cp1 = CGPoint(x: start.x + mouthWidth / 3, y: start.y + smileHeight)
let cp2 = CGPoint(x: end.x - mouthWidth / 3, y: cp1.y)
let path = UIBezierPath()
path.moveToPoint(start)
path.addCurveToPoint(end, controlPoint1: cp1, controlPoint2: cp2)
path.lineWidth = lineWidth
return path
}
我想问一下是否有一种方法可以通过仅指定 (start.x + end.x) /2 及其 y 轴与 start.y 或 end.y 的偏差,而不是使用:
path.addCurveToPoint(end, controlPoint1: cp1, controlPoint2: cp2)
有两个控制点。换句话说,我想通过仅指定中心的 GCPoint 来实现上述确切的事情。(start + end)/2 谢谢。
addCurveToPoint
使用两个控制点,而addQuadCurveToPoint
只使用一个控制点。