рд╡реЗрдХреНрдЯрд░ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рдХреНрдпрд╛ рд╣реИ? рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рд╢рд╛рдпрдж рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрддреНрддрд░ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдЗрд▓рд╕реНрдЯреНрд░реЗрдЯрд░, рдпрд╛, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрдВрдХрд╕реНрдХреЗрдкред рдХрдо рд╕реЗ рдХрдо рдпрд╣реА рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдЬрдм рдореБрдЭреЗ рдПрдХ рднреМрддрд┐рдХреА рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдЖрда рд╕реМ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдЕрд╕рд╛рдзрд╛рд░рдг рдХреБрдЫ рднреА рдирд╣реАрдВ, рдмрд╕ рдЧреЛрд▓реЗ, рд╕реНрдкреНрд░рд┐рдВрдЧреНрд╕, рдкреБрд▓реАрд╕, рд▓реЗрдВрд╕ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ред рдЙрд╕ рд╕рдордп рддрдХ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рдерд╛ рдХрд┐ рдкреБрд╕реНрддрдХ рд▓рд╛рдЯреЗрдХреНрд╕ рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдереА рдФрд░ рдореБрдЭреЗ рдПрдореНрдмреЗрдбреЗрдб рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдПрдордПрд╕ рд╡рд░реНрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд┐рдП рдЧрдП рдереЗред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЕрдиреНрдп рдкреБрд╕реНрддрдХреЛрдВ рд╕реЗ рдЪрд┐рддреНрд░ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рдереЗ, рдХреБрдЫ рдкреЗрдВрд╕рд┐рд▓ рдЪрд┐рддреНрд░ рдереЗред рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ рдЙрдЦрд╛рдбрд╝рдиреЗ рдХреЗ рджрд┐рдиреЛрдВ рдФрд░ рд░рд╛рддреЛрдВ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдЪрдХреНрдХрд░ рдЖ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЬрд▓реНрдж рд╣реА рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдЕрдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛ред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ
рдореЗрдЯрд╛рдкреЛрд╕реНрдЯ рдЗрди рдХрд▓реНрдкрдирд╛рдУрдВ рдХрд╛
рдХреЗрдВрджреНрд░ рдмрди рдЧрдпрд╛ред

