%% %% This is file `ellipse.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% ellipse.dtx (with options: `package') %% %% Copyright (C) 2015 %% Daan Leijen %% %% 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". %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{ellipse} [2004/11/05 v1.0 .dtx ellipse file] \RequirePackage{pict2e} \providecommand*\pIIe@csedef[1]{\expandafter\edef\csname #1\endcsname} \newcommand*\pIIe@ellip@csqrt[3]{% \@ovxx=#1\relax \ifdim\@ovxx<\z@\@ovxx-\@ovxx\fi \@ovyy=#2\relax \ifdim\@ovyy<\z@\@ovyy-\@ovyy\fi \edef\pIIe@csname{@csqrt(\number\@ovxx,\number\@ovyy)}% \expandafter\ifx\csname\pIIe@csname\endcsname\relax \pIIe@ellip@csqrt@% \pIIe@csedef{\pIIe@csname}{\the\dimen@}% #3\dimen@ \else #3\dimexpr\csname\pIIe@csname\endcsname\relax \fi } \newcommand*\pIIe@ellip@csqrt@{% \@ovdx\@ovxx \advance\@ovdx by \@ovyy \dimen@0.7071067\@ovdx \ifdim\dimen@<\@ovyy\dimen@\@ovyy\fi \ifdim\dimen@<\@ovxx\dimen@\@ovxx\fi \ifdim\@ovdx<128\p@ \edef\@tempa{\strip@pt\@ovxx}% \@ovxx\@tempa\@ovxx \edef\@tempa{\strip@pt\@ovyy}% \@ovyy\@tempa\@ovyy \advance\@ovxx by \@ovyy \advance\dimen@ by \dimexpr1pt * \@ovxx/\dimen@\relax \divide\dimen@ by 2% \advance\dimen@ by \dimexpr1pt * \@ovxx/\dimen@\relax \divide\dimen@ by 2% \fi } \newcommand*\pIIe@atan@{% \@tempdima\dimen@ \@tempdimb\@tempdima \ifdim\@tempdimb<\z@\@tempdimb-\@tempdimb\fi \dimen@0.0663\@tempdimb \advance\dimen@ 0.2447pt\relax \advance\@tempdimb -1pt\relax \edef\@tempa{\strip@pt\@tempdimb}% \dimen@\@tempa\dimen@ \edef\@tempa{\strip@pt\@tempdima}% \dimen@\@tempa\dimen@ \dimen@-\dimen@ \advance\dimen@ 0.7853\@tempdima } \newcommand*\pIIe@atantwo[3]{% \edef\pIIe@csname{@atan2(\number\dimexpr#1\relax,\number\dimexpr#2\relax)}% \expandafter\ifx\csname\pIIe@csname\endcsname\relax \pIIe@atantwo@{#1}{#2}{#3}% \pIIe@csedef{\pIIe@csname}{\the\dimexpr#3\relax}% \else #3\dimexpr\csname\pIIe@csname\endcsname\relax \fi } \newcommand*\pIIe@atantwo@[3]{% \@tempdima\dimexpr#2\relax \@tempdimb\dimexpr#1\relax \ifdim\@tempdima=\z@\relax \ifdim\@tempdimb>\z@\relax\dimen@90\p@ \else\ifdim\@tempdimb<\z@\relax\dimen@-90\p@ \else\dimen@0\p@ \fi\fi \else \@tempdimd\z@ \ifdim\@tempdima<\z@\relax \ifdim\@tempdimb<\z@\relax\@tempdimd-180\p@ \else\@tempdimd180\p@ \fi \fi \dimen@\dimexpr1pt * \@tempdimb/\@tempdima\relax \@tempdimc\dimen@ \ifdim\@tempdimc<\z@\relax\@tempdimc-\@tempdimc\fi \ifdim\@tempdimc>\p@\relax \dimen@\dimexpr1pt * \@tempdima/\@tempdimb\relax \ifdim\dimen@<\z@\relax\def\@tempsign{-}\else\def\@tempsign{}\fi \pIIe@atan@ \dimen@-\dimen@ \advance\dimen@ by \@tempsign1.5707pt\relax \else \pIIe@atan@ \fi \dimen@57.29578\dimen@ \advance\dimen@ by \@tempdimd \fi #3\dimen@% } \newcommand*\pIIe@noneto[2]{} \newcommand*\pIIe@ellip@sincost@[2]{% \CalculateSin{#1}% \CalculateCos{#1}% \@tempdima\UseSin{#1}\p@ \@tempdimb\UseCos{#1}\p@ \ifdim\@tempdima=\p@\relax \pIIe@csedef{@ellipsin#2}{1}% \pIIe@csedef{@ellipcos#2}{0}% \else\ifdim\@tempdima=-\p@\relax \pIIe@csedef{@ellipsin#2}{-1}% \pIIe@csedef{@ellipcos#2}{0}% \else \@tempdimc\@ellipratio\dimexpr1pt * \@tempdima/\@tempdimb\relax %\typeout{ i#2=\the\@tempdimc, sin(#1)=\the\@tempdima}% \pIIe@ellip@csqrt{\p@}{\@tempdimc}\@tempdimd \ifdim\@tempdimb<\z@\relax\@tempdimd-\@tempdimd\fi \pIIe@csedef{@ellipsin#2}{\strip@pt\dimexpr1pt * \@tempdimc/\@tempdimd\relax}% \pIIe@csedef{@ellipcos#2}{\strip@pt\dimexpr1pt * \p@/\@tempdimd\relax}% \fi\fi } \newcommand*\pIIe@ellip@sincost[2]{% %\typeout{ calc sin cos: angles (#1,#2), radii: (\the\@ovro,\the\@ovri)}% \edef\@ellipratio{\strip@pt\dimexpr1pt * \@ovro/\@ovri\relax}% \pIIe@ellip@sincost@{#1}{one}% \pIIe@ellip@sincost@{#2}{two}% %\typeout{ sincos(a=#1)=(\@ellipsinone,\@ellipcosone), sincos(a=#2)=(\@ellipsintwo,\@ellipcostwo), }% } \newcommand*\pIIe@omega[3]{% \@tempdima\csname @ellipcos#3\endcsname\@ovro \advance\@tempdima by #1\relax \@tempdimb\csname @ellipsin#3\endcsname\@ovri \advance\@tempdimb by #2\relax } \newcommand*\pIIe@omegai[1]{% \@tempdimc\csname @ellipsin#1\endcsname\@ovro \@tempdimc-\@tempdimc \@tempdimd\csname @ellipcos#1\endcsname\@ovri } \newcommand*\pIIe@ellip@kappa{% \@ovyy\@ellipsinone\p@ \@ovxx\@ellipcosone\p@ \@tempdima\@ellipcostwo\@ovyy \@tempdima-\@tempdima \advance\@tempdima by \@ellipsintwo\@ovxx \@tempdimb\@ellipcostwo\@ovxx \advance\@tempdimb by \@ellipsintwo\@ovyy \ifdim\@tempdima=\z@\relax \edef\@ellipkappa{0}% \else \dimen@\dimexpr1pt - \@tempdimb\relax \dimen@\dimexpr1pt * \dimen@/\@tempdima\relax \pIIe@ellip@csqrt{2\p@}{1.73205\dimen@}{\dimen@}% \advance\dimen@ by -\p@ \divide\dimen@ by 3% \edef\@tempa{\strip@pt\@tempdima}% \dimen@\@tempa\dimen@ \edef\@ellipkappa{\strip@pt\dimen@}% \fi %\typeout{ calculated kappa: \@ellipkappa}% } \newcommand*\pIIe@elliparc@[5]{% %\typeout{elliparc: #1, center: (#2, #3), radius (\the\@ovro, \the\@ovri),angle (#4, #5)}% \ifcase #1\relax \let\@ellip@startto\pIIe@lineto \or \let\@ellip@startto\pIIe@moveto \or \let\@ellip@startto\pIIe@noneto% \else\PackageWarning{ellipse}{Illegal initial action in \protect\elliparc: % must be one of 0 (lineto), 1 (moveto) or 2 (do nothing) but I got: #1}% \fi \ifdim\@ovro=\z@\relax\@ovri\z@\fi \ifdim\@ovri=\z@\relax \@ellip@startto{#2}{#3}% \else \pIIe@ellip@sincost{#4}{#5}% \pIIe@elliparc@draw{#2}{#3}% \fi } \newcommand*\pIIe@elliparc@t[5]{% \ifcase #1\relax \let\@ellip@startto\pIIe@lineto \or \let\@ellip@startto\pIIe@moveto \or \let\@ellip@startto\pIIe@noneto% \else\PackageWarning{ellipse}{Illegal initial action in \protect\elliparc: % must be one of 0 (lineto), 1 (moveto) or 2 (do nothing) but I got: #1}% \fi \ifdim\@ovro=\z@\relax\@ovri\z@\fi \ifdim\@ovri=\z@\relax \@ellip@startto{#2}{#3}% \else \CalculateSin{#4}\CalculateCos{#4}% \edef\@ellipsinone{\UseSin{#4}}% \edef\@ellipcosone{\UseCos{#4}}% \CalculateSin{#5}\CalculateCos{#5}% \edef\@ellipsintwo{\UseSin{#5}}% \edef\@ellipcostwo{\UseCos{#5}}% \pIIe@elliparc@draw{#2}{#3}% \fi } \newcommand*\pIIe@elliparc@draw[2]{% \pIIe@ellip@kappa% \pIIe@omega{#1}{#2}{one}% %\typeout{ point one: (\the\@tempdima,\the\@tempdimb)}% \@ellip@startto\@tempdima\@tempdimb \pIIe@omegai{one}% \advance\@tempdima by \@ellipkappa\@tempdimc \advance\@tempdimb by \@ellipkappa\@tempdimd \pIIe@add@nums\@tempdima\@tempdimb %\typeout{ control one: (\the\@tempdima,\the\@tempdimb)}% \pIIe@omega{#1}{#2}{two}% \pIIe@omegai{two}% \@tempdimc\@ellipkappa\@tempdimc \@tempdimd\@ellipkappa\@tempdimd \@tempdimc-\@tempdimc \@tempdimd-\@tempdimd \advance\@tempdimc by \@tempdima \advance\@tempdimd by \@tempdimb \pIIe@add@nums\@tempdimc\@tempdimd %\typeout{ control two: (\the\@tempdimc,\the\@tempdimd)}% \pIIe@add@CP\@tempdima\@tempdimb %\typeout{ point two: (\the\@tempdima,\the\@tempdimb)}% \pIIe@addtoGraph\pIIe@curveto@op } \newcommand*\pIIe@elliparc[7][0]{% \@ovro #4\relax \@ovri #5\relax \iffalse%dim\@ovro=\@ovri \pIIe@arc[#1]{#2}{#3}{#4}{#6}{#7} \else \ifdim \@ovro<\z@ \pIIe@badcircarg\else \ifdim \@ovri<\z@ \pIIe@badcircarg\else \@arclen #7\p@ \advance\@arclen -#6\p@ \ifdim \@arclen<\z@ \def\@tempsign{-}\else\def\@tempsign{}\fi \ifdim \@tempsign\@arclen>720\p@ \PackageWarning {ellipse}{The arc angle is reduced to -720..720}% \@whiledim \@tempsign\@arclen>720\p@ \do {\advance\@arclen-\@tempsign360\p@}% \@tempdima #6\p@ \advance\@tempdima \@arclen \edef\@angleend{\strip@pt\@tempdima}% \pIIe@@elliparc{#1}{#2}{#3}{#6}{\@angleend}% \else \pIIe@@elliparc{#1}{#2}{#3}{#6}{#7}% \fi \fi \fi \fi } \newcommand*\pIIe@@elliparc[5]{% \begingroup \ifdim \@tempsign\@arclen>90\p@ \divide\@arclen 2% \@tempdima #4\p@\advance\@tempdima by \@arclen \edef\@anglemid{\strip@pt\@tempdima}% \def\@tempa{\pIIe@@elliparc{#1}{#2}{#3}{#4}}% \expandafter\@tempa\expandafter{\@anglemid}% \def\@tempa{\pIIe@@elliparc{2}{#2}{#3}}% \expandafter\@tempa\expandafter{\@anglemid}{#5}% \else \pIIe@elliparc@{#1}{#2}{#3}{#4}{#5}% \fi \endgroup }% \newcommand*\pIIeelliparc[7][0]{% \@killglue \pIIe@elliparc[#1]{#2\unitlength}{#3\unitlength}{#4\unitlength}{#5\unitlength}{#6}{#7}% \ignorespaces% } \ifx\undefined\elliparc\else \PackageWarning{ellipse}{\protect\elliparc\space is redefined}% \fi \let\elliparc\pIIeelliparc \newcommand*\pIIeearc {\@ifstar{\@tempswatrue\pIIe@earc@}{\@tempswafalse\pIIe@earc@}} \newcommand*\pIIe@earc@[3][0,360]{\pIIe@earc@@(#1){#2}{#3}} \def\pIIe@earc@@(#1,#2)#3#4{% \if@tempswa \pIIe@moveto\z@\z@ \pIIe@elliparc{\z@}{\z@}{#3\unitlength}{#4\unitlength}{#1}{#2}% \pIIe@closepath\pIIe@fillGraph \else \pIIe@elliparc[1]{\z@}{\z@}{#3\unitlength}{#4\unitlength}{#1}{#2}% \pIIe@strokeGraph \fi} \ifx\undefined\earc\else \PackageWarning{ellipse}{\protect\earc\space is redefined}% \fi \let\earc\pIIeearc \newcommand*\pIIeellipse {\@ifstar{\@tempswatrue\pIIe@earc@}{\@tempswafalse\pIIe@earc@}} \let\ellipse\pIIeellipse \endinput %% %% End of file `ellipse.sty'.