diff options
author | Karl Berry <karl@freefriends.org> | 2006-07-24 16:33:36 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-07-24 16:33:36 +0000 |
commit | e75737b783520c645f61255510dac74d8cc1e221 (patch) | |
tree | 1f5b9a2365f5b3e12d34cc65385462e4a5245278 /Master/texmf-dist/tex/latex | |
parent | fccdc59ac91ea4544133144a8d6d41c053b4cb3f (diff) |
new (latex) package curve2e
git-svn-id: svn://tug.org/texlive/trunk@1910 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/curve2e/curve2e.sty | 660 |
1 files changed, 660 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/curve2e/curve2e.sty b/Master/texmf-dist/tex/latex/curve2e/curve2e.sty new file mode 100644 index 00000000000..e01f0e2d27b --- /dev/null +++ b/Master/texmf-dist/tex/latex/curve2e/curve2e.sty @@ -0,0 +1,660 @@ +%% +%% This is file `curve2e.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% curve2e.dtx (with options: `package') +%% +%% Copyright 2005 Claudio Beccari All rights reserved. +%% +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% +%% IMPORTANT NOTICE: +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "author-maintained". +%% +%% This work consists of all files listed in manifest.txt. +%% +%% +%% If you receive only some of these files from someone, complain! +%% +%% +%% File `curve2e.dtx'. +%% Copyright (C) 2005 Claudio Beccari all rights reserved. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{curve2e}% + [2005/08/15 v.0.10 Extension package for pict2e] +\RequirePackage{color} +\RequirePackageWithOptions{pict2e}[2004/06/01] +\ifcase\pIIe@mode\relax +\or %Postscript + \def\roundcap{\special{ps:: 1 setlinecap}}% + \def\squarecap{\special{ps:: 0 setlinecap}}% + \def\roundjoin{\special{ps:: 1 setlinejoin}}% + \def\beveljoin{\special{ps:: 2 setlinejoin}}% +\or %pdf + \def\roundcap{\pdfliteral{1 J}}% + \def\squarecap{\pdfliteral{0 J}}% + \def\roundjoin{\pdfliteral{1 j}}% + \def\beveljoin{\pdfliteral{2 j}}% +\fi +\def\TRON{\tracingcommands\tw@ \tracingmacros\tw@}% +\def\TROF{\tracingcommands\z@ \tracingmacros\z@}% +\ifx\undefined\@tdA \newdimen\@tdA \fi +\ifx\undefined\@tdB \newdimen\@tdB \fi +\ifx\undefined\@tdC \newdimen\@tdC \fi +\ifx\undefined\@tdD \newdimen\@tdD \fi +\ifx\undefined\@tdE \newdimen\@tdE \fi +\ifx\undefined\@tdF \newdimen\@tdF \fi +\ifx\undefined\defaultlinewidth \newdimen\defaultlinewidth \fi +\newcommand\defaultlinethickness[1]{\defaultlinewidth=#1\relax +\def\thicklines{\linethickness{\defaultlinewidth}}% +\def\thinlines{\linethickness{.5\defaultlinewidth}}% +\thinlines\ignorespaces} +\def\Line(#1,#2){\pIIe@moveto\z@\z@ + \pIIe@lineto{#1\unitlength}{#2\unitlength}\pIIe@strokeGraph}% +\def\LINE(#1)(#2){\polyline(#1)(#2)}% +\def\line(#1)#2{\begingroup + \@linelen #2\unitlength + \ifdim\@linelen<\z@\@badlinearg\else + \expandafter\DirOfVect#1to\Dir@line + \GetCoord(\Dir@line)\d@mX\d@mY + \ifdim\d@mX\p@=\z@\else + \DividE\ifdim\d@mX\p@<\z@-\fi\p@ by\d@mX\p@ to\sc@lelen + \@linelen=\sc@lelen\@linelen + \fi + \pIIe@moveto\z@\z@ + \pIIe@lineto{\d@mX\@linelen}{\d@mY\@linelen}% + \pIIe@strokeGraph +\fi +\endgroup\ignorespaces}% +\def\GetCoord(#1)#2#3{% +\expandafter\SplitNod@\expandafter(#1)#2#3\ignorespaces} +\def\SplitNod@(#1,#2)#3#4{\edef#3{#1}\edef#4{#2}}% + \def\vector(#1)#2{% + \begingroup + \GetCoord(#1)\d@mX\d@mY + \@linelen#2\unitlength + \ifdim\d@mX\p@=\z@\ifdim\d@mY\p@=\z@\@badlinearg\fi\fi + \ifdim\@linelen<\z@ \@linelen=-\@linelen\fi + \MakeVectorFrom\d@mX\d@mY to\@Vect + \DirOfVect\@Vect to\Dir@Vect + \YpartOfVect\Dir@Vect to\@ynum \@ydim=\@ynum\p@ + \XpartOfVect\Dir@Vect to\@xnum \@xdim=\@xnum\p@ + \ifdim\d@mX\p@=\z@ + \else\ifdim\d@mY\p@=\z@ + \else + \DividE\ifdim\@xnum\p@<\z@-\fi\p@ by\@xnum\p@ to\sc@lelen + \@linelen=\sc@lelen\@linelen + \fi + \fi + \@tdB=\@linelen +\pIIe@concat\@xdim\@ydim{-\@ydim}\@xdim{\@xnum\@linelen}{\@ynum\@linelen}% + \@linelen\z@ + \pIIe@vector + \pIIe@fillGraph + \@linelen=\@tdB + \@tdA=\pIIe@FAW\@wholewidth + \@tdA=\pIIe@FAL\@tdA + \advance\@linelen-\@tdA + \ifdim\@linelen>\z@ + \pIIe@moveto\z@\z@ + \pIIe@lineto{\@xnum\@linelen}{\@ynum\@linelen}% + \pIIe@strokeGraph\fi + \endgroup} +\def\Vector(#1,#2){\vector(#1,#2){#1}} +\def\VECTOR(#1)(#2){\begingroup +\SubVect#1 from #2 to \@tempa +\expandafter\put\expandafter(#1){\expandafter\Vector\expandafter(\@tempa)}% +\endgroup\ignorespaces} +\let\lp@r( \let\rp@r) +\def\polyline(#1){\beveljoin\GetCoord(#1)\d@mX\d@mY + \pIIe@moveto{\d@mX\unitlength}{\d@mY\unitlength}% + \@ifnextchar\lp@r{\p@lyline}{% + \PackageWarning{curve2e}% + {Polygonal lines require at least two vertices!\MessageBreak + Control your polygonal line specification\MessageBreak}% + \ignorespaces}} +\def\p@lyline(#1){\GetCoord(#1)\d@mX\d@mY + \pIIe@lineto{\d@mX\unitlength}{\d@mY\unitlength}% + \@ifnextchar\lp@r{\p@lyline}{\pIIe@strokeGraph\ignorespaces}} +\def\GraphGrid(#1,#2){\begingroup\textcolor{red}{\linethickness{.1\p@}% +\RoundUp#1modulo10to\@GridWd \RoundUp#2modulo10to\@GridHt +\@tempcnta=\@GridWd \divide\@tempcnta10\relax \advance\@tempcnta\@ne +\multiput(0,0)(10,0){\@tempcnta}{\line(0,1){\@GridHt}}% +\@tempcnta=\@GridHt \divide\@tempcnta10\advance\@tempcnta\@ne +\multiput(0,0)(0,10){\@tempcnta}{\line(1,0){\@GridWd}}\thinlines}% +\endgroup\ignorespaces} +\def\RoundUp#1modulo#2to#3{\expandafter\@tempcnta\Integer#1.??% +\count254\@tempcnta\divide\count254by#2\relax +\multiply\count254by#2\relax +\count252\@tempcnta\advance\count252-\count254 +\ifnum\count252>0\advance\count252-#2\relax +\advance\@tempcnta-\count252\fi\edef#3{\number\@tempcnta}\ignorespaces}% +\def\Integer#1.#2??{#1}% +\ifx\DividE\undefined + \def\DividE#1by#2to#3{% + \begingroup + \dimendef\Numer=254\relax \dimendef\Denom=252\relax + \countdef\Num 254\relax + \countdef\Den 252\relax + \countdef\I=250\relax + \Numer #1\relax \Denom #2\relax + \ifdim\Denom<\z@ \Denom -\Denom \Numer -\Numer\fi + \def\segno{}\ifdim\Numer<\z@ \def\segno{-}\Numer -\Numer\fi + \ifdim\Denom=\z@ + \ifdim\Numer>\z@\def\Q{16383.99999}\else\def\Q{-16383.99999}\fi + \else + \Num=\Numer \Den=\Denom \divide\Num\Den + \edef\Q{\number\Num.}% + \advance\Numer -\Q\Denom \I=6\relax + \@whilenum \I>\z@ \do{\DividEDec\advance\I\m@ne}% + \fi + \xdef#3{\segno\Q}\endgroup + }% + \def\DividEDec{\Numer=10\Numer \Num=\Numer \divide\Num\Den + \edef\q{\number\Num}\edef\Q{\Q\q}\advance\Numer -\q\Denom}% +\fi +\ifx\undefined\@Numero% s + {\let\cc\catcode \cc`p=12\cc`t=12\gdef\@Numero#1pt{#1}}% +\fi +\ifx\undefined\Numero + \def\Numero#1#2{\dimen254 +#2\edef#1{\expandafter\@Numero\the\dimen254}\ignorespaces}% +\fi +\def\g@tTanCotanFrom#1to#2and#3{% +\DividE 114.591559\p@ by#1to\X \@tdB=\X\p@ +\countdef\I=254\def\Tan{0}\I=11\relax +\@whilenum\I>\z@\do{% + \@tdC=\Tan\p@ \@tdD=\I\@tdB + \advance\@tdD-\@tdC \DividE\p@ by\@tdD to\Tan + \advance\I-2\relax}% +\def#2{\Tan}\DividE\p@ by\Tan\p@ to\Cot \def#3{\Cot}% +\ignorespaces}% +\def\SinOf#1to#2{\begingroup% +\@tdA=#1\p@% +\ifdim\@tdA>\z@% + \@whiledim\@tdA>180\p@\do{\advance\@tdA -360\p@}% +\else% + \@whiledim\@tdA<-180\p@\do{\advance\@tdA 360\p@}% +\fi \ifdim\@tdA=\z@ + \gdef#2{0}% +\else + \ifdim\@tdA>\z@ + \def\Segno{+}% + \else + \def\Segno{-}% + \@tdA=-\@tdA + \fi + \ifdim\@tdA>90\p@ + \@tdA=-\@tdA \advance\@tdA 180\p@ + \fi + \ifdim\@tdA=90\p@ + \xdef#2{\Segno1}% + \else + \ifdim\@tdA=180\p@ + \gdef#2{0}% + \else + \ifdim\@tdA<\p@ + \@tdA=\Segno0.0174533\@tdA + \DividE\@tdA by\p@ to#2% + \else + \g@tTanCotanFrom\@tdA to\T and\Tp + \@tdA=\T\p@ \advance\@tdA \Tp\p@ + \DividE \Segno2\p@ by\@tdA to#2% + \fi + \fi + \fi +\fi +\endgroup\ignorespaces}% +\def\CosOf#1to#2{\begingroup% +\@tdA=#1\p@% +\ifdim\@tdA>\z@% + \@whiledim\@tdA>360\p@\do{\advance\@tdA -360\p@}% +\else% + \@whiledim\@tdA<\z@\do{\advance\@tdA 360\p@}% +\fi +\ifdim\@tdA>180\p@ + \@tdA=-\@tdA \advance\@tdA 360\p@ +\fi +\ifdim\@tdA<90\p@ + \def\Segno{+}% +\else + \def\Segno{-}% + \@tdA=-\@tdA \advance\@tdA 180\p@ +\fi +\ifdim\@tdA=\z@ + \gdef#2{\Segno1}% +\else + \ifdim\@tdA<\p@ + \@tdA=0.0174533\@tdA \Numero\@tempA\@tdA + \@tdA=\@tempA\@tdA \@tdA=-.5\@tdA + \advance\@tdA \p@ + \DividE\@tdA by\p@ to#2% + \else + \ifdim\@tdA=90\p@ + \gdef#2{0}% + \else + \g@tTanCotanFrom\@tdA to\T and\Tp + \@tdA=\Tp\p@ \advance\@tdA-\T\p@ + \@tdB=\Tp\p@ \advance\@tdB\T\p@ + \DividE\Segno\@tdA by\@tdB to#2% + \fi + \fi +\fi +\endgroup\ignorespaces}% +\def\TanOf#1to#2{\begingroup% +\@tdA=#1\p@% +\ifdim\@tdA>90\p@% + \@whiledim\@tdA>90\p@\do{\advance\@tdA -180\p@}% +\else% + \@whiledim\@tdA<-90\p@\do{\advance\@tdA 180\p@}% +\fi% +\ifdim\@tdA=\z@% + \gdef#2{0}% +\else + \ifdim\@tdA>\z@ + \def\Segno{+}% + \else + \def\Segno{-}% + \@tdA=-\@tdA + \fi + \ifdim\@tdA=90\p@ + \xdef#2{\Segno16383.99999}% + \else + \ifdim\@tdA<\p@ + \@tdA=\Segno0.0174533\@tdA + \DividE\@tdA by\p@ to#2% + \else + \g@tTanCotanFrom\@tdA to\T and\Tp + \@tdA\Tp\p@ \advance\@tdA -\T\p@ + \DividE\Segno2\p@ by\@tdA to#2% + \fi + \fi +\fi +\endgroup\ignorespaces}% +\def\MakeVectorFrom#1#2to#3{\edef#3{#1,#2}\ignorespaces}% +\def\CopyVect#1to#2{\edef#2{#1}\ignorespaces}% +\def\ModOfVect#1to#2{\GetCoord(#1)\t@X\t@Y +\@tempdima=\t@X\p@ \ifdim\@tempdima<\z@ \@tempdima=-\@tempdima\fi +\@tempdimb=\t@Y\p@ \ifdim\@tempdimb<\z@ \@tempdimb=-\@tempdimb\fi +\ifdim\@tempdima>\@tempdimb + \DividE\@tempdimb by\@tempdima to\@T + \@tempdimc=\@tempdima +\else + \DividE\@tempdima by\@tempdimb to\@T + \@tempdimc=\@tempdimb +\fi +\ifdim\@T\p@>\z@ + \@tempdima=\@T\p@ \@tempdima=\@T\@tempdima + \advance\@tempdima\p@ % + \@tempdimb=\p@% + \@tempcnta=5\relax + \@whilenum\@tempcnta>\z@\do{\DividE\@tempdima by\@tempdimb to\@T + \advance\@tempdimb \@T\p@ \@tempdimb=.5\@tempdimb + \advance\@tempcnta\m@ne}%\ + \@tempdimc=\@T\@tempdimc +\fi +\Numero#2\@tempdimc +\ignorespaces}% +\def\DirOfVect#1to#2{\GetCoord(#1)\t@X\t@Y +\ModOfVect#1to\@tempa +\ifdim\@tempdimc=\z@\else + \DividE\t@X\p@ by\@tempdimc to\t@X + \DividE\t@Y\p@ by\@tempdimc to\t@Y + \MakeVectorFrom\t@X\t@Y to#2\relax +\fi\ignorespaces}% +\def\ModAndDirOfVect#1to#2and#3{% +\GetCoord(#1)\t@X\t@Y +\ModOfVect#1to#2% +\DividE\t@X\p@ by\@tempdimc to\t@X \DividE\t@Y\p@ by\@tempdimc to\t@Y +\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% +\def\DistanceAndDirOfVect#1minus#2to#3and#4{% +\SubVect#2from#1to\@tempa \ModAndDirOfVect\@tempa to#3and#4\relax +\ignorespaces}% +\def\XpartOfVect#1to#2{% +\GetCoord(#1)#2\@tempa +\ignorespaces}% +\def\YpartOfVect#1to#2{% +\GetCoord(#1)\@tempa#2\relax +\ignorespaces}% +\def\DirFromAngle#1to#2{\CosOf#1to\t@X% +\SinOf#1to\t@Y\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}% +\def\ScaleVect#1by#2to#3{\GetCoord(#1)\t@X\t@Y +\@tempdima=\t@X\p@ \@tempdima=#2\@tempdima\Numero\t@X\@tempdima +\@tempdima=\t@Y\p@ \@tempdima=#2\@tempdima\Numero\t@Y\@tempdima +\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% +\def\ConjVect#1to#2{\GetCoord(#1)\t@X\t@Y +\@tempdima=-\t@Y\p@\Numero\t@Y\@tempdima +\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}% +\def\AddVect#1and#2to#3{\GetCoord(#1)\tu@X\tu@Y +\GetCoord(#2)\td@X\td@Y \@tempdima\tu@X\p@ +\advance\@tempdima\td@X\p@ \Numero\t@X\@tempdima \@tempdima\tu@Y\p@ +\advance\@tempdima\td@Y\p@ \Numero\t@Y\@tempdima +\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% +\def\SubVect#1from#2to#3{\GetCoord(#1)\tu@X\tu@Y +\GetCoord(#2)\td@X\td@Y \@tempdima\td@X\p@ +\advance\@tempdima-\tu@X\p@ \Numero\t@X\@tempdima \@tempdima\td@Y\p@ +\advance\@tempdima-\tu@Y\p@ \Numero\t@Y\@tempdima +\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% +\def\MultVect#1by{\@ifstar{\@ConjMultVect#1by}{\@MultVect#1by}}% +\def\@MultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y +\GetCoord(#2)\td@X\td@Y \@tempdima\tu@X\p@ +\@tempdimb\tu@Y\p@ +\@tempdimc=\td@X\@tempdima\advance\@tempdimc-\td@Y\@tempdimb +\Numero\t@X\@tempdimc +\@tempdimc=\td@Y\@tempdima\advance\@tempdimc\td@X\@tempdimb +\Numero\t@Y\@tempdimc +\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% +\def\@ConjMultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y +\GetCoord(#2)\td@X\td@Y \@tempdima\tu@X\p@ \@tempdimb\tu@Y\p@ +\@tempdimc=\td@X\@tempdima\advance\@tempdimc+\td@Y\@tempdimb +\Numero\t@X\@tempdimc +\@tempdimc=\td@X\@tempdimb\advance\@tempdimc-\td@Y\@tempdima +\Numero\t@Y\@tempdimc +\MakeVectorFrom\t@X\t@Y to#3\ignorespaces} +\def\DivVect#1by#2to#3{\ModAndDirOfVect#2to\@Mod and\@Dir +\DividE\p@ by\@Mod\p@ to\@Mod \ConjVect\@Dir to\@Dir +\ScaleVect#1by\@Mod to\@tempa +\MultVect\@tempa by\@Dir to#3\ignorespaces}% +\def\Arc(#1)(#2)#3{\begingroup +\@tdA=#3\p@ \ifdim\@tdA=\z@\else + \@Arc(#1)(#2)% +\fi +\endgroup\ignorespaces}% +\def\@Arc(#1)(#2){% +\ifdim\@tdA>\z@ + \let\Segno+% +\else + \@tdA=-\@tdA \let\Segno-% +\fi +\Numero\@gradi\@tdA +\ifdim\@tdA>360\p@ + \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees + and gets reduced\MessageBreak% + to the range 0--360 taking the sign into consideration}% + \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}% +\fi +\SubVect#2from#1to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun +\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY +\@@Arc +\pIIe@strokeGraph\ignorespaces}% +\def\@@Arc{% +\pIIe@moveto{\@pPunX\unitlength}{\@pPunY\unitlength}% +\ifdim\@tdA>180\p@ + \advance\@tdA-180\p@ + \Numero\@gradi\@tdA + \SubVect\@pPun from\@Cent to\@V + \AddVect\@V and\@Cent to\@sPun + \MultVect\@V by0,-1.3333333to\@V \if\Segno-\ScaleVect\@V by-1to\@V\fi + \AddVect\@pPun and\@V to\@pcPun + \AddVect\@sPun and\@V to\@scPun + \GetCoord(\@pcPun)\@pcPunX\@pcPunY + \GetCoord(\@scPun)\@scPunX\@scPunY + \GetCoord(\@sPun)\@sPunX\@sPunY + \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}% + {\@scPunX\unitlength}{\@scPunY\unitlength}% + {\@sPunX\unitlength}{\@sPunY\unitlength}% + \CopyVect\@sPun to\@pPun +\fi +\ifdim\@tdA>\z@ + \DirFromAngle\@gradi to\@Dir \if\Segno-\ConjVect\@Dir to\@Dir \fi + \SubVect\@Cent from\@pPun to\@V + \MultVect\@V by\@Dir to\@V + \AddVect\@Cent and\@V to\@sPun + \@tdA=.5\@tdA \Numero\@gradi\@tdA + \DirFromAngle\@gradi to\@Phimezzi + \GetCoord(\@Phimezzi)\@cosphimezzi\@sinphimezzi + \@tdB=1.3333333\p@ \@tdB=\@Raggio\@tdB + \@tdC=\p@ \advance\@tdC -\@cosphimezzi\p@ \Numero\@tempa\@tdC + \@tdB=\@tempa\@tdB + \DividE\@tdB by\@sinphimezzi\p@ to\@cZ + \ScaleVect\@Phimezzi by\@cZ to\@Phimezzi + \ConjVect\@Phimezzi to\@mPhimezzi + \if\Segno-% + \let\@tempa\@Phimezzi + \let\@Phimezzi\@mPhimezzi + \let\@mPhimezzi\@tempa + \fi + \SubVect\@sPun from\@pPun to\@V + \DirOfVect\@V to\@V + \MultVect\@Phimezzi by\@V to\@Phimezzi + \AddVect\@sPun and\@Phimezzi to\@scPun + \ScaleVect\@V by-1to\@V + \MultVect\@mPhimezzi by\@V to\@mPhimezzi + \AddVect\@pPun and\@mPhimezzi to\@pcPun + \GetCoord(\@pcPun)\@pcPunX\@pcPunY + \GetCoord(\@scPun)\@scPunX\@scPunY + \GetCoord(\@sPun)\@sPunX\@sPunY + \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}% + {\@scPunX\unitlength}{\@scPunY\unitlength}% + {\@sPunX\unitlength}{\@sPunY\unitlength}% +\fi} +\def\VectorArc(#1)(#2)#3{\begingroup +\@tdA=#3\p@ \ifdim\@tdA=\z@\else + \@VArc(#1)(#2)% +\fi +\endgroup\ignorespaces}% +\def\VectorARC(#1)(#2)#3{\begingroup +\@tdA=#3\p@ +\ifdim\@tdA=\z@\else + \@VARC(#1)(#2)% +\fi +\endgroup\ignorespaces}% +\def\@VArc(#1)(#2){% +\ifdim\@tdA>\z@ + \let\Segno+% +\else + \@tdA=-\@tdA \let\Segno-% +\fi \Numero\@gradi\@tdA +\ifdim\@tdA>360\p@ + \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees + and gets reduced\MessageBreak% + to the range 0--360 taking the sign into consideration}% + \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}% +\fi +\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun +\@tdE=\pIIe@FAW\@wholewidth \@tdE=\pIIe@FAL\@tdE +\Numero\@Freccia\@tdE +\DividE\@Freccia\p@ by \@Raggio\p@ to\DeltaGradi +\@tdD=\DeltaGradi\p@ +\@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD +\@tdD=\ifx\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD +\DirFromAngle\@tempa to\@Dir +\MultVect\@V by\@Dir to\@sPun +\edef\@tempA{\ifx\Segno-\m@ne\else\@ne\fi}% +\MultVect\@sPun by 0,\@tempA to\@vPun +\DirOfVect\@vPun to\@Dir +\AddVect\@sPun and #1 to \@sPun +\GetCoord(\@sPun)\@tdX\@tdY +\@tdD\ifx\Segno--\fi\DeltaGradi\p@ +\@tdD=.5\@tdD \Numero\DeltaGradi\@tdD +\DirFromAngle\DeltaGradi to\@Dird +\MultVect\@Dir by*\@Dird to\@Dir +\GetCoord(\@Dir)\@xnum\@ynum +\put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}% +\@tdE =\ifx\Segno--\fi\DeltaGradi\p@ +\advance\@tdA -\@tdE \Numero\@gradi\@tdA +\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY +\@@Arc +\pIIe@strokeGraph\ignorespaces}% +\def\@VARC(#1)(#2){% +\ifdim\@tdA>\z@ + \let\Segno+% +\else + \@tdA=-\@tdA \let\Segno-% +\fi \Numero\@gradi\@tdA +\ifdim\@tdA>360\p@ + \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees + and gets reduced\MessageBreak% + to the range 0--360 taking the sign into consideration}% + \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}% +\fi +\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun +\@tdE=\pIIe@FAW\@wholewidth \@tdE=0.8\@tdE +\Numero\@Freccia\@tdE +\DividE\@Freccia\p@ by \@Raggio\p@ to\DeltaGradi +\@tdD=\DeltaGradi\p@ \@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD +\@tdD=\ifx\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD +\DirFromAngle\@tempa to\@Dir +\MultVect\@V by\@Dir to\@sPun +\edef\@tempA{\ifx\Segno-\m@ne\else\@ne\fi}% +\MultVect\@sPun by 0,\@tempA to\@vPun +\DirOfVect\@vPun to\@Dir +\AddVect\@sPun and #1 to \@sPun +\GetCoord(\@sPun)\@tdX\@tdY +\@tdD\ifx\Segno--\fi\DeltaGradi\p@ +\@tdD=.5\@tdD \Numero\@tempB\@tdD +\DirFromAngle\@tempB to\@Dird +\MultVect\@Dir by*\@Dird to\@Dir +\GetCoord(\@Dir)\@xnum\@ynum +\put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}% +\@tdE =\DeltaGradi\p@ +\advance\@tdA -2\@tdE \Numero\@gradi\@tdA +\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY +\SubVect\@Cent from\@pPun to \@V +\edef\@tempa{\ifx\Segno-\else-\fi\@ne}% +\MultVect\@V by0,\@tempa to\@vPun +\@tdE\ifx\Segno--\fi\DeltaGradi\p@ +\Numero\@tempB{0.5\@tdE}% +\DirFromAngle\@tempB to\@Dird +\MultVect\@vPun by\@Dird to\@vPun +\DirOfVect\@vPun to\@Dir\GetCoord(\@Dir)\@xnum\@ynum +\put(\@pPunX,\@pPunY){\vector(\@xnum,\@ynum){0}} +\edef\@tempa{\ifx\Segno--\fi\DeltaGradi}% +\DirFromAngle\@tempa to \@Dir +\SubVect\@Cent from\@pPun to\@V +\MultVect\@V by\@Dir to\@V +\AddVect\@Cent and\@V to\@pPun +\GetCoord(\@pPun)\@pPunX\@pPunY +\@@Arc +\pIIe@strokeGraph\ignorespaces}% +\def\CurveBetween#1and#2WithDirs#3and#4{% +\StartCurveAt#1WithDir{#3}\relax +\CurveTo#2WithDir{#4}\CurveFinish}% +\def\StartCurveAt#1WithDir#2{% +\begingroup +\GetCoord(#1)\@tempa\@tempb +\CopyVect\@tempa,\@tempb to\@Pzero +\pIIe@moveto{\@tempa\unitlength}{\@tempb\unitlength}% +\GetCoord(#2)\@tempa\@tempb +\CopyVect\@tempa,\@tempb to\@Dzero +\DirOfVect\@Dzero to\@Dzero} +\def\ChangeDir<#1>{% +\GetCoord(#1)\@tempa\@tempb +\CopyVect\@tempa,\@tempb to\@Dzero +\DirOfVect\@Dzero to\@Dzero +\ignorespaces} +\def\CurveFinish{\pIIe@strokeGraph\endgroup\ignorespaces}% +\def\CurveTo#1WithDir#2{% +\def\@Puno{#1}\def\@Duno{#2}\DirOfVect\@Duno to\@Duno +\DistanceAndDirOfVect\@Puno minus\@Pzero to\@Chord and\@DirChord +\MultVect\@Dzero by*\@DirChord to \@Dpzero +\MultVect\@Duno by*\@DirChord to \@Dpuno +\GetCoord(\@Dpzero)\@Xpzero\@Ypzero +\GetCoord(\@Dpuno)\@Xpuno\@Ypuno +\ifdim\@Xpzero\p@=\z@ + \ifdim\@Xpuno\p@=\z@ + \@tdA=0.666666\p@ + \Numero\@Mcpzero{\@Chord\@tdA}% + \edef\@Mcpuno{\@Mcpzero}% + \else + \@tdA=0.666666\p@ + \Numero\@Mcpzero{\@Chord\@tdA}% + \SetCPmodule\@Mcpuno from\@ne\@Chord\@Dpuno% + \fi +\else + \ifdim\@Xpuno\p@=\z@ + \@tdA=0.666666\p@ + \Numero\@Mcpuno{\@Chord\@tdA}% + \SetCPmodule\@Mcpzero from\@ne\@Chord\@Dpzero% + \else + \ifdim\@Ypzero\p@=\z@ + \@tdA=0.333333\p@ + \Numero\@Mcpzero{\@Chord\@tdA}% + \ifdim\@Ypuno\p@=\z@ + \edef\@Mcpuno{\@Mcpzero}% + \fi + \else + \ifdim\@Ypuno\p@=\z@ + \@tdA=0.333333\p@ + \Numero\@Mcpuno{\@Chord\@tdA}% + \SetCPmodule\@Mcpzero from\@ne\@Chord\@Dpzero + \else + \@tdA=\@Ypzero\p@ \@tdA=\@Ypuno\@tdA + \ifdim\@tdA>\z@ + \ConjVect\@Dpuno to\@Dwpuno + \else + \edef\@Dwpuno{\@Dpuno}% + \fi + \GetCoord(\@Dwpuno)\@Xwpuno\@Ywpuno + \@tdA=\@Xpzero\p@ \@tdA=\@Ywpuno\@tdA + \@tdB=\@Xwpuno\p@ \@tdB=\@Ypzero\@tdB + \DividE\@tdB by\@tdA to\@Fact + \@tdC=\p@ \advance\@tdC-\@Fact\p@ + \ifdim\@tdC<\z@ \@tdC=-\@tdC\fi + \DividE\p@ by \@Fact\p@ to\@Fact + \@tdD=\p@ \advance\@tdD-\@Fact\p@ + \ifdim\@tdD<\z@ \@tdD=-\@tdD\fi + \ifdim\@tdD<0.0001\p@ + \def\@factzero{1}% + \def\@factuno{1}% + \else + \DividE\p@ by\@tdC to\@factzero + \DividE\p@ by\@tdD to\@factuno + \fi + \SetCPmodule\@Mcpzero from\@factzero\@Chord\@Dpzero + \SetCPmodule\@Mcpuno from\@factuno\@Chord\@Dwpuno + \fi + \fi + \fi +\fi +\ScaleVect\@Dzero by\@Mcpzero to\@CPzero +\AddVect\@Pzero and\@CPzero to\@CPzero +\ScaleVect\@Duno by\@Mcpuno to\@CPuno +\SubVect\@CPuno from\@Puno to\@CPuno +\GetCoord(\@Puno)\@XPuno\@YPuno +\GetCoord(\@CPzero)\@XCPzero\@YCPzero +\GetCoord(\@CPuno)\@XCPuno\@YCPuno +\pIIe@curveto{\@XCPzero\unitlength}{\@YCPzero\unitlength}% + {\@XCPuno\unitlength}{\@YCPuno\unitlength}% + {\@XPuno\unitlength}{\@YPuno\unitlength}% +\CopyVect\@Puno to\@Pzero +\CopyVect\@Duno to\@Dzero +\ignorespaces}% +\def\SetCPmodule#1from#2#3#4{% +\GetCoord(#4)\t@X\t@Y +\@tdA=#3\p@ +\@tdA=#2\@tdA +\@tdA=1.333333\@tdA +\@tdB=\p@ \advance\@tdB +\t@X\p@ +\DividE\@tdA by\@tdB to#1\relax +\ignorespaces}% +\def\Curve(#1)<#2>{% + \StartCurveAt#1WithDir{#2}% + \@ifnextchar\lp@r\@Curve{% + \PackageWarning{curve2e}{% + Curve specifications must contain at least two nodes!\Messagebreak + Please, control your Curve specifications\MessageBreak}}} +\def\@Curve(#1)<#2>{% + \CurveTo#1WithDir{#2}% + \@ifnextchar\lp@r\@Curve{% + \@ifnextchar[\@ChangeDir\CurveFinish}} +\def\@ChangeDir[#1]{\ChangeDir<#1>\@Curve} + +\endinput +%% +%% End of file `curve2e.sty'. |