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
|