summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pst-moire/pst-moire.tex
blob: 452f616976e1dc13671240bfbbd9bd90cf8e5e13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                                                   %%
%% This is file `pst-moire.tex'                                      %%
%%                                                                   %%
%% IMPORTANT NOTICE:                                                 %%
%%                                                                   %%
%% Package `pst-moire'                                               %%
%%                                                                   %%
%% Jürgen Gilg, Manuel Luque, Jean-Michel Sarlat                     %%
%%                                                                   %%
%% Copyright (C) 2018                                                %%
%%                                                                   %%
%% This program can redistributed and/or modified under              %%
%% the terms of the LaTeX Project Public License                     %%
%% Distributed from CTAN archives in directory                       %%
%% macros/latex/base/lppl.txt; either version 1.3c of                %%
%% the License, or (at your option) any later version.               %%
%%                                                                   %%
%% DESCRIPTION:                                                      %%
%%   `pst-moire' is a PSTricks package to draw moire patterns        %%
%%                                                                   %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\fileversion{1.0}%
\def\filedate{2018/10/28}%
\message{`PST-MOIRE v\fileversion, \filedate\space (ML)}%
\csname PSTMoireLoaded\endcsname
% Requires PSTricks, pst-xkey and pst-node packages
\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi
\ifx\MultidoLoaded\endinput\else\input multido.tex \fi
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
%
\pstheader{pst-moire.pro}
%
\pst@addfams{pst-moire}
\define@key[psset]{pst-moire}{Rmax}{\edef\psk@moirage@R{#1}} % en cm
\define@key[psset]{pst-moire}{scale}{\edef\psk@moirage@scale{#1}} % echelle
\define@key[psset]{pst-moire}{Alpha}{\edef\psk@moirage@Alpha{#1}} % pente des traits pour Gauss en degrés
\define@key[psset]{pst-moire}{rotate}{\edef\psk@moirage@rot{#1 }} % rotation de la grille
\define@key[psset]{pst-moire}{E}{\edef\psk@moirage@E{#1 }} % espacement entre 2 traits de Gauss
%
\psset{Rmax=6,scale=1,Alpha=70,rotate=0,E=0.25}
%
\def\variablesMoirages{%
 /R \psk@moirage@R\space def
 /reduction {\psk@moirage@scale\space mul} def
 /unit {\pst@number\psunit mul reduction} def
 /moire  {\psk@moire@type} def
 /rot \psk@moirage@rot def
 /Runit R unit def
 /E1 \psk@moirage@E def
 /circle { newpath 0 0 radius 0 360 arc closepath} def
 /NombreTraits  Runit \pst@number\psrunit div 10 mul cvi def
 /NombreTraitsLinear Runit 2.845 div cvi def
 /reduc \psk@moirage@scale\space def
 /Alpha \psk@moirage@Alpha\space def
 /m Alpha dup sin exch cos div def % tan(Alpha)
 /linecolor {\pst@usecolor\pslinecolor} def
 /linewidth {\pst@number\pslinewidth SLW} def
 /mm {\pst@number\psunit 10 div} bind def % le millimetre
 /DotSize  {\psk@dotsize} def
 /DotStyle {\@nameuse{psds@\psk@dotstyle}} def
 }
%% 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@moire@list@#1
\def\pst@moire@reservednames#1{%
\edef\@tempa{\csname pst@moire@list@#1\endcsname}
\@for \name:=\@tempa\do{%
  \expandafter\def\csname pst@moire@#1@\name\endcsname{}%
}}
% nature de l'anamorphose
\def\pst@moire@list@type{%
  circle,Fresnel,radial,square,Gauss,Newton,Bouasse,linear,dot,chess}
%
%% Reservation de macros correspondants aux types
\pst@moire@reservednames{type}
\define@key[psset]{pst-moire}{type}{%
 \ifcsname pst@moire@type@#1\endcsname
   \def\psk@moire@type{pst-#1}%
 \else
    \@pstrickserr{The moire #1 is not defined, the moire by default is
    drawn}{}%
 \fi}
% anamorphose par defaut
\psset[pst-moire]{type=Fresnel}%
%
\def\psmoire{\def\pst@par{}\pst@object{psmoire}}
\def\psmoire@i{\@ifnextchar({\psmoire@do}{\psmoire@do(0,0)}}
\def\psmoire@do(#1){%
\begingroup%
\use@par%
  \begin@SpecialObj%
  \pst@@getcoor{#1}%
    \addto@pscode{
 moireDict begin
  \variablesMoirages
  \pst@coor  translate
 rot rotate
  \psk@moire@type\space
 end
    }%
  \end@SpecialObj%
\endgroup%
}
\catcode`\@=\PstAtCode\relax
%% END: pst-moire.tex
\endinput