Я пытаюсь создать фигурку в Swift из двух точек. Идея работает отлично, с прямой линией, потому что в настоящее время она не динамична. Моя проблема заключается в поиске динамических контрольных точек и центра в зависимости от местоположения точек p1 и p2.
Это мой текущий код:
override func viewDidLoad() {
super.viewDidLoad()
let path = UIBezierPath()
let p1 = CGPointMake(100, 100)
let p2 = CGPointMake(300, 100)
let c1 = CGPointMake(150, 80)
let c2 = CGPointMake(250, 80)
var midPoint = midPointForPoints(p1, p2: p2)
var midP1 = midPoint
midP1.x -= 10
var midP2 = midPoint
midP2.x += 10
midPoint.y -= 20
path.moveToPoint(p1)
path.addQuadCurveToPoint(midP1, controlPoint: c1)
path.addLineToPoint(midPoint)
path.addLineToPoint(midP2)
path.addQuadCurveToPoint(p2, controlPoint: c2)
let shape = CAShapeLayer()
shape.lineWidth = 5
shape.strokeColor = UIColor.redColor().CGColor
shape.fillColor = UIColor.clearColor().CGColor
shape.path = path.CGPath
self.view.layer.addSublayer(shape)
}
func midPointForPoints(p1: CGPoint, p2: CGPoint)->CGPoint{
let deltaX = (p1.x + p2.x)/2
let deltaY = (p1.y + p2.y)/2
let midPoint = CGPointMake(deltaX, deltaY)
return midPoint
}
Это не учитывает степени точек, поэтому, если бы я создал две точки:
let p1 = CGPointMake(100, 100)
let p2 = CGPointMake(300, 300)
Он не найдет правильные контрольные точки и среднюю точку.
Надеюсь, кто-то может помочь мне в правильном направлении. Идея, конечно же, заключается в том, чтобы просто узнать две точки (p1, p2) и динамически создавать все остальные точки, я просто набрал значения на данный момент, чтобы облегчить для себя. Я добавил изображения проблемы, чтобы лучше показать вам.