Рисование с помощью UIGraphicsGetCurrentContext


#1

Подскажите может кто делал подобное…
Есть массив точек, по точкам с помощью UIGraphicsGetCurrentContext рисую путь.
Также реализовано рисование касанием.
Вопрос можно ли как то сравнить что рисуемый путь пальцем равен нарисованному по точкам?
П.С. так же можно нарисовать с помощью UIBezierPath, но есть ли смысл
условно красная линия задана, рисую черной сверху
image

код ниже

class Canvas: UIView {
    // массив точек
    var lines: [[[Double]]]?
    
    private var newLines: [[CGPoint]] = [] 
    
    override func draw(_ rect: CGRect) {
        super.draw(rect)
        
        guard let context = UIGraphicsGetCurrentContext() else { return }

        context.setLineCap(.round)
        context.setLineWidth(30)
        context.setFillColor(UIColor.black.cgColor)
        
        // рисование по точках касания
        newLines.forEach { (line) in
            for (i, p) in line.enumerated() {
                if i == 0 {
                    context.move(to: p)
                } else {
                    context.addLine(to: p)
                }
            }
        }
        context.strokePath()
        
        // рисование по заданным точкам
        guard let lines = lines else { return }
        context.setStrokeColor(UIColor.black
        context.setLineWidth(10)
        lines.forEach { (line) in
            for (i, p) in line.enumerated() {
                if i == 0 {
                    let x = CGFloat(p.first!) * self.frame.width
                    let y = CGFloat(p.last!) * self.frame.height
                    let point = CGPoint(x: x, y: y)
                    context.move(to: point)
                } else {
                    let x = CGFloat(p.first!) * self.frame.width
                    let y = CGFloat(p.last!) * self.frame.height
                    let point = CGPoint(x: x, y: y)
                    context.addLine(to: point)
                }
            }
        }
        context.strokePath()
        
    }
    
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        newLines.append([CGPoint]())
    }
    
    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        //определение точек касания
        guard let point = touches.first?.location(in: self),
            var lastLine = newLines.popLast() else { return }
       
        lastLine.append(point)
        newLines.append(lastLine)
        setNeedsDisplay()
    }
    
}