рдореЗрдЯрд╛рдкреЛрд╕реНрдЯ (рдпрд╛ рд╕рдорд╛рди) рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд┐рддреНрд░ рдХрдИ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рддрд╕реНрд╡реАрд░ рдХреЛ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЪрд┐рддреНрд░рдг рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрдВрддрд░рд┐рдХ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ (рдХреБрдЫ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдерд╛), рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрд╡рд░реНрддреА рддрддреНрд╡, рдЗрди рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдХреА рдХрдореА рдХреЗ рд╕рд╛рде рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рд╛рдзрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рд╣реИрдЪрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рди рдХрд┐ рдкреБрд░рд╛рдиреА рдХрд┐рддрд╛рдмреЛрдВ рдореЗрдВ рдЬреЛ рдЖрдк рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ рдЙрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрд▓рдЧ рдореЛрдЯрд╛рдИ рдХреЗ рдХреБрдЫ рдШрдЯрддрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдЬрдЯрд┐рд▓рддрд╛ рдПрдХ рд╡рдХреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреВрд░реА рдкрд░ рдореВрд▓ рд╡рдХреНрд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдЗрдорд░реА рдХрд╛рдо рдХрд░рдиреЗ рдХреА
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ , рдЬреЛ рдХрд┐ рдмреЗрдЬрд╝рд┐рдпрд░ рдХрд░реНрд╡ рдХрдВрдЯреНрд░реЛрд▓ рдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреВрд░реА рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рд▓рд╛рдЗрди рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдмрд▓рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕ рджреВрд░реА рдХреЗ рдХрд░реНрд╡ рдХреЗ рд╕рд╛рдеред

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рдиреЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбрдпрд╣рд╛рдБ рд╕реЗ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░
input fiziko.mp;
рдореЗрдЯрд╛рдкреЛрд╕реНрдЯ рдХреЛрдб рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ ConTeXt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ (рдлрд┐рд░ рдЖрдкрдХреЛ
beginfig
рдФрд░
endfig
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ):
\starttext
\startMPcode
input fiziko.mp;
% the code goes here
\stopMPcode
\stoptext
рдпрд╛ LuaLaTeX:
\documentclass{article}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
input fiziko.mp;
% the code goes here
\end{mplibcode}
\end{document}
beginfig(3);
path p, q; % MetaPost's syntax is reasonably readable, so I'll comment mostly on my stuff
p := (0,-1/4cm){dir(30)}..(5cm, 0)..{dir(30)}(10cm, 1/4cm);
q := offsetPath(p)(1cm*sin(offsetPathLength*pi)); % first argument is the path itself, second is a function of the position along this path (offsetPathLength changes from 0 to 1), which determines how far the outline is from the original line
draw p;
draw q dashed evenly;
endfig;
рдПрдХ рдЪрд░-рдореЛрдЯрд╛рдИ рд╕реНрдЯреНрд░реЛрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореЛрдЪреНрдЪ рд░реЗрдЦрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(4);
path p, q[];
p := (0,-1/4cm){dir(30)}..(5cm, 0)..{dir(30)}(10cm, 1/4cm);
q1 := offsetPath(p)(1/2pt*(sin(offsetPathLength*pi)**2)); % outline on one side
q2 := offsetPath(p)(-1/2pt*(sin(offsetPathLength*pi)**2)); % and on the other
fill q1--reverse(q2)--cycle;
endfig;
рд▓рд╛рдЗрди рдХреА рдореЛрдЯрд╛рдИ рдХреБрдЫ рдХрдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛, рдХреБрдЫ рд▓рд╛рдЗрдиреЗрдВ рдареАрдХ рд╕реЗ рдореБрджреНрд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкрддрд▓реА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реА рд╣реИрдВ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ (рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЪреБрдирд╛ рдерд╛) рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдкрддрд▓реЗ рдзрд░рд╛рд╢рд╛рдпреА рд╣реИрдВ, рддрд╛рдХрд┐ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рд▓рдВрдмрд╛рдИ рдореЗрдВ рд╕реНрдпрд╛рд╣реА рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣ рдмрдиреА рд░рд╣реЗ рдЬреИрд╕реЗ рдХрд┐ рдЗрдЪреНрдЫрд┐рдд рдкрддрд▓реЗ рд▓рд╛рдЗрди рдореЗрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд▓рд╛рдЗрди рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╕реНрдпрд╛рд╣реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд╛рдЗрди рд╕реЗ рд╣реА рдХреБрдЫ рд╕реНрдпрд╛рд╣реА рд▓реЗрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(5);
path p;
p := (0,-1/4cm){dir(30)}..(5cm, 0)..{dir(30)}(10cm, 1/4cm);
draw brush(p)(1pt*(sin(offsetPathLength*pi)**2)); % the arguments are the same as for the outline
endfig;
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓-рдореЛрдЯрд╛рдИ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЖрдк рдЧреЛрд▓реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЧреЛрд▓реЗ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднрд┐рдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛ рдореЛрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рдЧрд╛рдврд╝рд╛ рд╣рд▓рдХреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрд┐рдВрджреБ рдХреА рд▓рдкрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(6);
draw sphere.c(1.2cm);
draw sphere.c(2.4cm) shifted (2cm, 0);
endfig;
рдПрдХ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд┐рд░реНрдорд╛рдг рдЦрдВрдб рдПрдХ "рдЯреНрдпреВрдм" рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдпрд╣ рдПрдХ рд╕рд┐рд▓реЗрдВрдбрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЭреБрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рд╡реНрдпрд╛рд╕ рд╕реНрдерд┐рд░ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(7);
path p;
p := subpath (1,8) of fullcircle scaled 3cm;
draw tube.l(p)(1/2cm); % arguments are the path itself and the tube radius
endfig;
рдпрджрд┐ рд╡реНрдпрд╛рд╕ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЪреАрдЬреЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ: рд░реЛрд╢рдиреА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реНрдпрд╛рд╣реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реЛрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЯреНрдпреВрдм рдХреА рдореЛрдЯрд╛рдИ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(8);
path p;
p := pathSubdivide(fullcircle, 2) scaled 3cm; % this thing splits every segment between the points of a path (hereтАФfullcircle) into several parts (hereтАФ2)
draw tube.l(p)(1/2cm + 1/6cm*sin(offsetPathLength*10pi));
endfig;
рдЕрдиреБрдкреНрд░рд╕реНрде рд╣реИрдЪрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЯреНрдпреВрдм рднреА рд╣реИрдВред рд╕реНрдпрд╛рд╣реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рд╕реНрдерд┐рд░ рд░рдЦрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдФрд░ рднреА рдкреЗрдЪреАрджрд╛ рд╣реЛ рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдирд▓рд┐рдХрд╛рдПрдВ рдмрд╣реБрдд рд╣реА рдХрдордЬрд╝реЛрд░ рджрд┐рдЦрддреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(9);
path p;
p := pathSubdivide(fullcircle, 2) scaled 3cm;
draw tube.t(p)(1/2cm + 1/6cm*sin(offsetPathLength*10pi));
endfig;
рдЯреНрдпреВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╢рдВрдХреБ рдФрд░ рд╕рд┐рд▓реЗрдВрдбрд░ рд╕реЗ рд▓реЗрдХрд░ рдмреЗрд▓рд╕реНрдЯрд░реЛрдВ рддрдХред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(10);
draw tube.l ((0, 0) -- (0, 3cm))((1-offsetPathLength)*1cm) shifted (-3cm, 0); % a very simple cone
path p;
p := (-1/2cm, 0) {dir(175)} .. {dir(5)} (-1/2cm, 1/8cm) {dir(120)} .. (-2/5cm, 1/3cm) .. (-1/2cm, 3/4cm) {dir(90)} .. {dir(90)}(-1/4cm, 9/4cm){dir(175)} .. {dir(5)}(-1/4cm, 9/4cm + 1/5cm){dir(90)} .. (-2/5cm, 3cm); % baluster's envelope
p := pathSubdivide(p, 6);
draw p -- reverse(p xscaled -1) -- cycle;
tubeGenerateAlt(p, p xscaled -1, p rotated -90); % a more low-level stuff than tube.t, first two arguments are tube's sides and the third is the envelope. The envelope is basically a flattened out version of the outline, with line length along the x axis and the distance to line at the y. In the case of this baluster, it's simply its side rotated 90 degrees.
endfig;
рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рдЬреЛ рдЗрди рдЖрджрд┐рдореЛрдВ рд╕реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд▓реЛрдм рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(11);
draw globe(1cm, -15, 0) shifted (-6/2cm, 0); % radius, west longitude, north latitude, both decimal
draw globe(3/2cm, -30.280577, 59.939461);
draw globe(4/3cm, -140, -30) shifted (10/3cm, 0);
endfig;
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣рд╛рдВ рд╣реИрдЪрд┐рдВрдЧ рд▓реЗрдЯрд┐рдЯреВрдбрд┐рдирд▓ рд╣реИ рдФрд░ "рдХрдВрд╕реЗрдВрдЯреНрд░рд┐рдХ" рд╣реИрдЪрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд░реЗрдЧреНрдпреБрд▓рд░ рдЧреЛрд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд╛рдЗрди рдбреЗрдВрд╕рд┐рдЯреА рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдирд╛ рдЬреНрдпрд╛рджрд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрд▓рдЧ рддрд░рд╣ рдХрд╛ рдЧреЛрд▓рд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(12);
draw sphere.l(2cm, -60); % diameter and latitude
draw sphere.l(3cm, 45) shifted (3cm, 0);
endfig;
рдПрдХ рд╡рдЬрди рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреНрдпреВрдмреЛрдВ рд╕реЗ рдмрдирд╛ рдПрдХ рд╕рд░рд▓ рдирд┐рд░реНрдорд╛рдг рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(13);
draw weight.s(1cm); % weight height
draw weight.s(2cm) shifted (2cm, 0);
endfig;
рдЯреНрдпреВрдмреЛрдВ рдХреЛ рдЧрд╛рдБрдардиреЗ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рднреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбред рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЧрд╛рдБрда рд╣реИредbeginfig(14);
path p;
p := (dir(90)*4/3cm) {dir(0)} .. tension 3/2 ..(dir(90 + 120)*4/3cm){dir(90 + 30)} .. tension 3/2 ..(dir(90 - 120)*4/3cm){dir(-90 - 30)} .. tension 3/2 .. cycle;
p := p scaled 6/5;
addStrandToKnot (primeOne) (p, 1/4cm, "l", "1, -1, 1"); % first, we add a strand of width 1/4cm going along the path p to the knot named primeOne. its intersections along the path go to layers "1, -1, 1" and the type of tube is going to be "l".
draw knotFromStrands (primeOne); % then the knot is drawn. you can add more than one strand.
endfig;
рдЧрд╛рдВрдареЛрдВ рдореЗрдВ рдЯреНрдпреВрдм рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдЫрд╛рдпрд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореЗрд░реА рддреАрд╕рд░реЗ рдЖрдпрд╛рдо рдореЗрдВ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреБрдЫ рдХрдореА рд╣реИ рдФрд░ рдЫрд╛рдпрд╛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(15);
path shadowPath[];
boolean shadowsEnabled;
numeric numberOfShadows;
shadowsEnabled := true; % shadows need to be turned on
numberOfShadows := 1; % number of shadows should be specified
shadowPath0 := (-1cm, -2cm) -- (-1cm, 2cm) -- (-1cm +1/6cm, 2cm) -- (-1cm + 1/8cm, -2cm) -- cycle; % shadow-dropping object should be a closed path
shadowDepth0 := 4/3cm; % it's just this high above the object on which the shadow falls
shadowPath1 := shadowPath0 rotated -60;
shadowDepth1 := 4/3cm;
draw sphere.c(2.4cm); % shadows work ok only with sphere.c and tube.l with constant diameter
fill shadowPath0 withcolor white;
draw shadowPath0;
fill shadowPath1 withcolor white;
draw shadowPath1;
endfig;
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдПрдХ рд▓рдХрдбрд╝реА рдХреА рдмрдирд╛рд╡рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЕрдкрдбреЗрдЯ: рдЪреВрдВрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкрд╣рд▓рд╛ рдорд╛рдорд▓рд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐
рдпрд╣ рд╣реБрдЖ рд╣реИ , рдФрд░ рдпрд╣ рд▓рдХрдбрд╝реА рдХреА рдмрдирд╛рд╡рдЯ рдереА, рдЬреЛ рдЖрдИ рдереА рдХрд╛рдо рдореЗрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдВрдд рдореЗрдВ рдордЬрд╛рдХ рдирд╣реАрдВ рдмрди рд░рд╣рд╛ рд╣реИ)ред рдЯрд╣рдирд┐рдпрд╛рдБ рдФрд░ рдЙрдирдХреА рд╡реГрджреНрдзрд┐ рд╕рд╛рд▓ рдХреЗ рдЫрд▓реНрд▓реЗ рдХреЗ рдкреИрдЯрд░реНрди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ рдпрд╣ рдХреБрдЫ рдЧрдВрднреАрд░ рдЕрдзреНрдпрдпрди рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдореЙрдбрд▓ рдЬреЛ рдореИрдВ рдЖ рд╕рдХрддрд╛ рдерд╛, рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╡рд░реНрд╖ рдХреЗ рдЫрд▓реНрд▓реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдкрд╛рдЯ рд╕рддрд╣ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдмрдврд╝рддреЗ рдЯрд╣рдирд┐рдпреЛрдВ рд╕реЗ рд╡рд┐рдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ; рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рддрд╣ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ "рдЯрд╣рдиреА рдХрд╛рд░реНрдпреЛрдВ" рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рддрд╣ рдХреЗ рдЖрдЗрд╕рд┐рд▓реАрди рдХреЛ рд╡рд░реНрд╖ рдХреЗ рд░рд┐рдВрдЧ рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(16);
numeric w, b;
pair A, B, C, D, A', B', C', D';
w := 4cm;
b := 1/2cm;
A := (0, 0);
A' := (b, b);
B := (0, w);
B' := (b, wb);
C := (w, w);
C' := (wb, wb);
D := (w, 0);
D' := (wb, b);
draw woodenThing(A--A'--B'--B--cycle, 0); % a piece of wood inside the A--A'--B'--B--cycle path, with wood grain at 0 degrees
draw woodenThing(B--B'--C'--C--cycle, 90);
draw woodenThing(C--C'--D'--D--cycle, 0);
draw woodenThing(A--A'--D'--D--cycle, 90);
eyescale := 2/3cm; % scale for the eye
draw eye(150) shifted 1/2[A,C]; % the eye looks in 150 degree direction
endfig;
рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░ рд╕реЗ рдЖрдВрдЦреЗрдВ рдЪреМрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдпрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЭреБрдХ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдкреБрддрд▓рд╛ рдЕрдкрдирд╛ рдЖрдХрд╛рд░ рднреА рдмрджрд▓ рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрдВрддреНрд░рд╡рддреН рд╕рдорд╛рди рдЖрдБрдЦреЗрдВ рдмрд╕ рдЙрдмрд╛рдК рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбbeginfig(17);
eyescale := 2/3cm; % 1/2cm by default
draw eye(0) shifted (0cm, 0);
draw eye(0) shifted (1cm, 0);
draw eye(0) shifted (2cm, 0);
draw eye(0) shifted (3cm, 0);
draw eye(0) shifted (4cm, 0);
endfig;
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдЪрд┐рддреНрд░ рд╕рднреА рдЙрд╕ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдереЗ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдХрдареЛрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХрд╣реЛ, L'H├┤pital рдХреА рдЪрд░рдЦреА рд╕рдорд╕реНрдпрд╛ (рдпрд╣ рдЙрд╕ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдореЗрдВ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА): рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд░рд╕реНрд╕реА рдкрд░
рдмрд┐рдВрджреБ рдкрд░ рдирд┐рд▓рдВрдмрд┐рдд
рдПрдХ рдЪрд░рдЦреА рд▓рдЯрдХ рд░рд╣реА рд╣реИ; рдпрд╣ рдПрдХ рдФрд░ рд░рд╕реНрд╕реА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдмрд┐рдВрджреБ рдкрд░ рдирд┐рд▓рдВрдмрд┐рдд рд╣реИ
рд╡рдЬрди рдХреЗ рд╕рд╛рде
рдЗрд╕рдХреЗ рдЕрдВрдд рдореЗрдВред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЪрд░рдЦреА рдФрд░ рд░рд╕реНрд╕реА рджреЛрдиреЛрдВ рдХрд╛ рд╡рдЬрди рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рддреЛ рд╡рдЬрди рдХрд╣рд╛рдВ рдЬрд╛рддрд╛ рд╣реИ? рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХрдИ рдЪрд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдХрд░ рдЖрдк рд╕рдЯреАрдХрддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдХреЛ рд╕рд╣реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдбvardef lHopitalPulley (expr AB, l, m) = % distance AB between the suspension points of the ropes and their lengths l and m. тАЬWhy no units of length?тАЭ, you may ask. It's because some calculations inside can cause arithmetic overflow in MetaPost.
save A, B, C, D, E, o, a, x, y, d, w, h, support;
image(
pair A, B, C, D, E, o[];
path support;
numeric a, x[], y[], d[], w, h;
x1 := (l**2 + abs(l)*((sqrt(8)*AB)++l))/4AB; % the solution
y1 := l+-+x1; % second coordinate is trivial
y2 := m - ((AB-x1)++y1); % as well as the weight's position
A := (0, 0);
B := (AB*cm, 0);
D := (x1*cm, -y1*cm);
C := D shifted (0, -y2*cm);
d1 := 2/3cm; d2 := 1cm; d3 := 5/6d1; % diameters of the pulley, weight and the pulley wheel
w := 2/3cm; h := 1/3cm; % parameters of the wood block
o1 := (unitvector(CD) rotated 90 scaled 1/2d3);
o2 := (unitvector(DB) rotated 90 scaled 1/2d3);
E := whatever [D shifted o1, C shifted o1]
= whatever [D shifted o2, B shifted o2]; % pulley's center
a := angle(AD);
support := A shifted (-w, 0) -- B shifted (w, 0) -- B shifted (w, h) -- A shifted (-w, h) -- cycle;
draw woodenThing(support, 0); % wood block everything is suspended from
draw pulley (d1, a - 90) shifted E; % the pulley
draw image(
draw A -- D -- B withpen thickpen;
draw D -- C withpen thickpen;
) maskedWith (pulleyOutline shifted E); % ropes should be covered with the pulley
draw sphere.c(d2) shifted C shifted (0, -1/2d2); % sphere as a weight
dotlabel.llft(btex $A$ etex, A);
dotlabel.lrt(btex $B$ etex, B);
dotlabel.ulft(btex $C$ etex, C);
label.llft(btex $l$ etex, 1/2[A, D]);
)
enddef;
beginfig(18);
draw lHopitalPulley (6, 2, 11/2); % now you can choose the right parameters
draw lHopitalPulley (3, 5/2, 3) shifted (8cm, 0);
endfig;
рдФрд░ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХрд╛рд╢, рдЬрдм рд▓рдЧрднрдЧ рд╕рднреА рдЪрд┐рддреНрд░ рдФрд░ рд▓реЗрдЖрдЙрдЯ рддреИрдпрд╛рд░ рдереЗ, рдХреБрдЫ рд╣реБрдЖ рдФрд░ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рд░рджреНрдж рдХрд░ рджреА рдЧрдИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╡рдЬрд╣ рд╕реЗ, рдореИрдВрдиреЗ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдореИрдВрдиреЗ рдореВрд▓ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪреБрдирд╛, рдЬреЛ рдХрд┐ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдФрд░
рдЗрд╕реЗ GitHub рдкрд░ рд░рдЦрд╛ ред рдХреБрдЫ рдЪреАрдЬреЗрдВ, рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдХрд╛рд░реЛрдВ рдФрд░ рдЯреНрд░реИрдХреНрдЯрд░реЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп, рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреБрдЫ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдЬреИрд╕реЗ рд╕рдореБрджреНрд░реА рдореАрд▓, рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ: I5-4200U 1.6 GHz рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░ LuaLaTeX рдХреЗ рд╕рд╛рде рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдорд┐рдирдЯ рд▓рдЧрддрд╛ рд╣реИред рдПрдХ рдЫрджреНрдо рдЖрдпрд╛рдореА рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА рджреЛ рд╕рдорд╛рди рдЪрд┐рддреНрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ (рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ) рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд░рди рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдЖрд╢реНрдЪрд░реНрдп рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдмрд╕
randomseed := some number
рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
randomseed := some number
рдФрд░ рд╣рд░ рд░рди рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред
рдЗрд╕ рдкрд╛рда рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЙрдирдХреА рдорджрдж рдХреЗ рд▓рд┐рдП
рдбреЙред рдСрд░реНрдб рдФрд░
рдорд┐рдХреЗрд▓ рд╕реБрдВрдбрдХреНрд╡рд┐рд╕реНрдЯ рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред