(ИСН)
скажите словами: зачем там Безье?
ИСН,
\begin{picture}\put(...){\line(3,4){10}} умеет строить прямые только в определённых направлениях (0,1,2,3,4?), типа (2,7) уже не умеет. Если интересны детали, могу поискать документик. Ну, а у меня там даже стрелочки из прямых.
Ну Вы же понимаете, что я это не ручками писал. Что-то вроде
Код:
/line.LaTeX {% x2 y2 x1 y1
%/line 4 Args
[ (\\qbezier) 6 2 roll 4 copy % [ \qbezier x2 y2 x1 y1 x2 y2 x1 y1
xy.LaTeX 7 1 roll
XYadd 2 div exch 2 div exch xy.LaTeX 3 1 roll
xy.LaTeX (\n)
] {file.LaTeX exch writestring} forall
} bind
/curve.LaTeX {% x1 y1 x2 y2 x3 y3 x0 y0
[ (\\qbezier) 10 2 roll % [ \qbezier x1 y1 x2 y2 x3 y3 x0 y0
% C=(P1+P2)/2; A=P0; B=P3; X=w1*A+w2*B+w3*C, w1=w2=-1/4, w3=3/2
8 4 roll XYadd 2 div exch 2 div exch % [ \qbezier x3 y3 x0 y0 xc yc
1.5 mul exch 1.5 mul exch 6 copy pop pop XYadd % [ \qbezier x3 y3 x0 y0 xc*w3 yc*w3 x0+x3 y0+y3
-4 div exch -4 div exch XYadd % [ \qbezier x3 y3 x0 y0 xx yy
4 2 roll xy.LaTeX 5 1 roll xy.LaTeX 3 1 roll xy.LaTeX (\n)
Pstack
] {file.LaTeX exch writestring} forall
} bind
/stroke {%
file.LaTeX (\n\\linethickness{)
currentlinewidth 0 dtransform dup mul exch dup mul add sqrt
% 1.000 div round cvi dup 0 le {pop 1} if 5 string cvs AppStr (pt}) AppStr
1.000 div dup 0.4 le {pop .4} if 1 Format AppStr (pt}) AppStr
writestring
{/y.LaTeX exch def /x.LaTeX exch def}
{2 copy x.LaTeX y.LaTeX line.LaTeX /y.LaTeX exch def /x.LaTeX exch def}
{2 copy 8 2 roll x.LaTeX y.LaTeX curve.LaTeX /y.LaTeX exch def /x.LaTeX exch def}
{}
pathforall sys.stroke
}
Нет, была бы это полноценная библиотека, я бы, конечно, поделился. Но это прибамбас à la va vite к имеющемся скриптам, умеет мало.
Делал я его под
такие штуки, но толково сделать не получилось. Как бы делал
из говна конфетку г...о с помощью конфет. Оно и получилось.