Re: 曲線の点列数を自由に指定したい

名前: しっぽ愛好家
日時: 2003-05-27 10:54:14
IPアドレス: 211.4.46.*

>>18943 ``どのパッケージが'' 提供する \curve,\spline の話なのかが不明なので, 回答のしようがないのかもしれませんね. 例えば,eepic パッケージが提供する \spline については, 下記の例に示すように機能を拡張することができます. %%% が,eepic パッケージ(もちろん,epic パッケージとともに使用)では %%% \curve は定義されていないようですので,eepic パッケージの話をしても %%% 参考になるかどうかはわかりませんが… \documentclass{jarticle} \usepackage{epic,eepic} \makeatletter \def\spline#1(#2,#3){% \@killglue % This line added by Piet van Oostrum, Dec 21, 1999. \def\@tempa{#1}% \special{pn \the\@gphlinewidth}% \ifx\@tempa\@empty \let\@spline@arg\@empty \else \dimen@#1\unitlength \ifdim\dimen@<\z@ \def\@tempb{-}\dimen@-\dimen@ \else \let\@tempb\@empty \fi \divide\dimen@4736\relax \@tempcnta\dimen@ \@tempcntb\@tempcnta \divide\@tempcntb\@m \edef\@tempa{\the\@tempcntb.}% \multiply\@tempcntb\@m \advance\@tempcnta-\@tempcntb \edef\@spline@arg{\space\@tempb\@tempa\three@digits\@tempcnta}% \fi \@spline(#2,#3)} \def\@spline(#1,#2){% \@tempdima #1\unitlength \@tempdimb #2\unitlength \@tempcnta \@tempdima \advance\@tempcnta 2368 \divide\@tempcnta 4736 \@tempcntb -\@tempdimb \advance\@tempcntb -2368 \divide\@tempcntb 4736 \@paspecial{\the\@tempcnta}{\the\@tempcntb}% \@ifnextchar ({\@spline}{\special{sp\@spline@arg}}} \def\three@digits#1{\ifnum#1<100 0\fi\ifnum#1<10 0\fi\number#1} \makeatother \begin{document} \begin{picture}(150,50) \allinethickness{.6pt} \spline(0,0)(10,30)(20,20)(30,40)(40,30)(50,50) %%% 最初の座標の前に正の数値を置くと,実線部分と空白部分の長さが %%% その数値×\unitlength であるような破線で描きます. \spline{3}(50,0)(60,30)(70,20)(80,40)(90,30)(100,50) %%% 最初の座標の前に負の数値を置くと,点の間隔が %%% その数値の絶対値×\unitlength であるような点線で描きます. \spline{-3}(100,0)(110,30)(120,20)(130,40)(140,30)(150,50) \end{picture} \end{document} %%% 上記の変更例は,実際には点の間隔を指定しただけで点の個数を %%% 指定しているわけではありませんが,単に点線の点の密度(?)を %%% コントロールしたいだけならこれで充分でしょう.

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)