Bugfix for _teardrop_corner with ang != 45

This commit is contained in:
Revar Desmera
2025-05-03 23:22:48 -07:00
parent 5779b7b2b9
commit f9d8f87829

View File

@@ -2362,14 +2362,15 @@ function _teardrop_corner(r, corner, ang=45) =
assert(is_finite(r)) assert(is_finite(r))
assert(is_finite(ang)), assert(is_finite(ang)),
cp = circle_2tangents(abs(r), corner)[0], cp = circle_2tangents(abs(r), corner)[0],
pvec = rot(sign(r)*90,p=corner[0]-corner[1]),
path1 = arc(r=abs(r), corner=corner), path1 = arc(r=abs(r), corner=corner),
path2 = [ path2 = [
for (p = select(path1,0,-2)) for (p = select(path1,0,-2))
if (abs(modang(v_theta(p-cp)-90)) <= 180-ang) p, if (vector_angle(p-cp, pvec) > ang) p,
last(path1) last(path1)
], ],
path = [ path = [
line_intersection([corner[0],corner[1]],[path2[0],path2[0]+polar_to_xy(1,-90-ang*sign(r))]), line_intersection([corner[0],corner[1]],[path2[0],path2[0]+polar_to_xy(1,270-(90-ang)*sign(r))]),
each path2 each path2
] ]
) path; ) path;