bezierpath-length icon indicating copy to clipboard operation
bezierpath-length copied to clipboard

The points doesn't seem equals

Open czwen opened this issue 7 years ago • 1 comments

let startPoint = CGPoint(x: 25, y: 100)
let width:CGFloat = SCREEN_WIDTH - 50
let preHeight:CGFloat = 150.0
let increment = 0

var lastPoint:CGPoint = CGPoint.zero

let count = 4

for index in 0...3 {
    var point:CGPoint = CGPoint.zero
    var point1:CGPoint = CGPoint.zero
    var point2:CGPoint = CGPoint.zero
    
    if index==0{
        point = startPoint
        bezierPath.move(to: startPoint)
    } else {
        point = CGPoint(x: startPoint.x+CGFloat(index%2)*width, y: CGFloat(index)*preHeight+startPoint.y)
        point2 = CGPoint(x: point.x, y: startPoint.y+CGFloat(index-1)*preHeight)

        if index == 1{
            point1 = lastPoint
        }else if index == count-1{
            point1 = CGPoint(x: startPoint.x+CGFloat(1-index%2)*width, y: point.y)
            point2 = CGPoint(x: startPoint.x+CGFloat(index%2)*width, y: point.y)
        }else{
            point1 = CGPoint(x: startPoint.x+CGFloat(1-index%2)*width, y: point.y)
        }
        
        bezierPath.addCurve(to: point, controlPoint1: point1, controlPoint2: point2)
    }
    lastPoint = point
}

color?.setStroke()
bezierPath.lineWidth = 3
context.saveGState()
context.setLineDash(phase: 0, lengths: [12, 6])
bezierPath.stroke()
context.restoreGState()


for index in 0...11 {
    let point = bezierPath.point(at: CGFloat(index)/CGFloat(11))
    print(point)
}

The points doesn't seem equals in my code. Thanks.

czwen avatar Nov 20 '17 11:11 czwen

http://7xsqni.com1.z0.glb.clouddn.com/2017-11-20-112122.png

czwen avatar Nov 20 '17 11:11 czwen