On Wed, 9 Dec 2020, Otared Kavian wrote:
Hi Aditya,
Thanks for the alternative method, which comes handy if one wishes to extend the straight line by a different amount at either end:
\starttext \startMPcode z1 = (1cm,3cm) ; z2 = (5cm, 9cm) ; z3 = 1cm * dir(angle (z2 - z1)) shifted z2 ; z4 = -.5cm*dir(angle(z2 - z1)) shifted z1 ; draw z1 -- z3 ; draw z4 -- z1 ; draw z1 -- z2 withcolor red ; \stopMPcode \stoptext
Or just redefine shortened to accept a pair! \startMPdefinitions primarydef p shortened d = reverse ( ( reverse (p enlonged -xpart paired(d)) ) enlonged -ypart paired(d) ) enddef ; \stopMPdefinitions \starttext \startMPpage z1 = (1cm,3cm) ; z2 = (5cm, 9cm) ; draw (z1--z2) shortened (-1cm,-2cm) withcolor blue ; draw (z1--z2) withcolor red ; \stopMPpage \stoptext Now that if you really want to shorten a path, then cutends works better than shortened \startMPdefinitions primarydef p shortened d = reverse ( ( reverse (p enlonged -xpart paired(d)) ) enlonged -ypart paired(d) ) enddef ; \stopMPdefinitions \starttext \startMPpage z1 = (1cm,3cm) ; z2 = (5cm, 9cm) ; path p, q; p := z1 {up} .. {right} z2; q := p shifted (6cm, 0); draw p withcolor red ; draw p shortened (1cm,2cm) withcolor blue ; draw q withcolor green ; draw q cutends (1cm,2cm) withcolor blue ; \stopMPpage \stoptext Aditya