1
0
Fork 0
freesewing/packages/examples/src/utils_splitcurve.js

31 lines
830 B
JavaScript
Raw Normal View History

2019-02-19 18:38:22 +01:00
export default part => {
2019-08-03 15:03:33 +02:00
let { Point, points, Path, paths, utils } = part.shorthand()
2019-02-19 18:38:22 +01:00
2019-08-03 15:03:33 +02:00
points.from = new Point(40, 10)
points.to = new Point(40, 80)
2019-02-19 18:38:22 +01:00
paths.line = new Path()
.move(points.from)
.line(points.to)
2019-08-03 15:03:33 +02:00
.attr('class', 'lining dashed')
2019-02-19 18:38:22 +01:00
2019-08-03 15:03:33 +02:00
points.start = new Point(10, 15)
points.cp1 = new Point(80, 10)
points.cp2 = new Point(-50, 80)
points.end = new Point(110, 70)
2019-02-19 18:38:22 +01:00
2019-08-03 15:03:33 +02:00
points.i40 = utils.curveIntersectsX(points.start, points.cp1, points.cp2, points.end, 40)
2019-02-19 18:38:22 +01:00
2019-08-03 15:03:33 +02:00
let parts = utils.splitCurve(points.start, points.cp1, points.cp2, points.end, points.i40)
2019-02-19 18:38:22 +01:00
2019-08-03 15:03:33 +02:00
let colors = ['lining', 'interfacing']
2019-02-19 18:38:22 +01:00
for (let p of parts) {
2019-08-03 15:03:33 +02:00
let color = colors.pop()
2019-02-19 18:38:22 +01:00
paths[color] = new Path()
.move(p.start)
.curve(p.cp1, p.cp2, p.end)
2019-08-03 15:03:33 +02:00
.attr('class', 'stroke-xl ' + color)
2019-02-19 18:38:22 +01:00
}
2019-08-03 15:03:33 +02:00
return part
}