X-Git-Url: https://melusine.eu.org/syracuse/G/git/?a=blobdiff_plain;f=doc%2Fpst-anamorphosis.tex;fp=doc%2Fpst-anamorphosis.tex;h=a63dfb7cd41e9d13f035d8f2376bc03ca83bd9ff;hb=b5bff73d413bccd45ba53b356f64421234755f4a;hp=0000000000000000000000000000000000000000;hpb=20addd135e50ad5d8338c5f2f295095d4ac6b408;p=pst-anamorphosis.git diff --git a/doc/pst-anamorphosis.tex b/doc/pst-anamorphosis.tex new file mode 100644 index 0000000..a63dfb7 --- /dev/null +++ b/doc/pst-anamorphosis.tex @@ -0,0 +1,128 @@ +%% 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. + +\csname PSTANAMORPHOSISLoaded\endcsname +\let\PSTANAMORPHOSISLoaded\endinput +% Requires some packages +\ifx\PSTricksLoaded\endinput\else \input pstricks \fi +\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi +\def\fileversion{0.21} +\def\filedate{2011/10/14} +\message{`PSTANAMORPHOSIS' v\fileversion, \filedate} + +\pstheader{anamorphosis.pro} + +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax +\SpecialCoor +\psset{dimen=middle} + +\pst@addfams{pst-anamorphosis} + +\define@key[psset]{pst-anamorphosis}{Rmirror}{\edef\psk@Anamorphose@Rmirror{#1 }}% +\psset[pst-anamorphosis]{Rmirror=3} +% +%% === Options spécifiques à l'anamorphose cylindrique ------------------------- +\define@key[psset]{pst-anamorphosis}{Xv}{\edef\psk@Anamorphose@Xv{#1 }}% +\define@key[psset]{pst-anamorphosis}{Yv}{\edef\psk@Anamorphose@Yv{#1 }}% +\psset[pst-anamorphosis]{Xv=0,Yv=-10} +% +%% === Options spécifiques à l'anamorphose conique ----------------------------- +\define@key[psset]{pst-anamorphosis}{Zs}{\edef\psk@Anamorphose@Zs{#1 }}% +\define@key[psset]{pst-anamorphosis}{Zv}{\edef\psk@Anamorphose@Zv{#1 }}% +\psset[pst-anamorphosis]{Zs=10,Zv=50} +% +%% === Options spécifiques à l'anamorphose spherique ----------------------------- +\define@key[psset]{pst-anamorphosis}{Zv}{\edef\psk@Anamorphose@Zv{#1 }}% +\psset[pst-anamorphosis]{Zv=10} +% +%% === Options spécifiques à la perspective ----------------------------- +\define@key[psset]{pst-anamorphosis}{ua}{\edef\psk@Anamorphose@ua{#1 }}% +\define@key[psset]{pst-anamorphosis}{F}{\edef\psk@Anamorphose@H{#1 }}% +\define@key[psset]{pst-anamorphosis}{D}{\edef\psk@Anamorphose@D{#1 }}% +\psset[pst-anamorphosis]{ua=2,F=10,D=4} +% +%% === Options scale pour placer une image EPS --------------------- +\define@key[psset]{pst-anamorphosis}{scale}{\edef\psk@Anamorphose@scale{#1 }}% +\psset[pst-anamorphosis]{scale=1 1} +% +%% === Options translate pour placer une image PST--------------------- +\define@key[psset]{pst-anamorphosis}{translate}{\edef\psk@Anamorphose@translate{#1 }}% +\psset[pst-anamorphosis]{translate=0 0} +% +%% === Option pour ne pas dessiner l'image anamorphosée--------------------- +\newif\ifPst@Anamorphose@draw +\define@key[psset]{pst-anamorphosis}{drawanamorphosis}[true]{\@nameuse{Pst@Anamorphose@draw#1}} +\psset[pst-anamorphosis]{drawanamorphosis=true} +% +%% Reservation des noms de macros +% adaptation de la macro de pst-solides3d +% #1=type de reservation associee a une liste qui +% doit forcement etre du type pst@anamorphosis@list@#1 +\def\pst@anamorphosis@reservednames#1{% +\edef\@tempa{\csname pst@anamorphosis@list@#1\endcsname} +\@for \name:=\@tempa\do{% + \expandafter\def\csname pst@anamorphosis@#1@\name\endcsname{}% +}} +% nature de l'anamorphose +\def\pst@anamorphosis@list@type{% + cylindrical,conical,spherical,perspective,inverseperspective} +% +%% Reservation de macros correspondants aux types +\pst@anamorphosis@reservednames{type} +\define@key[psset]{pst-anamorphosis}{type}{% + \ifcsname pst@anamorphosis@type@#1\endcsname + \def\psk@anamorphosis@type{pst-#1}% + \else + \@pstrickserr{The anamorphosis #1 is not defined, the anamorphosis by default is + drawn}{}% + \fi} +% anamorphose par defaut +\psset[pst-anamorphosis]{type=cylindrical}% +% +\pst@def{optionsanamorphosis}<% +/unit {\pst@number\psunit mul } def +/Xv \psk@Anamorphose@Xv unit def +/Yv \psk@Anamorphose@Yv unit def +/Zv \psk@Anamorphose@Zv unit def +/Zs \psk@Anamorphose@Zs unit def +/Rmirror \psk@Anamorphose@Rmirror unit def +/R Rmirror dup mul def +/ua \psk@Anamorphose@ua unit def +/yH \psk@Anamorphose@H unit def +/xD \psk@Anamorphose@D unit def +/Anamorphose {\psk@anamorphosis@type} def +\psk@Anamorphose@scale +% pour tenir d'un changement d'échelle global + /s@@y exch \pst@number\psyunit mul 28.45274 div def + /s@@x exch \pst@number\psxunit mul 28.45274 div def +> + +\def\psanamorphosis{\def\pst@par{}\pst@object{psanamorphosis}} +\def\psanamorphosis@i{\@ifnextchar({\psanamorphosis@do}{\psanamorphosis@do(0,0)}} +\def\psanamorphosis@do(#1)#2{% #1 = fichier.eps à transformer +\begingroup% +\use@par% + \begin@SpecialObj% + \pst@@getcoor{#1}% + \addto@pscode{ + \pst@coor /t@@y ED /t@@x ED % Translate + /fichier (#2) def + \tx@optionsanamorphosis + Image +\ifPst@Anamorphose@draw + tx@anamorphosisPathDict begin + gsave + /showpage {} def + fichier run + grestore + end +\fi + }% + \end@SpecialObj% +\endgroup% +} \ No newline at end of file