Исходный код InfoField | PostScript code defaultfont := "cmr12"; defaultscale := 12pt /fontsize defaultfont; prologues := 3; outputformat := "svg"; %пример использования slanted beginfig(1) ; numeric u; u = 0.8mm; cutdraw (0u,0u)--(20u,0u)--(20u,30u){dir 90}.. {dir -90}(17u,30u)--(17u,3u)--(0u,3u) withpen pencircle scaled 0.5u; drawdblarrow (23u,10u)--(23u,1u); label.rt("h",1/2[(23u,10u),(23u,1u)]); drawdblarrow (30u,30u)--(30u,1u); label.lft("H",1/2[(30u,30u),(30u,1u)]); picture Base; Base:=currentpicture; clearit; fill (15u,0u)--(20u,0u)--(20u,20u)--(17u,20u)--(17u,3u)--(15u,3u)--cycle withcolor 0.7white; draw Base; draw ((12u,20u)--(20u,20u)); draw ((12u,10u)--(20u,10u)); drawdblarrow ((14u,20u)--(14u,10u)); label.lft("d",(14u,16u)); picture Slant; Slant=currentpicture; clearit; fill (5u,0u)--(20u,0u)--(20u,10u)--(17u,10u)--(17u,3u)--(5u,3u)--cycle withcolor 0.7white; draw Base; % Собственно говоря, приер линейных преобразований здесь. draw Slant yscaled 2/3 slanted 1/2 shifted (40u,0u); endfig; Affine transformations example usage in MetaPost code defaultfont := "cmr12"; defaultscale := 12pt /fontsize defaultfont; prologues := 3; outputformat := "svg"; beginfig(1) ; numeric u; u = 0.8mm; cutdraw (0u,0u)--(20u,0u)--(20u,30u){dir 90}.. {dir -90}(17u,30u)--(17u,3u)--(0u,3u) withpen pencircle scaled 0.5u; drawdblarrow (23u,10u)--(23u,1u); label.rt("h",1/2[(23u,10u),(23u,1u)]); drawdblarrow (30u,30u)--(30u,1u); label.lft("H",1/2[(30u,30u),(30u,1u)]); picture Base; Base:=currentpicture; clearit; fill (15u,0u)--(20u,0u)--(20u,20u)--(17u,20u)--(17u,3u)--(15u,3u)--cycle withcolor 0.7white; draw Base; draw ((12u,20u)--(20u,20u)); draw ((12u,10u)--(20u,10u)); drawdblarrow ((14u,20u)--(14u,10u)); label.lft("d",(14u,16u)); picture Slant; Slant=currentpicture; clearit; fill (5u,0u)--(20u,0u)--(20u,10u)--(17u,10u)--(17u,3u)--(5u,3u)--cycle withcolor 0.7white; draw Base; % here it is transformation example draw Slant yscaled 2/3 slanted 1/2 shifted (40u,0u); endfig ; |