| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
\expandafter\ifx\csname ifcsname\endcsname\relax |
|---|
| 8 |
\newlinechar`\^^J |
|---|
| 9 |
\message{^^J*****************************************} |
|---|
| 10 |
\message{etex is needed to work with pst-solides3d} |
|---|
| 11 |
\message{*****************************************} |
|---|
| 12 |
\catcode`\ =11\relax |
|---|
| 13 |
\Compile With etex Please |
|---|
| 14 |
\fi |
|---|
| 15 |
\csname PSTSOLIDESIIIDLoaded\endcsname |
|---|
| 16 |
\let\PSTSOLIDESIIIDLoaded\endinput |
|---|
| 17 |
|
|---|
| 18 |
\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi |
|---|
| 19 |
\ifx\PSTnodesLoaded\endinput\else\input pst-node \fi |
|---|
| 20 |
\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi |
|---|
| 21 |
\ifx\MultidoLoaded\endinput\else\input multido.tex \fi |
|---|
| 22 |
|
|---|
| 23 |
\def\fileversion{4.10} |
|---|
| 24 |
\def\filedate{2008/07/24} |
|---|
| 25 |
\message{`PSTSOLIDESIIID' v\fileversion, \filedate} |
|---|
| 26 |
|
|---|
| 27 |
\pstheader{solides.pro} |
|---|
| 28 |
|
|---|
| 29 |
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax |
|---|
| 30 |
\pst@addfams{pst-solides3d} |
|---|
| 31 |
\SpecialCoor |
|---|
| 32 |
|
|---|
| 33 |
|
|---|
| 34 |
|
|---|
| 35 |
|
|---|
| 36 |
|
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 |
|
|---|
| 40 |
|
|---|
| 41 |
|
|---|
| 42 |
\define@key[psset]{pst-solides3d}{viewpoint}{\def\pst@solides@viewpoint{#1}} |
|---|
| 43 |
\psset[pst-solides3d]{viewpoint=10 10 10} |
|---|
| 44 |
\define@key[psset]{pst-solides3d}{Decran}{\def\pst@solides@Decran{#1}} |
|---|
| 45 |
\define@key[psset]{pst-solides3d}{RotX}{\def\psk@solides@RotX{#1}} |
|---|
| 46 |
\define@key[psset]{pst-solides3d}{RotY}{\def\psk@solides@RotY{#1}} |
|---|
| 47 |
\define@key[psset]{pst-solides3d}{RotZ}{\def\psk@solides@RotZ{#1}} |
|---|
| 48 |
\psset[pst-solides3d]{RotZ=0,RotX=0,RotY=0,Decran=50} |
|---|
| 49 |
|
|---|
| 50 |
\define@key[psset]{pst-solides3d}{resolution}{\def\pst@solides@resolution{#1}} |
|---|
| 51 |
\define@key[psset]{pst-solides3d}{no}{\def\pst@solides@no{#1}} |
|---|
| 52 |
\define@key[psset]{pst-solides3d}{phi}{\def\pst@solides@phi{#1}} |
|---|
| 53 |
\define@key[psset]{pst-solides3d}{theta}{\def\pst@solides@theta{#1}} |
|---|
| 54 |
\define@key[psset]{pst-solides3d}{r0}{\def\pst@solides@rO{#1}} |
|---|
| 55 |
\define@key[psset]{pst-solides3d}{r1}{\def\pst@solides@rI{#1}} |
|---|
| 56 |
\define@key[psset]{pst-solides3d}{R}{\def\pst@solides@R{#1}} |
|---|
| 57 |
\define@key[psset]{pst-solides3d}{r}{\def\pst@solides@r{#1}} |
|---|
| 58 |
\define@key[psset]{pst-solides3d}{a}{\def\pst@solides@a{#1}} |
|---|
| 59 |
\define@key[psset]{pst-solides3d}{b}{\def\pst@solides@b{#1}} |
|---|
| 60 |
\define@key[psset]{pst-solides3d}{c}{\def\pst@solides@c{#1}} |
|---|
| 61 |
\define@key[psset]{pst-solides3d}{h}{\def\pst@solides@h{#1}} |
|---|
| 62 |
\define@key[psset]{pst-solides3d}{chanfreincoeff}{\def\pst@solides@chanfreincoeff{#1}} |
|---|
| 63 |
\define@key[psset]{pst-solides3d}{trunccoeff}{\def\pst@solides@trunccoeff{#1}} |
|---|
| 64 |
\define@key[psset]{pst-solides3d}{affinagecoeff}{\def\pst@solides@affinagecoeff{#1}} |
|---|
| 65 |
\define@key[psset]{pst-solides3d}{dualregcoeff}{\def\pst@solides@dualregcoeff{#1}} |
|---|
| 66 |
\define@key[psset]{pst-solides3d}{intersectiontype}{\def\pst@solides@intersectiontype{#1}} |
|---|
| 67 |
|
|---|
| 68 |
|
|---|
| 69 |
\psset[pst-solides3d]{R=4,r1=4,r0=1.5,r=2,no=0,a=4,b=a,c=a,h=6,phi=0,theta=90,resolution=36, |
|---|
| 70 |
trunccoeff=.25,chanfreincoeff=.8,affinagecoeff=.8,dualregcoeff=1,intersectiontype=-1} |
|---|
| 71 |
|
|---|
| 72 |
|
|---|
| 73 |
|
|---|
| 74 |
\define@key[psset]{pst-solides3d}{base}{\def\pst@solides@base{#1}} |
|---|
| 75 |
\psset[pst-solides3d]{base=-1 -1 1 -1 0 1} |
|---|
| 76 |
\define@key[psset]{pst-solides3d}{axe}{\def\pst@solides@axe{#1}} |
|---|
| 77 |
\psset[pst-solides3d]{axe=0 0 1} |
|---|
| 78 |
\define@key[psset]{pst-solides3d}{plansection}{\def\pst@solides@plansection{#1}} |
|---|
| 79 |
\psset[pst-solides3d]{plansection=} |
|---|
| 80 |
\define@key[psset]{pst-solides3d}{plansepare}{\def\pst@solides@plansepare{#1}} |
|---|
| 81 |
\psset[pst-solides3d]{plansepare=} |
|---|
| 82 |
\define@key[psset]{pst-solides3d}{intersectionlinewidth}{\def\pst@solides@intersectionlinewidth{#1}} |
|---|
| 83 |
\psset[pst-solides3d]{intersectionlinewidth=1} |
|---|
| 84 |
\define@key[psset]{pst-solides3d}{intersectioncolor}{\def\pst@solides@intersectioncolor{#1}} |
|---|
| 85 |
\psset[pst-solides3d]{intersectioncolor=(rouge)} |
|---|
| 86 |
\define@key[psset]{pst-solides3d}{intersectionplan}{\def\pst@solides@intersectionplan{#1}} |
|---|
| 87 |
\psset[pst-solides3d]{intersectionplan=[0 0 1 0]} |
|---|
| 88 |
\define@key[psset]{pst-solides3d}{definition}{\def\pst@solides@definition{#1}} |
|---|
| 89 |
\psset[pst-solides3d]{definition=} |
|---|
| 90 |
\define@key[psset]{pst-solides3d}{args}{\def\pst@solides@args{#1}} |
|---|
| 91 |
\psset[pst-solides3d]{args=} |
|---|
| 92 |
\define@key[psset]{pst-solides3d}{transform}{\def\pst@solides@transform{#1}} |
|---|
| 93 |
\psset[pst-solides3d]{transform=} |
|---|
| 94 |
|
|---|
| 95 |
\def\Section{ |
|---|
| 96 |
R h 2 div neg |
|---|
| 97 |
R h 2 div |
|---|
| 98 |
r h 2 div |
|---|
| 99 |
r h 2 div neg |
|---|
| 100 |
} |
|---|
| 101 |
\define@key[psset]{pst-solides3d}{section}{\def\pst@solides@section{#1}} |
|---|
| 102 |
\psset[pst-solides3d]{section=\Section} |
|---|
| 103 |
|
|---|
| 104 |
|
|---|
| 105 |
\define@key[psset]{pst-solides3d}{decal}{\def\pst@solides@decal{#1}} |
|---|
| 106 |
\psset[pst-solides3d]{decal=-2} |
|---|
| 107 |
|
|---|
| 108 |
|
|---|
| 109 |
|
|---|
| 110 |
|
|---|
| 111 |
\define@key[psset]{pst-solides3d}{incolor}{\pst@getcolor{#1}\psincolor} |
|---|
| 112 |
\psset[pst-solides3d]{incolor=green} |
|---|
| 113 |
|
|---|
| 114 |
|
|---|
| 115 |
\define@key[psset]{pst-solides3d}{color1}{\pst@getcolor{#1}\pscolora} |
|---|
| 116 |
\psset[pst-solides3d]{color1=cyan} |
|---|
| 117 |
|
|---|
| 118 |
\define@key[psset]{pst-solides3d}{color2}{\pst@getcolor{#1}\pscolorb} |
|---|
| 119 |
\psset[pst-solides3d]{color2=magenta} |
|---|
| 120 |
|
|---|
| 121 |
\define@key[psset]{pst-solides3d}{color3}{\pst@getcolor{#1}\pscolorc} |
|---|
| 122 |
\psset[pst-solides3d]{color3=blue} |
|---|
| 123 |
|
|---|
| 124 |
\define@key[psset]{pst-solides3d}{color4}{\pst@getcolor{#1}\pscolord} |
|---|
| 125 |
\psset[pst-solides3d]{color4=red} |
|---|
| 126 |
|
|---|
| 127 |
|
|---|
| 128 |
\newcount\test@mode |
|---|
| 129 |
\define@key[psset]{pst-solides3d}{mode}{ |
|---|
| 130 |
\test@mode=#1\relax |
|---|
| 131 |
\ifnum\test@mode>4 |
|---|
| 132 |
\typeout{mode must be 0,1,2,3 or 4 and not `\the\test@mode'. Value 4 forced.}\test@mode=4 |
|---|
| 133 |
\fi |
|---|
| 134 |
\edef\pst@solides@mode{\the\test@mode}} |
|---|
| 135 |
\psset[pst-solides3d]{mode=2} |
|---|
| 136 |
|
|---|
| 137 |
|
|---|
| 138 |
|
|---|
| 139 |
|
|---|
| 140 |
|
|---|
| 141 |
|
|---|
| 142 |
|
|---|
| 143 |
|
|---|
| 144 |
|
|---|
| 145 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{isolatin}[false]{} |
|---|
| 146 |
\psset{isolatin=true} |
|---|
| 147 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{affinagerm}[false]{} |
|---|
| 148 |
\psset{affinagerm=true} |
|---|
| 149 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{chanfrein}[true]{} |
|---|
| 150 |
\psset{chanfrein=false} |
|---|
| 151 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{grid}[false]{} |
|---|
| 152 |
\psset{grid=true} |
|---|
| 153 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{dualreg}[true]{} |
|---|
| 154 |
\psset{dualreg=false} |
|---|
| 155 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{geode}[true]{} |
|---|
| 156 |
\psset{geode=false} |
|---|
| 157 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{hollow}[true]{} |
|---|
| 158 |
\psset{hollow=false} |
|---|
| 159 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{biface}[true]{} |
|---|
| 160 |
\psset{biface=true} |
|---|
| 161 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{axesboxed}[true]{} |
|---|
| 162 |
\psset{axesboxed=false} |
|---|
| 163 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{planmarks}[true]{} |
|---|
| 164 |
\psset{planmarks=false} |
|---|
| 165 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{plangrid}[true]{} |
|---|
| 166 |
\psset{plangrid=false} |
|---|
| 167 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{showbase}[true]{} |
|---|
| 168 |
\psset{showbase=false} |
|---|
| 169 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{showBase}[true]{} |
|---|
| 170 |
\psset{showBase=false} |
|---|
| 171 |
\define@boolkey[psset]{pst-solides3d}[Pst@]{deactivatecolor}[true]{} |
|---|
| 172 |
\psset{deactivatecolor=false} |
|---|
| 173 |
|
|---|
| 174 |
|
|---|
| 175 |
\define@key[psset]{pst-solides3d}{rm}{\def\pst@solides@CoordinatesRm{#1}} |
|---|
| 176 |
\psset[pst-solides3d]{rm=} |
|---|
| 177 |
|
|---|
| 178 |
\define@key[psset]{pst-solides3d}{name}{\def\pst@solides@name{#1}} |
|---|
| 179 |
\psset[pst-solides3d]{name=} |
|---|
| 180 |
|
|---|
| 181 |
\define@key[psset]{pst-solides3d}{solidname}{\def\pst@solides@solidname{#1}} |
|---|
| 182 |
\psset[pst-solides3d]{solidname=} |
|---|
| 183 |
|
|---|
| 184 |
\define@key[psset]{pst-solides3d}{file}{\def\pst@solides@file{#1}} |
|---|
| 185 |
\psset[pst-solides3d]{file=} |
|---|
| 186 |
|
|---|
| 187 |
\define@key[psset]{pst-solides3d}{planname}{\def\pst@solides@planname{#1}} |
|---|
| 188 |
\psset[pst-solides3d]{planname=} |
|---|
| 189 |
|
|---|
| 190 |
\define@key[psset]{pst-solides3d}{load}{\def\pst@solides@load{#1}} |
|---|
| 191 |
\psset[pst-solides3d]{load=} |
|---|
| 192 |
|
|---|
| 193 |
\define@key[psset]{pst-solides3d}{fcolor}{\def\pst@solides@fcolor{#1}} |
|---|
| 194 |
\psset[pst-solides3d]{fcolor=} |
|---|
| 195 |
|
|---|
| 196 |
\define@key[psset]{pst-solides3d}{fcol}{\def\pst@solides@fcol{#1}} |
|---|
| 197 |
\psset[pst-solides3d]{fcol=} |
|---|
| 198 |
|
|---|
| 199 |
\define@key[psset]{pst-solides3d}{hue}{\def\pst@solides@hue{#1}} |
|---|
| 200 |
\psset[pst-solides3d]{hue=} |
|---|
| 201 |
\define@key[psset]{pst-solides3d}{inhue}{\def\pst@solides@inhue{#1}} |
|---|
| 202 |
\psset[pst-solides3d]{inhue=} |
|---|
| 203 |
\define@key[psset]{pst-solides3d}{inouthue}{\def\pst@solides@inouthue{#1}} |
|---|
| 204 |
\psset[pst-solides3d]{inouthue=} |
|---|
| 205 |
|
|---|
| 206 |
\define@key[psset]{pst-solides3d}{sommets}{\def\pst@solides@sommets{#1}} |
|---|
| 207 |
\psset[pst-solides3d]{sommets=} |
|---|
| 208 |
|
|---|
| 209 |
|
|---|
| 210 |
\define@key[psset]{pst-solides3d}{faces}{\def\pst@solides@faces{#1}} |
|---|
| 211 |
\psset[pst-solides3d]{faces={}} |
|---|
| 212 |
|
|---|
| 213 |
\define@key[psset]{pst-solides3d}{numfaces}{\def\pst@solides@numfaces{#1}} |
|---|
| 214 |
\psset[pst-solides3d]{numfaces=} |
|---|
| 215 |
|
|---|
| 216 |
\define@key[psset]{pst-solides3d}{trunc}{\def\pst@solides@trunc{#1}} |
|---|
| 217 |
\psset[pst-solides3d]{trunc=} |
|---|
| 218 |
|
|---|
| 219 |
\define@key[psset]{pst-solides3d}{affinage}{\def\pst@solides@affinage{#1}} |
|---|
| 220 |
\psset[pst-solides3d]{affinage=} |
|---|
| 221 |
|
|---|
| 222 |
\define@key[psset]{pst-solides3d}{num}{\def\pst@solides@num{#1}} |
|---|
| 223 |
\psset[pst-solides3d]{num=} |
|---|
| 224 |
|
|---|
| 225 |
\define@key[psset]{pst-solides3d}{show}{\def\pst@solides@show{#1}} |
|---|
| 226 |
\psset[pst-solides3d]{show=} |
|---|
| 227 |
|
|---|
| 228 |
\define@key[psset]{pst-solides3d}{ngrid}{\def\pst@solides@ngrid{#1}} |
|---|
| 229 |
\psset[pst-solides3d]{ngrid=} |
|---|
| 230 |
|
|---|
| 231 |
|
|---|
| 232 |
\define@key[psset]{pst-solides3d}{lightsrc}{\def\pst@solides@CoordinatesLight{#1}} |
|---|
| 233 |
\psset[pst-solides3d]{lightsrc=} |
|---|
| 234 |
|
|---|
| 235 |
\define@key[psset]{pst-solides3d}{lightintensity}{\def\pst@solides@lightintensity{#1}} |
|---|
| 236 |
\psset[pst-solides3d]{lightintensity=2} |
|---|
| 237 |
|
|---|
| 238 |
|
|---|
| 239 |
|
|---|
| 240 |
|
|---|
| 241 |
\expandafter\ifx\csname @latexerr\endcsname\relax |
|---|
| 242 |
\immediate\write17{We are running tex and have to define some LaTeX commands ...} |
|---|
| 243 |
\def\@fornoop#1\@@#2#3{} |
|---|
| 244 |
\long\def\@for#1:=#2\do#3{ |
|---|
| 245 |
\expandafter\def\expandafter\@fortmp\expandafter{#2} |
|---|
| 246 |
\ifx\@fortmp\@empty \else |
|---|
| 247 |
\expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi} |
|---|
| 248 |
\long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else |
|---|
| 249 |
#5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi} |
|---|
| 250 |
\long\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil |
|---|
| 251 |
\expandafter\@fornoop \else |
|---|
| 252 |
#4\relax\expandafter\@iforloop\fi#2\@@#3{#4}} |
|---|
| 253 |
\fi |
|---|
| 254 |
|
|---|
| 255 |
|
|---|
| 256 |
|
|---|
| 257 |
|
|---|
| 258 |
\def\pst@solides@reservednames#1{ |
|---|
| 259 |
\edef\@tempa{\csname pst@solides@list@#1\endcsname} |
|---|
| 260 |
\@for \name:=\@tempa\do{ |
|---|
| 261 |
\expandafter\def\csname pst@solides@#1@\name\endcsname{} |
|---|
| 262 |
}} |
|---|
| 263 |
|
|---|
| 264 |
\def\pst@solides@list@action{none,draw,draw*,draw**,writeobj,writesolid,writeoff} |
|---|
| 265 |
|
|---|
| 266 |
\pst@solides@reservednames{action} |
|---|
| 267 |
\define@key[psset]{pst-solides3d}{action}{ |
|---|
| 268 |
\ifcsname pst@solides@action@#1\endcsname |
|---|
| 269 |
\def\pst@solides@action{#1} |
|---|
| 270 |
\else |
|---|
| 271 |
\@pstrickserr{This action is not authorized, the procedure draw** is |
|---|
| 272 |
chosen by default}{} |
|---|
| 273 |
\fi} |
|---|
| 274 |
|
|---|
| 275 |
\psset[pst-solides3d]{action=draw**} |
|---|
| 276 |
|
|---|
| 277 |
|
|---|
| 278 |
\define@key[psset]{pst-solides3d}{PSfont}{\def\pst@solides@PSfont{/#1 }} |
|---|
| 279 |
\define@key[psset]{pst-solides3d}{fontsize}{\def\pst@solides@fontsize{#1 }} |
|---|
| 280 |
\psset[pst-solides3d]{PSfont=Times-Roman,fontsize=10} |
|---|
| 281 |
|
|---|
| 282 |
|
|---|
| 283 |
\def\pst@solides@list@object{ |
|---|
| 284 |
tore,cube,tetrahedron,octahedron,icosahedron,dodecahedron,sphere, |
|---|
| 285 |
cylindre,cylindrecreux,cone,conecreux,tronccone,troncconecreux, |
|---|
| 286 |
grille,prisme,anneau,parallelepiped,prismecreux,ruban,calottesphere,face, |
|---|
| 287 |
Surface,surface,calottespherecreuse,polygoneregulier,fusion,new,chemin,courbeR2,courbe, |
|---|
| 288 |
surfaceparametree,texte,trigospherique,vecteur,line,objfile,datfile,surface*, |
|---|
| 289 |
plan,offfile,geode,load,plantype,point,pie,droite,polygone,cercle,rightangle} |
|---|
| 290 |
|
|---|
| 291 |
|
|---|
| 292 |
\pst@solides@reservednames{object} |
|---|
| 293 |
\define@key[psset]{pst-solides3d}{object}{ |
|---|
| 294 |
\ifcsname pst@solides@object@#1\endcsname |
|---|
| 295 |
\def\psk@solides@object{pst-#1} |
|---|
| 296 |
\else |
|---|
| 297 |
\@pstrickserr{The solid #1 is not defined, the solid by default is |
|---|
| 298 |
drawn}{} |
|---|
| 299 |
\fi} |
|---|
| 300 |
|
|---|
| 301 |
\def\addtosolideslistobject#1{ |
|---|
| 302 |
|
|---|
| 303 |
\expandafter\def\expandafter\pst@solides@list@object\expandafter |
|---|
| 304 |
{\pst@solides@list@object,#1} |
|---|
| 305 |
|
|---|
| 306 |
\edef\@tempa{#1} |
|---|
| 307 |
\@for \name:=\@tempa\do{ |
|---|
| 308 |
\expandafter\def\csname pst@solides@object@\name\endcsname{} |
|---|
| 309 |
}} |
|---|
| 310 |
|
|---|
| 311 |
\psset[pst-solides3d]{object=tore} |
|---|
| 312 |
|
|---|
| 313 |
|
|---|
| 314 |
|
|---|
| 315 |
\define@key[psset]{pst-solides3d}{spotX}{\def\pst@solides@@spotX{#1}} |
|---|
| 316 |
\define@key[psset]{pst-solides3d}{spotY}{\def\pst@solides@@spotY{#1}} |
|---|
| 317 |
\define@key[psset]{pst-solides3d}{spotZ}{\def\pst@solides@@spotZ{#1}} |
|---|
| 318 |
\define@key[psset]{pst-solides3d}{QZ}{\def\pst@solides@@QZ{#1}} |
|---|
| 319 |
\define@key[psset]{pst-solides3d}{Zmin}{\def\pst@solides@@Zmin{#1 }} |
|---|
| 320 |
\define@key[psset]{pst-solides3d}{Zmax}{\def\pst@solides@@Zmax{#1 }} |
|---|
| 321 |
\psset[pst-solides3d]{spotX=dr,spotY=dl,spotZ=l,QZ=0,Zmin=-4,Zmax=4} |
|---|
| 322 |
|
|---|
| 323 |
|
|---|
| 324 |
|
|---|
| 325 |
\define@key[psset]{pst-solides3d}{stepX}{\pst@getint{#1}\psk@solides@stepX} |
|---|
| 326 |
\define@key[psset]{pst-solides3d}{stepY}{\pst@getint{#1}\psk@solides@stepY} |
|---|
| 327 |
\define@key[psset]{pst-solides3d}{stepZ}{\pst@getint{#1}\psk@solides@stepZ} |
|---|
| 328 |
\define@key[psset]{pst-solides3d}{ticklength}{\pst@checknum{#1}\psk@solides@ticklength} |
|---|
| 329 |
|
|---|
| 330 |
|
|---|
| 331 |
|
|---|
| 332 |
\psset[pst-solides3d]{stepX=1,stepY=1,stepZ=1,ticklength=0.2} |
|---|
| 333 |
|
|---|
| 334 |
\def\gridIIID{\pst@object{gridIIID}} |
|---|
| 335 |
|
|---|
| 336 |
\def\gridIIID@i(#1,#2)(#3,#4){ |
|---|
| 337 |
\@ifnextchar[{\gridIIID@ii(#1,#2)(#3,#4)}{\gridIIID@ii(#1,#2)(#3,#4)[2,2,3]}} |
|---|
| 338 |
\def\gridIIID@ii(#1,#2)(#3,#4)[#5,#6,#7]{ |
|---|
| 339 |
\pst@killglue |
|---|
| 340 |
\begingroup |
|---|
| 341 |
\use@par |
|---|
| 342 |
\psSolid[object=parallelepiped, |
|---|
| 343 |
intersectiontype=-1, |
|---|
| 344 |
a={#2 #1 sub},b={#4 #3 sub}, |
|---|
| 345 |
c={\pst@solides@@Zmax \pst@solides@@Zmin sub}, |
|---|
| 346 |
action=draw](0,0,\pst@solides@@Zmax \pst@solides@@Zmin add 2 div ) |
|---|
| 347 |
\ifnum#1<0 \pst@cnta=-#1 \def\pst@minus{-}\else\pst@cnta=#1 \def\pst@minus{}\fi |
|---|
| 348 |
\divide\pst@cnta by \psk@solides@stepX |
|---|
| 349 |
\multido{\ix=\psk@solides@stepX+\psk@solides@stepX}{\pst@cnta}{ |
|---|
| 350 |
\psPoint(\pst@minus\ix,#4,\pst@solides@@Zmin){X1} |
|---|
| 351 |
\psPoint(\pst@minus\ix,#4 \psk@solides@ticklength\space add,\pst@solides@@Zmin){X2} |
|---|
| 352 |
\psline(X1)(X2) |
|---|
| 353 |
\uput[\pst@solides@@spotX](X1){\small\pst@minus\ix}} |
|---|
| 354 |
\ifnum#2<0 \pst@cnta=-#2 \def\pst@minus{-}\else\pst@cnta=#2 \def\pst@minus{}\fi |
|---|
| 355 |
\divide\pst@cnta by \psk@solides@stepX |
|---|
| 356 |
\advance\pst@cnta by \@ne |
|---|
| 357 |
\multido{\ix=0+\psk@solides@stepX}{\the\pst@cnta}{ |
|---|
| 358 |
\psPoint(\pst@minus\ix,#4,\pst@solides@@Zmin){X1} |
|---|
| 359 |
\psPoint(\pst@minus\ix,#4 \psk@solides@ticklength\space add,\pst@solides@@Zmin){X2} |
|---|
| 360 |
\psline(X1)(X2) |
|---|
| 361 |
\uput[\pst@solides@@spotX](X1){\small\pst@minus\ix}} |
|---|
| 362 |
|
|---|
| 363 |
\ifnum#3<0 \pst@cnta=-#3 \def\pst@minus{-}\else\pst@cnta=#3 \def\pst@minus{}\fi |
|---|
| 364 |
\divide\pst@cnta by \psk@solides@stepY |
|---|
| 365 |
\multido{\iy=\psk@solides@stepY+\psk@solides@stepY}{\pst@cnta}{ |
|---|
| 366 |
\psPoint(#2,\pst@minus\iy,\pst@solides@@Zmin){Y1} |
|---|
| 367 |
\psPoint(#2 \psk@solides@ticklength\space add,\pst@minus\iy,\pst@solides@@Zmin){Y2} |
|---|
| 368 |
\psline(Y1)(Y2) |
|---|
| 369 |
\uput[\pst@solides@@spotY](Y1){\small\pst@minus\iy}} |
|---|
| 370 |
\ifnum#4<0 \pst@cnta=-#4 \def\pst@minus{-}\else\pst@cnta=#4 \def\pst@minus{}\fi |
|---|
| 371 |
\divide\pst@cnta by \psk@solides@stepY |
|---|
| 372 |
\advance\pst@cnta by \@ne |
|---|
| 373 |
\multido{\iy=0+\psk@solides@stepY}{\pst@cnta}{ |
|---|
| 374 |
\psPoint(#2,\pst@minus\iy,\pst@solides@@Zmin){Y1} |
|---|
| 375 |
\psPoint(#2 \psk@solides@ticklength\space add,\pst@minus\iy,\pst@solides@@Zmin){Y2} |
|---|
| 376 |
\psline(Y1)(Y2) |
|---|
| 377 |
\uput[\pst@solides@@spotY](Y1){\small\pst@minus\iy}} |
|---|
| 378 |
|
|---|
| 379 |
\pst@cnta=\pst@solides@@Zmin \pst@cntb=\pst@solides@@Zmax |
|---|
| 380 |
\ifnum\pst@cnta=\pst@cntb\else |
|---|
| 381 |
\pst@cnta=\pst@solides@@Zmin |
|---|
| 382 |
\ifnum\pst@cnta<0 \pst@cnta=-\pst@cnta \def\pst@minus{-} |
|---|
| 383 |
\else\def\pst@minus{}\fi |
|---|
| 384 |
\divide\pst@cnta by \psk@solides@stepZ |
|---|
| 385 |
\multido{\iz=\psk@solides@stepZ+\psk@solides@stepZ}{\pst@cnta}{ |
|---|
| 386 |
\psPoint(#2,#3,\pst@minus\iz){Z1} |
|---|
| 387 |
\psPoint(#2,#3 \psk@solides@ticklength\space sub,\pst@minus\iz){Z2} |
|---|
| 388 |
\psline(Z1)(Z2) |
|---|
| 389 |
\uput[\pst@solides@@spotZ](Z1){\small\pst@minus\iz}} |
|---|
| 390 |
\pst@cnta=\pst@solides@@Zmax |
|---|
| 391 |
\ifnum\pst@cnta<0 \pst@cnta=-\pst@pst@cnta \def\pst@minus{-} |
|---|
| 392 |
\else\def\pst@minus{}\fi |
|---|
| 393 |
\divide\pst@cnta by \psk@solides@stepZ |
|---|
| 394 |
\advance\pst@cnta by \@ne |
|---|
| 395 |
\multido{\iz=0+\psk@solides@stepZ}{\pst@cnta}{ |
|---|
| 396 |
\psPoint(#2,#3,\pst@minus\iz){Z1} |
|---|
| 397 |
\psPoint(#2,#3 \psk@solides@ticklength\space sub,\pst@minus\iz){Z2} |
|---|
| 398 |
\psline(Z1)(Z2) |
|---|
| 399 |
\uput[\pst@solides@@spotZ](Z1){\small\pst@minus\iz}} |
|---|
| 400 |
\fi |
|---|
| 401 |
|
|---|
| 402 |
\psPoint(0,0,\pst@solides@@Zmax #7 add){Z'} |
|---|
| 403 |
\psPoint(#2 #5 add,0,0){X'} |
|---|
| 404 |
\psPoint(0,#4 #6 add, 0){Y'} |
|---|
| 405 |
\psPoint(0,0,\pst@solides@@Zmax){Z} |
|---|
| 406 |
\psPoint(#2,0,0){X} |
|---|
| 407 |
\psPoint(0,#4,0){Y} |
|---|
| 408 |
\psPoint(0,0,0){O} |
|---|
| 409 |
\uput[\pst@solides@@spotY](X'){$x$} |
|---|
| 410 |
\uput[\pst@solides@@spotX](Y'){$y$} |
|---|
| 411 |
\uput[u](Z'){$z$} |
|---|
| 412 |
\ifPst@showOrigin |
|---|
| 413 |
\psline[linestyle=dashed](O)(X) |
|---|
| 414 |
\psline[linestyle=dashed](O)(Y) |
|---|
| 415 |
\psline[linestyle=dashed](O)(Z) |
|---|
| 416 |
\fi |
|---|
| 417 |
|
|---|
| 418 |
\psline{->}(Z)(Z')\psline{->}(Y)(Y')\psline{->}(X)(X') |
|---|
| 419 |
\endgroup |
|---|
| 420 |
\ignorespaces |
|---|
| 421 |
} |
|---|
| 422 |
|
|---|
| 423 |
|
|---|
| 424 |
|
|---|
| 425 |
|
|---|
| 426 |
|
|---|
| 427 |
\pst@def{optionssolides}< |
|---|
| 428 |
/PSfont {\pst@solides@PSfont} def |
|---|
| 429 |
/pst@fill { \psk@opacityalpha .setopacityalpha fill } def |
|---|
| 430 |
/strokeopacity \psk@opacityalpha def |
|---|
| 431 |
/fillopacity \psk@opacityalpha def |
|---|
| 432 |
/xunit {\pst@number\psunit } def |
|---|
| 433 |
|
|---|
| 434 |
|
|---|
| 435 |
/decal \pst@solides@decal\space def |
|---|
| 436 |
/viewpointXYZ {\pst@solides@viewpoint} def |
|---|
| 437 |
/Decran \pst@solides@Decran\space def |
|---|
| 438 |
|
|---|
| 439 |
/RotX \psk@solides@RotX\space def |
|---|
| 440 |
/RotY \psk@solides@RotY\space def |
|---|
| 441 |
/RotZ \psk@solides@RotZ\space def |
|---|
| 442 |
|
|---|
| 443 |
/fontsize {\pst@solides@fontsize\space \pst@number\psunit mul 28.45 div } bind def |
|---|
| 444 |
|
|---|
| 445 |
/projectionsifacevisible \ifPst@visibility true \else false \fi def |
|---|
| 446 |
|
|---|
| 447 |
/R \pst@solides@R\space def |
|---|
| 448 |
/r1 \pst@solides@rI\space def |
|---|
| 449 |
/r0 \pst@solides@rO\space def |
|---|
| 450 |
/resolution \pst@solides@resolution\space def |
|---|
| 451 |
/phi \pst@solides@phi\space def |
|---|
| 452 |
/theta \pst@solides@theta\space def |
|---|
| 453 |
/r \pst@solides@r\space def |
|---|
| 454 |
/a \pst@solides@a\space def |
|---|
| 455 |
/b \pst@solides@b\space def |
|---|
| 456 |
/c \pst@solides@c\space def |
|---|
| 457 |
/h \pst@solides@h\space def |
|---|
| 458 |
/trunccoeff \pst@solides@trunccoeff\space def |
|---|
| 459 |
/chanfreincoeff \pst@solides@chanfreincoeff\space def |
|---|
| 460 |
/affinagecoeff \pst@solides@affinagecoeff\space def |
|---|
| 461 |
/dualregcoeff \pst@solides@dualregcoeff\space def |
|---|
| 462 |
/solidintersectiontype \pst@solides@intersectiontype\space def |
|---|
| 463 |
/section {\pst@solides@section} def |
|---|
| 464 |
/base [ \pst@solides@base ] def |
|---|
| 465 |
/solidintersectionlinewidth [ \pst@solides@intersectionlinewidth ] def |
|---|
| 466 |
/solidintersectioncolor [ \pst@solides@intersectioncolor ] def |
|---|
| 467 |
/solidintersectionplan [ \pst@solides@intersectionplan ] def |
|---|
| 468 |
/axe { \pst@solides@axe } def |
|---|
| 469 |
/plansection [ \pst@solides@plansection ] def |
|---|
| 470 |
\ifx\pst@solides@function\@empty\else |
|---|
| 471 |
/function (\pst@solides@function) def |
|---|
| 472 |
\fi |
|---|
| 473 |
|
|---|
| 474 |
/definition (\pst@solides@definition) def |
|---|
| 475 |
/args { \pst@solides@args} def |
|---|
| 476 |
/Mode \pst@solides@mode\space def |
|---|
| 477 |
/lightintensity \pst@solides@lightintensity\space def |
|---|
| 478 |
|
|---|
| 479 |
/solidlinewidth {\pst@number\pslinewidth} def |
|---|
| 480 |
/linecolor {\pst@usecolor\pslinecolor} def |
|---|
| 481 |
/linestyle {\pslinestyle} def |
|---|
| 482 |
/fillcolor {\pst@usecolor\psfillcolor currentrgbcolor} def |
|---|
| 483 |
/fillincolor {\pst@usecolor\psincolor currentrgbcolor} def |
|---|
| 484 |
|
|---|
| 485 |
/color1 {\pst@usecolor\pscolora } def |
|---|
| 486 |
/color2 {\pst@usecolor\pscolorb } def |
|---|
| 487 |
/color3 {\pst@usecolor\pscolorc } def |
|---|
| 488 |
/color4 {\pst@usecolor\pscolord } def |
|---|
| 489 |
|
|---|
| 490 |
/range [ \pst@solides@range ] def |
|---|
| 491 |
/action (\pst@solides@action) def |
|---|
| 492 |
/texte (\pst@solides@text) def |
|---|
| 493 |
/pos (\pst@solides@pos) def |
|---|
| 494 |
/proj-fontsize {\pst@solides@fontsize\space \pst@number\psunit mul 28.45 div } bind def |
|---|
| 495 |
|
|---|
| 496 |
\ifx\pst@solides@CoordinatesLight\@empty\else |
|---|
| 497 |
/lightsrc {\pst@solides@CoordinatesLight} def |
|---|
| 498 |
\fi |
|---|
| 499 |
|
|---|
| 500 |
/rmfaces [\pst@solides@CoordinatesRm] def |
|---|
| 501 |
|
|---|
| 502 |
\ifx\pst@solides@plansepare\@empty\else |
|---|
| 503 |
/plansepare {\pst@solides@plansepare} def |
|---|
| 504 |
\fi |
|---|
| 505 |
|
|---|
| 506 |
\ifx\pst@solides@transform\@empty\else |
|---|
| 507 |
/pst-transformoption { \pst@solides@transform} def |
|---|
| 508 |
\fi |
|---|
| 509 |
|
|---|
| 510 |
\ifx\pst@solides@name\@empty\else |
|---|
| 511 |
/solidname (\pst@solides@name) def |
|---|
| 512 |
\fi |
|---|
| 513 |
\ifx\pst@solides@file\@empty\else |
|---|
| 514 |
/solidfilename (\pst@solides@file) def |
|---|
| 515 |
\fi |
|---|
| 516 |
|
|---|
| 517 |
\ifx\pst@solides@planname\@empty\else |
|---|
| 518 |
/solidplanname (\pst@solides@planname) def |
|---|
| 519 |
\fi |
|---|
| 520 |
|
|---|
| 521 |
\ifx\pst@solides@load\@empty\else |
|---|
| 522 |
/solidloadname {\pst@solides@load} def |
|---|
| 523 |
\fi |
|---|
| 524 |
|
|---|
| 525 |
\ifx\pst@solides@fcolor\@empty\else |
|---|
| 526 |
/solidfcolor (\pst@solides@fcolor) def |
|---|
| 527 |
\fi |
|---|
| 528 |
|
|---|
| 529 |
/fcol [\pst@solides@fcol] def |
|---|
| 530 |
/solidhue [\pst@solides@hue] def |
|---|
| 531 |
/solidinouthue [\pst@solides@inouthue] def |
|---|
| 532 |
/solidinhue [\pst@solides@inhue] def |
|---|
| 533 |
/origin {\pst@solides@origin} def |
|---|
| 534 |
|
|---|
| 535 |
|
|---|
| 536 |
|
|---|
| 537 |
|
|---|
| 538 |
/sommets [\pst@solides@sommets] def |
|---|
| 539 |
/faces [\pst@solides@faces] def |
|---|
| 540 |
/solidshow [\pst@solides@show] def |
|---|
| 541 |
/solidnum [\pst@solides@num] def |
|---|
| 542 |
/solidnumf [\pst@solides@numfaces] def |
|---|
| 543 |
/solidtrunc [\pst@solides@trunc] def |
|---|
| 544 |
/solidaffinage [\pst@solides@affinage] def |
|---|
| 545 |
/ngrid [\pst@solides@ngrid] def |
|---|
| 546 |
|
|---|
| 547 |
/isolatin \ifPst@isolatin true \else false \fi def |
|---|
| 548 |
/affinagerm \ifPst@affinagerm true \else false \fi def |
|---|
| 549 |
/chanfrein \ifPst@chanfrein true \else false \fi def |
|---|
| 550 |
/solidgrid \ifPst@grid true \else false \fi def |
|---|
| 551 |
/solidplanmarks \ifPst@planmarks true \else false \fi def |
|---|
| 552 |
/solidplangrid \ifPst@plangrid true \else false \fi def |
|---|
| 553 |
/solidshowbase3d \ifPst@showBase true \else false \fi def |
|---|
| 554 |
/activationgestioncouleurs \ifPst@deactivatecolor false \else true \fi def |
|---|
| 555 |
/solidshowbase \ifPst@showbase true \else false \fi def |
|---|
| 556 |
/soliddualreg \ifPst@dualreg true \else false \fi def |
|---|
| 557 |
/solidgeode \ifPst@geode true \else false \fi def |
|---|
| 558 |
/solidhollow \ifPst@hollow true \else |
|---|