???
[pst-anamorphosis.git] / doc / pst-anamorphosis.tex
1 %% This work may be distributed and/or modified under the
2 %% conditions of the LaTeX Project Public License, either version 1.3
3 %% of this license or (at your option) any later version.
4 %% The latest version of this license is in
5 %% http://www.latex-project.org/lppl.txt
6 %% and version 1.3 or later is part of all distributions of LaTeX
7 %% version 2003/12/01 or later.
8
9 \csname PSTANAMORPHOSISLoaded\endcsname
10 \let\PSTANAMORPHOSISLoaded\endinput
11 % Requires some packages
12 \ifx\PSTricksLoaded\endinput\else \input pstricks \fi
13 \ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
14 \def\fileversion{0.3}
15 \def\filedate{2011/10/21}
16 \message{`PSTANAMORPHOSIS' v\fileversion, \filedate}
17
18 \pstheader{anamorphosis.pro}
19
20 \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
21 \SpecialCoor
22 \psset{dimen=middle}
23
24 \pst@addfams{pst-anamorphosis}
25
26 \define@key[psset]{pst-anamorphosis}{Rmirror}{\edef\psk@Anamorphose@Rmirror{#1 }}%
27 \psset[pst-anamorphosis]{Rmirror=3}
28 %
29 %% === Options spécifiques à l'anamorphose cylindrique -------------------------
30 \define@key[psset]{pst-anamorphosis}{Xv}{\edef\psk@Anamorphose@Xv{#1 }}%
31 \define@key[psset]{pst-anamorphosis}{Yv}{\edef\psk@Anamorphose@Yv{#1 }}%
32 \psset[pst-anamorphosis]{Xv=0,Yv=-10}
33 %
34 %% === Options spécifiques à l'anamorphose conique -----------------------------
35 \define@key[psset]{pst-anamorphosis}{Zs}{\edef\psk@Anamorphose@Zs{#1 }}%
36 \define@key[psset]{pst-anamorphosis}{Zv}{\edef\psk@Anamorphose@Zv{#1 }}%
37 \psset[pst-anamorphosis]{Zs=10,Zv=50}
38 %
39 %% === Options spécifiques à l'anamorphose spherique -----------------------------
40 \define@key[psset]{pst-anamorphosis}{Zv}{\edef\psk@Anamorphose@Zv{#1 }}%
41 \psset[pst-anamorphosis]{Zv=10}
42 %
43 %% === Options spécifiques à la perspective -----------------------------
44 \define@key[psset]{pst-anamorphosis}{ua}{\edef\psk@Anamorphose@ua{#1 }}%
45 \define@key[psset]{pst-anamorphosis}{F}{\edef\psk@Anamorphose@H{#1 }}%
46 \define@key[psset]{pst-anamorphosis}{D}{\edef\psk@Anamorphose@D{#1 }}%
47 \psset[pst-anamorphosis]{ua=2,F=10,D=4}
48 %
49 %% === Options scale pour placer une image EPS ---------------------
50 \define@key[psset]{pst-anamorphosis}{scale}{\edef\psk@Anamorphose@scale{#1 }}%
51 \psset[pst-anamorphosis]{scale=1 1}
52 %
53 %% === Options translate pour placer une image PST---------------------
54 \define@key[psset]{pst-anamorphosis}{translate}{\edef\psk@Anamorphose@translate{#1 }}%
55 \psset[pst-anamorphosis]{translate=0 0}
56 %
57 %% === Option pour ne pas dessiner l'image anamorphosée---------------------
58 \newif\ifPst@Anamorphose@draw
59 \define@key[psset]{pst-anamorphosis}{drawanamorphosis}[true]{\@nameuse{Pst@Anamorphose@draw#1}}
60 \psset[pst-anamorphosis]{drawanamorphosis=true}
61 %
62 %% === Option pour ne pas dessiner l'image vue ---------------------
63 % 23 mars 2013
64 \newif\ifPst@Anamorphose@image
65 \define@key[psset]{pst-anamorphosis}{image}[false]{\@nameuse{Pst@Anamorphose@image#1}}
66 \psset[pst-anamorphosis]{image=true}
67 %% Reservation des noms de macros
68 % adaptation de la macro de pst-solides3d
69 % #1=type de reservation associee a une liste qui
70 % doit forcement etre du type pst@anamorphosis@list@#1
71 \def\pst@anamorphosis@reservednames#1{%
72 \edef\@tempa{\csname pst@anamorphosis@list@#1\endcsname}
73 \@for \name:=\@tempa\do{%
74 \expandafter\def\csname pst@anamorphosis@#1@\name\endcsname{}%
75 }}
76 % nature de l'anamorphose
77 \def\pst@anamorphosis@list@type{%
78 cylindrical,conical,spherical,perspective,inverseperspective,cylindricalV}
79 %
80 %% Reservation de macros correspondants aux types
81 \pst@anamorphosis@reservednames{type}
82 \define@key[psset]{pst-anamorphosis}{type}{%
83 \ifcsname pst@anamorphosis@type@#1\endcsname
84 \def\psk@anamorphosis@type{pst-#1}%
85 \else
86 \@pstrickserr{The anamorphosis #1 is not defined, the anamorphosis by default is
87 drawn}{}%
88 \fi}
89 % anamorphose par defaut
90 \psset[pst-anamorphosis]{type=cylindrical}%
91 %
92 \pst@def{optionsanamorphosis}<%
93 /unit {\pst@number\psunit mul } def
94 /Xv \psk@Anamorphose@Xv unit def
95 /Yv \psk@Anamorphose@Yv unit def
96 /Zv \psk@Anamorphose@Zv unit def
97 /Zs \psk@Anamorphose@Zs unit def
98 /Rmirror \psk@Anamorphose@Rmirror unit def
99 /R Rmirror dup mul def
100 /ua \psk@Anamorphose@ua unit def
101 /yH \psk@Anamorphose@H unit def
102 /xD \psk@Anamorphose@D unit def
103 /Anamorphose {\psk@anamorphosis@type} def
104 \psk@Anamorphose@scale
105 % pour tenir d'un changement d'échelle global
106 /s@@y exch \pst@number\psyunit mul 28.45274 div def
107 /s@@x exch \pst@number\psxunit mul 28.45274 div def
108 >
109
110 \def\psanamorphosis{\def\pst@par{}\pst@object{psanamorphosis}}
111 \def\psanamorphosis@i{\@ifnextchar({\psanamorphosis@do}{\psanamorphosis@do(0,0)}}
112 \def\psanamorphosis@do(#1)#2{% #2 = fichier.eps à transformer
113 \begingroup%
114 \use@par%
115 \begin@SpecialObj%
116 \pst@@getcoor{#1}%
117 \addto@pscode{
118 \pst@coor /t@@y ED /t@@x ED % Translate
119 /fichier (#2) def
120 \tx@optionsanamorphosis
121 \ifPst@Anamorphose@image
122 Image
123 \fi
124 \ifPst@Anamorphose@draw
125 tx@anamorphosisPathDict begin
126 gsave
127 /showpage {} def
128 fichier run
129 grestore
130 end
131 \fi
132 }%
133 \end@SpecialObj%
134 \endgroup%
135 }

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.