On 4/21/2020 1:29 PM, Gerben Wierda wrote:
I have these two paths, but cutting doesn’t work because the path to be cut takes the wrong intersection regardless of how I direct the path to be cut after (reverse or not).
The path to cut after is a triangle with the base horizontal and the path to cut is a vertical line. The top of the triangle is the endpoint of the line and is selected as intersection by cutafter. This happens also if I reverse the triangle path, strangely enough. I have an alternative cutting algorithm, but that cuts as long as the length of cuttings is not 0, which is the case at the top too, so it won’t cut further.
I need a reliable algorithm to make a ‘maximum cutafter’. What might be a good approach?
G
path arrowHead; arrowHead := (542,-77.000186920166016)..controls (545.33333333333337,-77.000186920166016) and (548.66666666666663,-77.000186920166016) ..(552,-77.000186920166016)..controls (550.33333333333337,-73.666853586832687) and (548.66666666666663,-70.333520253499344) ..(547,-67.000186920166016)..controls (545.33333333333337,-70.333520253499344) and (543.66666666666663,-73.666853586832687) ..cycle;
path connection; connection := (420.00004959106445,-367)..controls (420.66670256708773,-367) and (421.333355543111,-367) ..(422.00000851913427,-367)..controls (425.33333917170194,-367) and (428.6666698242696,-367) ..(432.00000047683727,-367)..controls (442.00000015894574,-367) and (451.99999984105426,-367) ..(461.99999952316273,-367)..controls (464.76142345324098,-367) and (467,-364.76142382108867) ..(467,-361.99999997656772)..controls (467,-293.99999999218926) and (467,-226.00000000781074) ..(467,-158.00000002343228)..controls (467,-155.23857623850762) and (469.23857634039018,-153) ..(472.00000014901161,-153)..controls (495.33333338300389,-153) and (518.66666661699617,-153) ..(541.99999985098839,-153)..controls (544.76142368504975,-153) and (547,-150.76142367339932) ..(547,-147.99999983662815)..controls (547,-125.99999994554271) and (547,-104.00000005445727) ..(547,-82.000000163371837)..controls (547,-78.666668047283764) and (547,-75.333335931195691) ..(547,-72.000003815107618)..controls (547,-70.333398183460417) and (547,-68.666792551813217) ..(547,-67.000186920166016);
show connection cutafter arrowHead; show connection cutafter (reverse arrowHead);
\startMPpage[instance=doublefun] path arrowHead; arrowHead := (542,-77.000186920166016)..controls (545.33333333333337,-77.000186920166016) and (548.66666666666663,-77.000186920166016) ..(552,-77.000186920166016)..controls (550.33333333333337,-73.666853586832687) and (548.66666666666663,-70.333520253499344) ..(547,-67.000186920166016)..controls (545.33333333333337,-70.333520253499344) and (543.66666666666663,-73.666853586832687) ..cycle; path connection; connection := (420.00004959106445,-367)..controls (420.66670256708773,-367) and (421.333355543111,-367) ..(422.00000851913427,-367)..controls (425.33333917170194,-367) and (428.6666698242696,-367) ..(432.00000047683727,-367)..controls (442.00000015894574,-367) and (451.99999984105426,-367) ..(461.99999952316273,-367)..controls (464.76142345324098,-367) and (467,-364.76142382108867) ..(467,-361.99999997656772)..controls (467,-293.99999999218926) and (467,-226.00000000781074) ..(467,-158.00000002343228)..controls (467,-155.23857623850762) and (469.23857634039018,-153) ..(472.00000014901161,-153)..controls (495.33333338300389,-153) and (518.66666661699617,-153) ..(541.99999985098839,-153)..controls (544.76142368504975,-153) and (547,-150.76142367339932) ..(547,-147.99999983662815)..controls (547,-125.99999994554271) and (547,-104.00000005445727) ..(547,-82.000000163371837)..controls (547,-78.666668047283764) and (547,-75.333335931195691) ..(547,-72.000003815107618)..controls (547,-70.333398183460417) and (547,-68.666792551813217) ..(547,-67.000186920166016); pair a ; a := arrowHead intersection_point connection ; draw connection cutafter arrowHead withcolor red withpen pencircle scaled 2mm ; draw connection cutafter (reverse arrowHead) withcolor green withpen pencircle scaled 1mm ; draw arrowHead; draw a withcolor blue withpen pencircle scaled 3mm ; currentpicture := currentpicture shifted (-bbwidth(currentpicture), 0) ; draw connection cutafter a ; draw arrowHead; \stopMPpage ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------