%% %% This is file `curve2e.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% curve2e.dtx (with options: `package') %% ______________________________________________________ %% The curve2e package for LaTeX and XeLATeX %% Copyright (C) 2010 Claudio Beccari %% All rights reserved %% License information appended %% %% %% File `curve2e.dtx'. %% Copyright (C) 2005--2015 Claudio Beccari all rights reserved. %% \NeedsTeXFormat{LaTeX2e}[2014/05/01] \ProvidesPackage{curve2e}% [2015/06/19 v.1.50 Extension package for pict2e] \RequirePackage{color} \RequirePackageWithOptions{pict2e}[2014/01/01] \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 \gdef\linethickness#1{\@wholewidth#1\@halfwidth.5\@wholewidth\ignorespaces}% \newcommand\defaultlinethickness[1]{\defaultlinewidth=#1\relax \def\thicklines{\linethickness{\defaultlinewidth}}% \def\thinlines{\linethickness{.5\defaultlinewidth}}% \thinlines\ignorespaces} \def\LIne(#1){{\GetCoord(#1)\@tX\@tY \moveto(0,0) \pIIe@lineto{\@tX\unitlength}{\@tY\unitlength}\strokepath}\ignorespaces}% \def\segment(#1)(#2){\@killglue\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 \moveto(0,0) \pIIe@lineto{\d@mX\@linelen}{\d@mY\@linelen}% \strokepath \fi \endgroup\ignorespaces}% \ifx\Dashline\undefined \def\Dashline{\@ifstar{\Dashline@@}{\Dashline@}} \def\Dashline@(#1)(#2)#3{% \bgroup \countdef\NumA3254\countdef\NumB3252\relax \GetCoord(#1)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttA \GetCoord(#2)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttB \SubVect\V@ttA from\V@ttB to\V@ttC \ModOfVect\V@ttC to\DlineMod \DivideFN\DlineMod by#3 to\NumD \NumA\expandafter\Integer\NumD.?? \ifodd\NumA\else\advance\NumA\@ne\fi \NumB=\NumA \divide\NumB\tw@ \DividE\DlineMod\p@ by\NumA\p@ to\D@shMod \DividE\p@ by\NumA\p@ to \@tempa \MultVect\V@ttC by\@tempa,0 to\V@ttB \MultVect\V@ttB by 2,0 to\V@ttC \advance\NumB\@ne \edef\@mpt{\noexpand\egroup \noexpand\multiput(\V@ttA)(\V@ttC){\number\NumB}% {\noexpand\LIne(\V@ttB)}}% \@mpt\ignorespaces}% \let\Dline\Dashline \def\Dashline@@(#1)(#2)#3{\put(#1){\Dashline@(0,0)(#2){#3}}} \fi \ifx\Dotline\undefined \def\Dotline{\@ifstar{\Dotline@@}{\Dotline@}} \def\Dotline@(#1)(#2)#3{% \bgroup \countdef\NumA 3254\relax \countdef\NumB 3255\relax \GetCoord(#1)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttA \GetCoord(#2)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttB \SubVect\V@ttA from\V@ttB to\V@ttC \ModOfVect\V@ttC to\DotlineMod \DivideFN\DotlineMod by#3 to\NumD \NumA=\expandafter\Integer\NumD.?? \DivVect\V@ttC by\NumA,0 to\V@ttB \advance\NumA\@ne \edef\@mpt{\noexpand\egroup \noexpand\multiput(\V@ttA)(\V@ttB){\number\NumA}% {\noexpand\makebox(0,0){\noexpand\circle*{0.5}}}}% \@mpt\ignorespaces}% \def\Dotline@@(#1)(#2)#3{\put(#1){\Dotline@(0,0)(#2){#3}}} \fi \def\GetCoord(#1)#2#3{% \expandafter\SplitNod@\expandafter(#1)#2#3\ignorespaces} \def\isnot@polar#1:#2!!{\def\@tempOne{#2}\ifx\@tempOne\empty \expandafter\@firstoftwo\else \expandafter\@secondoftwo\fi {\SplitNod@@}{\SplitPolar@@}} \def\SplitNod@(#1)#2#3{\isnot@polar#1:!!(#1)#2#3}% \def\SplitNod@@(#1,#2)#3#4{\edef#3{#1}\edef#4{#2}}% \def\SplitPolar@@(#1:#2)#3#4{\DirFromAngle#1to\@DirA \ScaleVect\@DirA by#2to\@DirA \expandafter\SplitNod@@\expandafter(\@DirA)#3#4} \let\originalput\put \def\put(#1){\bgroup\GetCoord(#1)\@tX\@tY \edef\x{\noexpand\egroup\noexpand\originalput(\@tX,\@tY)}\x} \let\originalmultiput\multiput \let\original@multiput\@multiput \long\def\@multiput(#1)#2#3{\bgroup\GetCoord(#1)\@mptX\@mptY \edef\x{\noexpand\egroup\noexpand\original@multiput(\@mptX,\@mptY)}% \x{#2}{#3}\ignorespaces} \gdef\multiput(#1)#2{\bgroup\GetCoord(#1)\@mptX\@mptY \edef\x{\noexpand\egroup\noexpand\originalmultiput(\@mptX,\@mptY)}\x(}%) \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 \fillpath \@linelen=\@tdB \@tdA=\pIIe@FAW\@wholewidth \@tdA=\pIIe@FAL\@tdA \advance\@linelen-\@tdA \ifdim\@linelen>\z@ \moveto(0,0) \pIIe@lineto{\@xnum\@linelen}{\@ynum\@linelen}% \strokepath\fi \endgroup} \def\Vector(#1){{% \GetCoord(#1)\@tX\@tY \ifdim\@tX\p@=\z@\vector(\@tX,\@tY){\@tY} \else \vector(\@tX,\@tY){\@tX}\fi}} \def\VECTOR(#1)(#2){\begingroup \SubVect#1from#2to\@tempa \expandafter\put\expandafter(#1){\expandafter\Vector\expandafter(\@tempa)}% \endgroup\ignorespaces} \let\lp@r( \let\rp@r) \renewcommand*\polyline[1][\beveljoin]{\p@lylin@[#1]} \def\p@lylin@[#1](#2){\@killglue#1\GetCoord(#2)\d@mX\d@mY \pIIe@moveto{\d@mX\unitlength}{\d@mY\unitlength}% \@ifnextchar\lp@r{\p@lyline}{% \PackageWarning{curve2e}% {Polylines require at least two vertices!\MessageBreak Control your polyline 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}{\strokepath\ignorespaces}} \def\GraphGrid(#1,#2){\bgroup\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}% \egroup\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}% \ifdefined\dimexpr \unless\ifdefined\DividE \def\DividE#1by#2to#3{\bgroup \dimendef\Num2254\relax \dimendef\Den2252\relax \dimendef\@DimA 2250 \Num=\p@ \Den=#2\relax \ifdim\Den=\z@ \edef\x{\noexpand\endgroup\noexpand\def\noexpand#3{\strip@pt\maxdimen}}% \else \@DimA=#1\relax \edef\x{% \noexpand\egroup\noexpand\def\noexpand#3{% \strip@pt\dimexpr\@DimA*\Num/\Den\relax}}% \fi \x\ignorespaces}% \fi \unless\ifdefined\DivideFN \def\DivideFN#1by#2to#3{\DividE#1\p@ by#2\p@ to{#3}}% \fi \unless\ifdefined\MultiplY \def\MultiplY#1by#2to#3{\bgroup \dimendef\@DimA 2254 \dimendef\@DimB2255 \@DimA=#1\p@\relax \@DimB=#2\p@\relax \edef\x{% \noexpand\egroup\noexpand\def\noexpand#3{% \strip@pt\dimexpr\@DimA*\@DimB/\p@\relax}}% \x\ignorespaces}% \fi \fi \unless\ifdefined\Numero \def\Numero#1#2{\bgroup\dimen3254=#2\relax \edef\x{\noexpand\egroup\noexpand\edef\noexpand#1{% \strip@pt\dimen3254}}\x\ignorespaces}% \fi \def\g@tTanCotanFrom#1to#2and#3{% \DividE 114.591559\p@ by#1to\X@ \@tdB=\X@\p@ \countdef\I=2546\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{\bgroup% \@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@ \def\@tempA{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@ \def\@tempA{\Segno1}% \else \ifdim\@tdA=180\p@ \def\@tempA{0}% \else \ifdim\@tdA<\p@ \@tdA=\Segno0.0174533\@tdA \DividE\@tdA by\p@ to \@tempA% \else \g@tTanCotanFrom\@tdA to\T and\Tp \@tdA=\T\p@ \advance\@tdA \Tp\p@ \DividE \Segno2\p@ by\@tdA to \@tempA% \fi \fi \fi \fi \edef\endSinOf{\noexpand\egroup \noexpand\def\noexpand#2{\@tempA}\noexpand\ignorespaces}% \endSinOf}% \def\CosOf#1to#2{\bgroup% \@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@ \def\@tempA{\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\@tempA% \else \ifdim\@tdA=90\p@ \def\@tempA{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\@tempA% \fi \fi \fi \edef\endCosOf{\noexpand\egroup \noexpand\def\noexpand#2{\@tempA}\noexpand\ignorespaces}% \endCosOf}% \def\TanOf#1to#2{\bgroup% \@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@% \def\@tempA{0}% \else \ifdim\@tdA>\z@ \def\Segno{+}% \else \def\Segno{-}% \@tdA=-\@tdA \fi \ifdim\@tdA=90\p@ \def\@tempA{\Segno16383.99999}% \else \ifdim\@tdA<\p@ \@tdA=\Segno0.0174533\@tdA \DividE\@tdA by\p@ to\@tempA% \else \g@tTanCotanFrom\@tdA to\T and\Tp \@tdA\Tp\p@ \advance\@tdA -\T\p@ \DividE\Segno2\p@ by\@tdA to\@tempA% \fi \fi \fi \edef\endTanOf{\noexpand\egroup \noexpand\def\noexpand#2{\@tempA}\noexpand\ignorespaces}% \endTanOf}% \def\ArcTanOf#1to#2{\bgroup \edef\@tF{#1}\@tdF=\@tF\p@ \@tdE=57.295778\p@ \@tdD=\ifdim\@tdF>\z@ \@tdF\else -\@tdF\fi \unless\ifdim\@tdD>0.02\p@ \def\@tX{\strip@pt\dimexpr57.295778\@tdF\relax}% \else \edef\@tX{45}\relax \countdef\I 2523 \I=8\relax \@whilenum\I>0\do{\TanOf\@tX to\@tG \edef\@tG{\strip@pt\dimexpr\@tG\p@-\@tdF\relax}\relax \MultiplY\@tG by57.295778to\@tG \CosOf\@tX to\@tH \MultiplY\@tH by\@tH to\@tH \MultiplY\@tH by\@tG to \@tH \edef\@tX{\strip@pt\dimexpr\@tX\p@ - \@tH\p@\relax}\relax \advance\I\m@ne}% \fi \edef\x{\egroup\noexpand\edef\noexpand#2{\@tX}}\x\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=\z@ \ifdim\@tempdimb=\z@ \def\@T{0}\@tempdimc=\z@ \else \def\@T{0}\@tempdimc=\@tempdimb \fi \else \ifdim\@tempdima>\@tempdimb \DividE\@tempdimb by\@tempdima to\@T \@tempdimc=\@tempdima \else \DividE\@tempdima by\@tempdimb to\@T \@tempdimc=\@tempdimb \fi \fi \unless\ifdim\@tempdimc=\z@ \unless\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 \fi \Numero#2\@tempdimc \ignorespaces}% \def\DirOfVect#1to#2{\GetCoord(#1)\t@X\t@Y \ModOfVect#1to\@tempa \unless\ifdim\@tempdimc=\z@ \DividE\t@X\p@ by\@tempdimc to\t@X \DividE\t@Y\p@ by\@tempdimc to\t@Y \fi \MakeVectorFrom\t@X\t@Y to#2\ignorespaces}% \def\ModAndDirOfVect#1to#2and#3{% \GetCoord(#1)\t@X\t@Y \ModOfVect#1to#2% \ifdim\@tempdimc=\z@\else \DividE\t@X\p@ by\@tempdimc to\t@X \DividE\t@Y\p@ by\@tempdimc to\t@Y \fi \MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% \def\DistanceAndDirOfVect#1minus#2to#3and#4{% \SubVect#2from#1to\@tempa \ModAndDirOfVect\@tempa to#3and#4\ignorespaces}% \def\XpartOfVect#1to#2{% \GetCoord(#1)#2\@tempa\ignorespaces}% \def\YpartOfVect#1to#2{% \GetCoord(#1)\@tempa#2\ignorespaces}% \def\DirFromAngle#1to#2{% \CosOf#1to\t@X \SinOf#1to\t@Y \MakeVectorFrom\t@X\t@Y to#2\ignorespaces}% \def\ArgOfVect#1to#2{\bgroup\GetCoord(#1){\t@X}{\t@Y}% \def\s@gno{}\def\addflatt@ngle{0} \ifdim\t@X\p@=\z@ \ifdim\t@Y\p@=\z@ \def\ArcTan{0}% \else \def\ArcTan{90}% \ifdim\t@Y\p@<\z@\def\s@gno{-}\fi \fi \else \ifdim\t@Y\p@=\z@ \ifdim\t@X\p@<\z@ \def\ArcTan{180}% \else \def\ArcTan{0}% \fi \else \ifdim\t@X\p@<\z@% \def\addflatt@ngle{180}% \edef\t@X{\strip@pt\dimexpr-\t@X\p@}% \edef\t@Y{\strip@pt\dimexpr-\t@Y\p@}% \ifdim\t@Y\p@<\z@ \def\s@gno{-}% \edef\t@Y{-\t@Y}% \fi \fi \DivideFN\t@Y by\t@X to \t@A \ArcTanOf\t@A to\ArcTan \fi \fi \edef\ArcTan{\unless\ifx\s@gno\empty\s@gno\fi\ArcTan}% \unless\ifnum\addflatt@ngle=0\relax \edef\ArcTan{% \strip@pt\dimexpr\ArcTan\p@\ifx\s@gno\empty-\else+\fi \addflatt@ngle\p@\relax}% \fi \edef\x{\noexpand\egroup\noexpand\edef\noexpand#2{\ArcTan}}% \x\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@ \unless\ifdim\@tdA=\z@ \@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 \strokepath\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 \DividE\@tdE by \@Raggio\unitlength 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 \strokepath\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 \DividE\@tdE by \@Raggio\unitlength to\DeltaGradi \@tdD=\DeltaGradi\p@ \@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD \@tdD=\if\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD \DirFromAngle\@tempa to\@Dir \MultVect\@V by\@Dir to\@sPun% corrects the end point \edef\@tempA{\if\Segno--\fi1}% \MultVect\@sPun by 0,\@tempA to\@vPun \DirOfVect\@vPun to\@Dir \AddVect\@sPun and #1 to \@sPun \GetCoord(\@sPun)\@tdX\@tdY \@tdD\if\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}}% end point arrowt ip \@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{\if\Segno-\else-\fi\@ne}% \MultVect\@V by0,\@tempa to\@vPun \@tdE\if\Segno--\fi\DeltaGradi\p@ \Numero\@tempB{0.5\@tdE}% \DirFromAngle\@tempB to\@Dird \MultVect\@vPun by\@Dird to\@vPun% corrects the starting point \DirOfVect\@vPun to\@Dir\GetCoord(\@Dir)\@xnum\@ynum \put(\@pPunX,\@pPunY){\vector(\@xnum,\@ynum){0}}% starting point arrow tip \edef\@tempa{\if\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 \strokepath\ignorespaces}% \def\CurveBetween#1and#2WithDirs#3and#4{% \StartCurveAt#1WithDir{#3}\relax \CurveTo#2WithDir{#4}\CurveFinish\ignorespaces}% \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{\strokepath\endgroup\ignorespaces}% \def\FillCurve{\fillpath\endgroup\ignorespaces} \def\CurveEnd{\fillstroke\endgroup\ignorespaces} \def\CbezierTo#1WithDir#2AndDists#3And#4{% \GetCoord(#1)\@tX\@tY \MakeVectorFrom\@tX\@tY to\@Puno \GetCoord(#2)\@tX\@tY \MakeVectorFrom\@tX\@tY to \@Duno \DirOfVect\@Duno to\@Duno \ScaleVect\@Dzero by#3to\@Czero \AddVect\@Pzero and\@Czero to\@Czero \ScaleVect\@Duno by-#4to \@Cuno \AddVect\@Puno and\@Cuno to \@Cuno \GetCoord(\@Czero)\@XCzero\@YCzero \GetCoord(\@Cuno)\@XCuno\@YCuno \GetCoord(\@Puno)\@XPuno\@YPuno \pIIe@curveto{\@XCzero\unitlength}{\@YCzero\unitlength}% {\@XCuno\unitlength}{\@YCuno\unitlength}% {\@XPuno\unitlength}{\@YPuno\unitlength}% \CopyVect\@Puno to\@Pzero \CopyVect\@Duno to\@Dzero \ignorespaces}% \def\CbezierBetween#1And#2WithDirs#3And#4UsingDists#5And#6{% \StartCurveAt#1WithDir{#3}\relax \CbezierTo#2WithDir#4AndDists#5And{#6}\CurveFinish} \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)\@DXpzero\@DYpzero \GetCoord(\@Dpuno)\@DXpuno\@DYpuno \DivideFN\@Chord by2 to\@semichord \ifdim\@DXpzero\p@=\z@ \@tdA=1.333333\p@ \Numero\@KCzero{\@semichord\@tdA}% \fi \ifdim\@DYpzero\p@=\z@ \@tdA=1.333333\p@ \Numero\@Kpzero{\@semichord\@tdA}% \fi \unless\ifdim\@DXpzero\p@=\z@ \unless\ifdim\@DYpzero\p@=\z@ \edef\@CosDzero{\ifdim\@DXpzero\p@<\z@ -\fi\@DXpzero}% \edef\@SinDzero{\ifdim\@DYpzero\p@<\z@ -\fi\@DYpzero}% \@tdA=\@semichord\p@ \@tdA=1.333333\@tdA \DividE\@tdA by\@SinDzero\p@ to \@KCzero \@tdA=\dimexpr(\p@-\@CosDzero\p@) \DividE\@KCzero\@tdA by\@SinDzero\p@ to \@KCzero \fi \fi \ScaleVect\@Dzero by\@KCzero to\@CPzero \AddVect\@Pzero and\@CPzero to\@CPzero \ifdim\@DXpuno\p@=\z@ \@tdA=-1.333333\p@ \Numero\@KCuno{\@semichord\@tdA}% \fi \ifdim\@DYpuno\p@=\z@ \@tdA=-1.333333\p@ \Numero\@KCuno{\@semichord\@tdA}% \fi \unless\ifdim\@DXpuno\p@=\z@ \unless\ifdim\@DYpuno\p@=\z@ \edef\@CosDuno{\ifdim\@DXpuno\p@<\z@ -\fi\@DXpuno}% \edef\@SinDuno{\ifdim\@DYpuno\p@<\z@ -\fi\@DYpuno}% \@tdA=\@semichord\p@ \@tdA=-1.333333\@tdA \DividE\@tdA by \@SinDuno\p@ to \@KCuno \@tdA=\dimexpr(\p@-\@CosDuno\p@) \DividE\@KCuno\@tdA by\@SinDuno\p@ to \@KCuno \fi \fi \ScaleVect\@Duno by\@KCuno to\@CPuno \AddVect\@Puno and\@CPuno 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\Curve{\@ifstar{\let\fillstroke\fillpath\Curve@}% {\let\fillstroke\strokepath\Curve@}} \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\CurveEnd}} \def\@ChangeDir[#1]{\ChangeDir<#1>\@Curve} %% %% Copyright 2005-2015 Claudio Beccari %% %% Distributable under the LaTeX Project Public License, %% version 1.3c or higher (your choice). The latest version of %% this license is at: http://www.latex-project.org/lppl.txt %% %% This work is "author-maintained" %% %% This work consists of this file curve2e.dtx, a README file %% and the derived files curve2e.sty and curve2e.pdf. %% %% %% End of file `curve2e.sty'.