Исходный код 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 ;
|