@@ -634,7 +634,7 @@ function path_to_bezpath(path, closed, tangents, uniform=false, size, relsize) =
634
634
second + L* tangent2
635
635
],
636
636
select(path,lastpt)
637
- ];
637
+ ];
638
638
639
639
640
640
@@ -666,30 +666,31 @@ function path_to_bezpath(path, closed, tangents, uniform=false, size, relsize) =
666
666
function path_to_bezcornerpath(path, closed, size, relsize) =
667
667
is_1region(path) ? path_to_bezcornerpath(path[0 ], default(closed,true ), tangents, size, relsize) :
668
668
let(closed= default(closed,false ))
669
- assert(is_bool(closed))
670
- assert(num_defined([size,relsize])<= 1 , "Can't define both size and relsize" )
671
- assert(is_path(path,[2 ,3 ]),"Input path is not a valid 2d or 3d path" )
672
- let(
673
- curvesize = first_defined([size,relsize,0.5 ]),
674
- relative = is_undef(size),
675
- pathlen = len(path)
669
+ assert(is_bool(closed))
670
+ assert(num_defined([size,relsize])<= 1 , "Can't define both size and relsize" )
671
+ assert(is_path(path,[2 ,3 ]),"Input path is not a valid 2d or 3d path" )
672
+ let(
673
+ curvesize = first_defined([size,relsize,0.5 ]),
674
+ relative = is_undef(size),
675
+ pathlen = len(path)
676
+ )
677
+ assert(is_num(curvesize) || len(curvesize)== pathlen, str ("Size or relsize must have length " ,pathlen))
678
+ let(sizevect = is_num(curvesize) ? repeat(curvesize, pathlen) : curvesize)
679
+ assert(min (sizevect)> 0 , "Size or relsize must be greater than zero" )
680
+ let(
681
+ roundpath = closed ? [
682
+ for (i= [0 :pathlen- 1 ]) let(p3= select(path,[i- 1 :i+ 1 ]))
683
+ _bez_path_corner([0.5 * (p3[0 ]+ p3[1 ]), p3[1 ], 0.5 * (p3[1 ]+ p3[2 ])], sizevect[i], relative),
684
+ [0.5 * (path[0 ]+ path[pathlen- 1 ])]
685
+ ]
686
+ : [ for (i= [1 :pathlen- 2 ]) let(p3= select(path,[i- 1 :i+ 1 ]))
687
+ _bez_path_corner(
688
+ [i> 1 ?0.5 * (p3[0 ]+ p3[1 ]):p3[0 ], p3[1 ], i< pathlen- 2 ?0.5 * (p3[1 ]+ p3[2 ]):p3[2 ]],
689
+ sizevect[i], relative),
690
+ [path[pathlen- 1 ]]
691
+ ]
676
692
)
677
- assert(is_num(curvesize) || len(curvesize)== pathlen, str ("Size or relsize must have length " ,pathlen))
678
- let(sizevect = is_num(curvesize) ? repeat(curvesize, pathlen) : curvesize)
679
- assert(min (sizevect)> 0 , "Size or relsize must be greater than zero" )
680
- let(
681
- roundpath = closed ? [
682
- for (i= [0 :pathlen- 1 ]) let(p3= select(path,[i- 1 :i+ 1 ]))
683
- _bez_path_corner([0.5 * (p3[0 ]+ p3[1 ]), p3[1 ], 0.5 * (p3[1 ]+ p3[2 ])], sizevect[i], relative),
684
- [0.5 * (path[0 ]+ path[pathlen- 1 ])]
685
- ]
686
- : [ for (i= [1 :pathlen- 2 ]) let(p3= select(path,[i- 1 :i+ 1 ]))
687
- _bez_path_corner(
688
- [i> 1 ?0.5 * (p3[0 ]+ p3[1 ]):p3[0 ], p3[1 ], i< pathlen- 2 ?0.5 * (p3[1 ]+ p3[2 ]):p3[2 ]],
689
- sizevect[i], relative),
690
- [path[pathlen- 1 ]]
691
- ]
692
- ) flatten(roundpath);
693
+ flatten(roundpath);
693
694
694
695
695
696
// / Internal function: _bez_path_corner()
743
744
// bz6 is p3
744
745
bz3 = p2 + middir * bzdist, // center control point
745
746
bz2 = bz3 + midto12unit* (d1< d3 ? cornerlegmin : cornerlegmax),
746
- bz1 = p1 - (d1<= d3 ? leglenmin :
747
- leglenmax)* p21unit,
748
- // norm(0.333*(bz2-p1)))*p21unit,
747
+ bz1 = p1 - (d1<= d3 ? leglenmin : leglenmax)* p21unit,
749
748
bz4 = bz3 - midto12unit* (d3< d1 ? cornerlegmin : cornerlegmax),
750
749
bz5 = p3 - (d3<= d1 ? leglenmin : leglenmax)* p23unit
751
750
) [p1, bz1, bz2, bz3, bz4, bz5]; // do not include last control point
0 commit comments