diff options
Diffstat (limited to 'Master/texmf-dist/dvips/pst-vue3d/3D.pro')
-rw-r--r-- | Master/texmf-dist/dvips/pst-vue3d/3D.pro | 2089 |
1 files changed, 2089 insertions, 0 deletions
diff --git a/Master/texmf-dist/dvips/pst-vue3d/3D.pro b/Master/texmf-dist/dvips/pst-vue3d/3D.pro new file mode 100644 index 00000000000..dc7bf00331d --- /dev/null +++ b/Master/texmf-dist/dvips/pst-vue3d/3D.pro @@ -0,0 +1,2089 @@ +%version 31 octobre 2003 +% +/tx@3DDict 100 dict def +tx@3DDict begin +/Cube{% + /XA M11 A mul M12 B mul add M13 C mul add CX add def + /YA M21 A mul M22 B mul add M23 C mul add CY add def + /ZA M31 A mul M32 B mul add M33 C mul add CZ add def + /XB M11 A mul neg M12 B mul add M13 C mul add CX add def + /YB M21 A mul neg M22 B mul add M23 C mul add CY add def + /ZB M31 A mul neg M32 B mul add M33 C mul add CZ add def + /XC M11 A mul neg M12 B mul neg add M13 C mul add CX add def + /YC M21 A mul neg M22 B mul neg add M23 C mul add CY add def + /ZC M31 A mul neg M32 B mul neg add M33 C mul add CZ add def + /XD M11 A mul M12 B mul neg add M13 C mul add CX add def + /YD M21 A mul M22 B mul neg add M23 C mul add CY add def + /ZD M31 A mul M32 B mul neg add M33 C mul add CZ add def + /XE M11 A mul M12 B mul add M13 C mul sub CX add def + /YE M21 A mul M22 B mul add M23 C mul sub CY add def + /ZE M31 A mul M32 B mul add M33 C mul sub CZ add def + /XF M11 A mul neg M12 B mul add M13 C mul sub CX add def + /YF M21 A mul neg M22 B mul add M23 C mul sub CY add def + /ZF M31 A mul neg M32 B mul add M33 C mul sub CZ add def + /XG M11 A mul neg M12 B mul sub M13 C mul sub CX add def + /YG M21 A mul neg M22 B mul sub M23 C mul sub CY add def + /ZG M31 A mul neg M32 B mul sub M33 C mul sub CZ add def + /XH M11 A mul M12 B mul sub M13 C mul sub CX add def + /YH M21 A mul M22 B mul sub M23 C mul sub CY add def + /ZH M31 A mul M32 B mul sub M33 C mul sub CZ add def +% Centres des faces : condition de visibilité +% FACE 1 +% OC1 + /XC1 M13 C mul CX add def + /YC1 M23 C mul CY add def + /ZC1 M33 C mul CZ add def +% Normale à la face 1 + /NX1 M13 C mul def + /NY1 M23 C mul def + /NZ1 M33 C mul def +% rayon vers point de vue + /RXvue1 XC1 XpointVue sub def + /RYvue1 YC1 YpointVue sub def + /RZvue1 ZC1 ZpointVue sub def +% produit scalaire + /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def +% FACE 2 +% OC2 + /XC2 M11 A mul CX add def + /YC2 M21 A mul CY add def + /ZC2 M31 A mul CZ add def +% normale à la face 2 + /NX2 M11 A mul def + /NY2 M21 A mul def + /NZ2 M31 A mul def +% rayon vers point de vue + /RXvue2 XC2 XpointVue sub def + /RYvue2 YC2 YpointVue sub def + /RZvue2 ZC2 ZpointVue sub def +% produit scalaire + /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def +% FACE 3 +% OC3 + /XC3 M13 C neg mul CX add def + /YC3 M23 C neg mul CY add def + /ZC3 M33 C neg mul CZ add def +% normale à la face 3 + /NX3 M13 C neg mul def + /NY3 M23 C neg mul def + /NZ3 M33 C neg mul def +% rayon vers point de vue + /RXvue3 XC3 XpointVue sub def + /RYvue3 YC3 YpointVue sub def + /RZvue3 ZC3 ZpointVue sub def +% produit scalaire + /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def +% FACE 4 +% OC4 + /XC4 M11 A neg mul CX add def + /YC4 M21 A neg mul CY add def + /ZC4 M31 A neg mul CZ add def +% normale à la face 4 + /NX4 M11 A neg mul def + /NY4 M21 A neg mul def + /NZ4 M31 A neg mul def +% rayon vers point de vue + /RXvue4 XC4 XpointVue sub def + /RYvue4 YC4 YpointVue sub def + /RZvue4 ZC4 ZpointVue sub def +% produit scalaire + /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def +% FACE 5 +% OC5 + /XC5 M12 B neg mul CX add def + /YC5 M22 B neg mul CY add def + /ZC5 M32 B neg mul CZ add def +% normale à la face 5 + /NX5 M12 B neg mul def + /NY5 M22 B neg mul def + /NZ5 M32 B neg mul def +% rayon vers point de vue + /RXvue5 XC5 XpointVue sub def + /RYvue5 YC5 YpointVue sub def + /RZvue5 ZC5 ZpointVue sub def +% produit scalaire + /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def +% FACE 6 +% OC6 + /XC6 M12 B mul CX add def + /YC6 M22 B mul CY add def + /ZC6 M32 B mul CZ add def +% normale à la face 6 + /NX6 M12 B mul def + /NY6 M22 B mul def + /NZ6 M32 B mul def +% rayon vers point de vue + /RXvue6 XC6 XpointVue sub def + /RYvue6 YC6 YpointVue sub def + /RZvue6 ZC6 ZpointVue sub def +% produit scalaire + /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def +% faceOne +PS1 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceOne setrgbcolor +fill +grestore +stroke +} if +% faceTwo +PS2 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceTwo setrgbcolor +fill +grestore +stroke +} if +% face three +PS3 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XE def + /Yordonnee YE def + /Zcote ZE def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceThree setrgbcolor +fill +grestore +stroke +} if +% face four +PS4 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFour setrgbcolor +fill +grestore +stroke +} if +% face five +PS5 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFive setrgbcolor +fill +grestore +stroke +} if +% face six +PS6 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceSix setrgbcolor +fill +grestore +stroke +} if +} +def +% +/PointsDie{% +PS6 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +C 2 div neg C C 2 div { + /ZCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Xpoint XCpoint def + /Ypoint B def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Xpoint Rpoint Angle sin mul XCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for + } if +PS5 0 Condition{ % +reduction reduction scale +newpath + /Ypoint B neg def + /XCpoint A 2 div neg def + /ZCpoint C 2 div def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint A 2 div def + /ZCpoint C 2 div neg def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint 0 def + /ZCpoint 0 def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS4 0 Condition{ % +reduction reduction scale +C 2 div neg C C 2 div { + /ZCpoint exch def +B 2 div neg B B 2 div { + /YCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Ypoint YCpoint def + /Xpoint A neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +% le point du milieu +newpath + /Zpoint Rpoint def + /Ypoint 0 def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS3 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +B 2 div neg B 2 div B 2 div { + /YCpoint exch def +newpath + /Xpoint Rpoint XCpoint add def + /Ypoint YCpoint def + /Zpoint C neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +} if +PS2 0 Condition{ % +reduction reduction scale +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div add def + /Zpoint C 2 div neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Ypoint Rpoint Angle cos mul B 2 div add def + /Zpoint Rpoint Angle sin mul C 2 div sub def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div sub def + /Zpoint C 2 div def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint A def + /Ypoint Rpoint Angle cos mul B 2 div sub def + /Zpoint Rpoint Angle sin mul A 2 div add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS1 0 Condition{ % +reduction reduction scale +newpath + /Xpoint Rpoint def + /Ypoint 0 def + /Zpoint C def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +} def +% +/CalcCoordinates{% + formulesTroisD + Xi 28.45 mul Yi 28.45 mul + } + def +% pour la 3D conventionnelle +/formulesTroisD{% + /xObservateur Xabscisse Sin1 mul neg Yordonnee Cos1 mul add def + /yObservateur Xabscisse Cos1Sin2 mul neg Yordonnee Sin1Sin2 mul sub Zcote Cos2 mul add def + /zObservateur Xabscisse neg Cos1Cos2 mul Yordonnee Sin1Cos2 mul sub Zcote Sin2 mul sub Dobs add def + /Xi DScreen xObservateur mul zObservateur div def + /Yi DScreen yObservateur mul zObservateur div def + } +def +% +/CalculsPointsAfterTransformations{% + /Xabscisse M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add CX add def + /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add CY add def + /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add CZ add def + } +def +% +/SommetsTetraedre{% + /xA RayonBaseTetraedre neg def + /yA 0 def + /zA 0 def + /xB 0.5 RayonBaseTetraedre mul def + /yB RayonBaseTetraedre 0.866 mul neg def + /zB 0 def + /xC xB def + /yC yB neg def + /zC 0 def + /xD 0 def + /yD 0 def + /zD RayonBaseTetraedre 1.414 mul def +% coordonnées centre des faces + /xFaceA xA xB xC add add 3 div def + /yFaceA yA yB yC add add 3 div def + /zFaceA zA zB zC add add 3 div def + /xFaceB xD xA xB add add 3 div def + /yFaceB yD yA yB add add 3 div def + /zFaceB zD zA zB add add 3 div def + /xFaceC xA xD xC add add 3 div def + /yFaceC yA yD yC add add 3 div def + /zFaceC zA zD zC add add 3 div def + /xFaceD xD xB xC add add 3 div def + /yFaceD yD yB yC add add 3 div def + /zFaceD zD zB zC add add 3 div def +% sommets après rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def +% centres de faces après transformations + /XFaceA M11 xFaceA mul M12 yFaceA mul add M13 zFaceA mul add CX add def + /YFaceA M21 xFaceA mul M22 yFaceA mul add M23 zFaceA mul add CY add def + /ZFaceA M31 xFaceA mul M32 yFaceA mul add M33 zFaceA mul add CZ add def + /XFaceB M11 xFaceB mul M12 yFaceB mul add M13 zFaceB mul add CX add def + /YFaceB M21 xFaceB mul M22 yFaceB mul add M23 zFaceB mul add CY add def + /ZFaceB M31 xFaceB mul M32 yFaceB mul add M33 zFaceB mul add CZ add def + /XFaceC M11 xFaceC mul M12 yFaceC mul add M13 zFaceC mul add CX add def + /YFaceC M21 xFaceC mul M22 yFaceC mul add M23 zFaceC mul add CY add def + /ZFaceC M31 xFaceC mul M32 yFaceC mul add M33 zFaceC mul add CZ add def + /XFaceD M11 xFaceD mul M12 yFaceD mul add M13 zFaceD mul add CX add def + /YFaceD M21 xFaceD mul M22 yFaceD mul add M23 zFaceD mul add CY add def + /ZFaceD M31 xFaceD mul M32 yFaceD mul add M33 zFaceD mul add CZ add def +% Normales aux faces + /NxA XFaceA XD sub def + /NyA YFaceA YD sub def + /NzA ZFaceA ZD sub def + /NxB XFaceB XC sub def + /NyB YFaceB YC sub def + /NzB ZFaceB ZC sub def + /NxC XFaceC XB sub def + /NyC YFaceC YB sub def + /NzC ZFaceC ZB sub def + /NxD XFaceD XA sub def + /NyD YFaceD YA sub def + /NzD ZFaceD ZA sub def +% Conditions de visibilité +% rayon vers point de vue + /RXvueA XFaceA XpointVue sub def + /RYvueA YFaceA YpointVue sub def + /RZvueA ZFaceA ZpointVue sub def + /RXvueB XFaceB XpointVue sub def + /RYvueB YFaceB YpointVue sub def + /RZvueB ZFaceB ZpointVue sub def + /RXvueC XFaceC XpointVue sub def + /RYvueC YFaceC YpointVue sub def + /RZvueC ZFaceC ZpointVue sub def + /RXvueD XFaceD XpointVue sub def + /RYvueD YFaceD YpointVue sub def + /RZvueD ZFaceD ZpointVue sub def +% produit scalaire + /PSA RXvueA NxA mul RYvueA NyA mul add RZvueA NzA mul add def + /PSB RXvueB NxB mul RYvueB NyB mul add RZvueB NzB mul add def + /PSC RXvueC NxC mul RYvueC NyC mul add RZvueC NzC mul add def + /PSD RXvueD NxD mul RYvueD NyD mul add RZvueD NzD mul add def + } + def +/Tetraedre{% +SommetsTetraedre +% face ABC + PSA 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto +} if +% face DAB + PSB 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DAC +PSC 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DBC + PSD 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +} +def +% +/SommetsPyramide{% + /xA A def + /yA A neg def + /zA 0 def + /xB A def + /yB A def + /zB 0 def + /xC A neg def + /yC A def + /zC 0 def + /xD A neg def + /yD A neg def + /zD 0 def + /xS 0 def + /yS 0 def + /zS Hpyramide def +% coordonnées centre des faces + /Alpha A Hpyramide atan def + /xFaceSAB Hpyramide Alpha dup sin exch cos mul mul def + /yFaceSAB 0 def + /zFaceSAB Hpyramide Alpha sin dup mul mul def + /xFaceSBC 0 def + /yFaceSBC xFaceSAB def + /zFaceSBC zFaceSAB fracHeight mul def + /xFaceSCD xFaceSAB neg def + /yFaceSCD 0 def + /zFaceSCD zFaceSAB fracHeight mul def + /xFaceSDA 0 def + /yFaceSDA xFaceSAB neg def + /zFaceSDA zFaceSAB fracHeight mul def +% sommets après rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def + /XS M11 xS mul M12 yS mul add M13 zS mul add CX add def + /YS M21 xS mul M22 yS mul add M23 zS mul add CY add def + /ZS M31 xS mul M32 yS mul add M33 zS mul add CZ add def +% centres de faces après transformations + /XFaceSAB M11 xFaceSAB mul M12 yFaceSAB mul add M13 zFaceSAB mul add CX add def + /YFaceSAB M21 xFaceSAB mul M22 yFaceSAB mul add M23 zFaceSAB mul add CY add def + /ZFaceSAB M31 xFaceSAB mul M32 yFaceSAB mul add M33 zFaceSAB mul add CZ add def + /XFaceSBC M11 xFaceSBC mul M12 yFaceSBC mul add M13 zFaceSBC mul add CX add def + /YFaceSBC M21 xFaceSBC mul M22 yFaceSBC mul add M23 zFaceSBC mul add CY add def + /ZFaceSBC M31 xFaceSBC mul M32 yFaceSBC mul add M33 zFaceSBC mul add CZ add def + /XFaceSCD M11 xFaceSCD mul M12 yFaceSCD mul add M13 zFaceSCD mul add CX add def + /YFaceSCD M21 xFaceSCD mul M22 yFaceSCD mul add M23 zFaceSCD mul add CY add def + /ZFaceSCD M31 xFaceSCD mul M32 yFaceSCD mul add M33 zFaceSCD mul add CZ add def + /XFaceSDA M11 xFaceSDA mul M12 yFaceSDA mul add M13 zFaceSDA mul add CX add def + /YFaceSDA M21 xFaceSDA mul M22 yFaceSDA mul add M23 zFaceSDA mul add CY add def + /ZFaceSDA M31 xFaceSDA mul M32 yFaceSDA mul add M33 zFaceSDA mul add CZ add def +% Normales aux faces + /NxSAB XFaceSAB CX sub def + /NySAB YFaceSAB CY sub def + /NzSAB ZFaceSAB CZ sub def + /NxSBC XFaceSBC CX sub def + /NySBC YFaceSBC CY sub def + /NzSBC ZFaceSBC CZ sub def + /NxSCD XFaceSCD CX sub def + /NySCD YFaceSCD CY sub def + /NzSCD ZFaceSCD CZ sub def + /NxSDA XFaceSDA CX sub def + /NySDA YFaceSDA CY sub def + /NzSDA ZFaceSDA CZ sub def + /NxABCD CX XS sub def + /NyABCD CY YS sub def + /NzABCD CZ ZS sub def +% Conditions de visibilité +% rayon vers point de vue + /RXvueSAB XFaceSAB XpointVue sub def + /RYvueSAB YFaceSAB YpointVue sub def + /RZvueSAB ZFaceSAB ZpointVue sub def + /RXvueSBC XFaceSBC XpointVue sub def + /RYvueSBC YFaceSBC YpointVue sub def + /RZvueSBC ZFaceSBC ZpointVue sub def + /RXvueSCD XFaceSCD XpointVue sub def + /RYvueSCD YFaceSCD YpointVue sub def + /RZvueSCD ZFaceSCD ZpointVue sub def + /RXvueSDA XFaceSDA XpointVue sub def + /RYvueSDA YFaceSDA YpointVue sub def + /RZvueSDA ZFaceSDA ZpointVue sub def + /RXvueABCD CX XpointVue sub def + /RYvueABCD CY YpointVue sub def + /RZvueABCD CZ ZpointVue sub def + /PSAB RXvueSAB NxSAB mul RYvueSAB NySAB mul add RZvueSAB NzSAB mul add def + /PSBC RXvueSBC NxSBC mul RYvueSBC NySBC mul add RZvueSBC NzSBC mul add def + /PSCD RXvueSCD NxSCD mul RYvueSCD NySCD mul add RZvueSCD NzSCD mul add def + /PSDA RXvueSDA NxSDA mul RYvueSDA NySDA mul add RZvueSDA NzSDA mul add def + /PSABCD RXvueABCD NxABCD mul RYvueABCD NyABCD mul add RZvueABCD NzABCD mul add def + } + def +% +/MaillageSphere { +0 increment 360 increment sub {% + /theta exch def +departPhi increment 90 increment sub {% + /phi exch def +% newpath + /Xpoint Rsphere theta cos mul phi cos mul def + /Ypoint Rsphere theta sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + moveto +% Centre de la facette + /Xpoint Rsphere theta increment 2 div add cos mul phi increment 2 div add cos mul def + /Ypoint Rsphere theta increment 2 div add sin mul phi increment 2 div add cos mul def + /Zpoint Rsphere phi increment 2 div add sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale à la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilité + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +condition { +theta 1 theta increment add {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi cos mul def + /Ypoint Rsphere theta1 sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi 1 phi increment add { + /phi1 exch def + /Xpoint Rsphere theta increment add cos mul phi1 cos mul def + /Ypoint Rsphere theta increment add sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta increment add -1 theta {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi increment add cos mul def + /Ypoint Rsphere theta1 sin mul phi increment add cos mul def + /Zpoint Rsphere phi increment add sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi increment add -1 phi { + /phi1 exch def + /Xpoint Rsphere theta cos mul phi1 cos mul def + /Ypoint Rsphere theta sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +} def +% +/CylinderThreeD{ +reduction reduction scale +1 setlinejoin +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcylindre incrementHAUTEUR sub {% + /H exch def +% newpath + /X1 Rcylindre theta cos mul def + /Y1 Rcylindre theta sin mul def + /Z1 H def + /Xpoint X1 def + /Ypoint Y1 def + /Zpoint Z1 def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnées du centre de la facette + /Xpoint Rcylindre theta incrementANGLE 2 div add cos mul def + /Ypoint Rcylindre theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations +% Point sur l'axe du cylindre +% à la même hauteur que M1 + /Zpoint Z1 def + /Xpoint 0 def + /Ypoint 0 def +CalculsPointsAfterTransformations +% normale à la facette + /nXfacette Xfacette Xabscisse sub def + /nYfacette Yfacette Yordonnee sub def + /nZfacette Zfacette Zcote sub def +% rayon vers point de vue + /RXvue Xfacette XpointVue sub def + /RYvue Yfacette YpointVue sub def + /RZvue Zfacette ZpointVue sub def +% test de visibilité + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /Xpoint Rcylindre theta incrementANGLE add cos mul def + /Ypoint Rcylindre theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% Face supérieure +% centre de la face supérieure + /Xpoint 0 def + /Zpoint Hcylindre def + /Ypoint 0 def +CalculsPointsAfterTransformations + /CxFaceSup Xabscisse def + /CyFaceSup Yordonnee def + /CzFaceSup Zcote def +% centre de la face inférieure + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% Normale à la face supérieure + /nXFaceSup CxFaceSup CxFaceInf sub def + /nYFaceSup CyFaceSup CyFaceInf sub def + /nZFaceSup CzFaceSup CzFaceInf sub def +% rayon vers point de vue verd la face inférieure + /RXvueInf CxFaceInf XpointVue sub def + /RYvueInf CyFaceInf YpointVue sub def + /RZvueInf CzFaceInf ZpointVue sub def +% rayon vers point de vue verd la face supérieure + /RXvueSup CxFaceSup XpointVue sub def + /RYvueSup CyFaceSup YpointVue sub def + /RZvueSup CzFaceSup ZpointVue sub def +% Visibilité face supérieure + /PSfaceSup RXvueSup nXFaceSup mul + RYvueSup nYFaceSup mul add + RZvueSup nZFaceSup mul add def +% Visibilité face inférieure + /PSfaceInf RXvueInf nXFaceSup neg mul + RYvueInf nYFaceSup mul sub + RZvueInf nZFaceSup mul sub def +PSfaceSup 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint Hcylindre def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +% face inférieure +PSfaceInf 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto + 0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +% + % +/ConeThreeD{ + /AngleCone Rcone Hcone atan def + /TanAngleCone AngleCone dup sin exch cos div def + /incrementANGLE 10 def + /incrementHAUTEUR Hcone fracHeight mul 5 div def +1 setlinejoin +newpath +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcone fracHeight mul incrementHAUTEUR sub {% + /H exch def + % normale à la facette + /nXfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add cos mul + mul def + /nYfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add sin mul + mul def + /nZfacette Hcone AngleCone sin dup mul mul def + /Xpoint nXfacette def + /Ypoint nYfacette def + /Zpoint nZfacette def +CalculsPointsAfterTransformations + /nXfacette Xabscisse CX sub def + /nYfacette Yordonnee CY sub def + /nZfacette Zcote CZ sub def +% + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnées du centre de la facette + /OK Hcone H incrementHAUTEUR 2 div add sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE 2 div add cos mul def + /Ypoint OK theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations + /XcentreFacette Xabscisse def + /YcentreFacette Yordonnee def + /ZcentreFacette Zcote def +% rayon vers point de vue + /RXvue XcentreFacette XpointVue sub def + /RYvue YcentreFacette YpointVue sub def + /RZvue ZcentreFacette ZpointVue sub def +% test de visibilité + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE add cos mul def + /Ypoint OK theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /OK Hcone H incrementHAUTEUR add sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% centre de la base inférieure après transformations + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% modification du 16/11/2002 +% /Xpoint CxFaceInf def +% /Ypoint CyFaceInf def +% /Zpoint CzFaceInf def + /Xpoint 0 def + /Ypoint 0 def + /Zpoint 0 def +% fin modification du 16/11/2002 +CalculsPointsAfterTransformations + /CxBaseInf Xabscisse def + /CyBaseInf Yordonnee def + /CzBaseInf Zcote def +% centre de la base supérieure avant transformations + /CxFaceSup 0 def + /CyFaceSup 0 def + /CzFaceSup Hcone fracHeight mul def +% Sommet du cone + /Xpoint 0 def + /Ypoint 0 def + /Zpoint Hcone def +CalculsPointsAfterTransformations + /XsommetCone Xabscisse def + /YsommetCone Yordonnee def + /ZsommetCone Zcote def +% Normale extérieure à la base inférieure + /nXBaseInf CxFaceInf XsommetCone sub def + /nYBaseInf CyFaceInf YsommetCone sub def + /nZBaseInf CzFaceInf ZsommetCone sub def +% centre de la base supérieure + /Xpoint CxFaceSup def + /Ypoint CyFaceSup def + /Zpoint CzFaceSup def +CalculsPointsAfterTransformations + /CxBaseSup Xabscisse def + /CyBaseSup Yordonnee def + /CzBaseSup Zcote def +% Normale extérieure à la base supérieure + /nXBaseSup XsommetCone CxFaceSup sub def + /nYBaseSup YsommetCone CyFaceSup sub def + /nZBaseSup ZsommetCone CzFaceSup sub def +% rayon vers point de vue + /RXvueSup CxBaseSup XpointVue sub def + /RYvueSup CyBaseSup YpointVue sub def + /RZvueSup CzBaseSup ZpointVue sub def + /RXvueInf CxBaseInf XpointVue sub def + /RYvueInf CyBaseInf YpointVue sub def + /RZvueInf CzBaseInf ZpointVue sub def +% Visibilité de la base inférieure + /PSbaseInfCone nXBaseInf RXvueInf mul + nYBaseInf RYvueInf mul add + nZBaseInf RZvueInf mul add def +% Visibilité de la base supérieure + /PSbaseSupCone nXBaseSup RXvueSup mul + nYBaseSup RYvueSup mul add + nZBaseSup RZvueSup mul add def +PSbaseInfCone 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /Xpoint Rcone theta cos mul def + /Ypoint Rcone theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +%% PSbaseSupCone 0 le { +%% modifié le 31/10/2003 +%PSbaseSupCone 0 ge { +PSbaseSupCone 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /OK Hcone 1 fracHeight sub mul TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint Hcone fracHeight mul def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +/PortionSphere{% + /Xpoint Rsphere psTHETA dTHETA neg add cos mul psPHI dPHI sub cos mul def + /Ypoint Rsphere psTHETA dTHETA neg add sin mul psPHI dPHI sub cos mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale à la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilité + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +PSfacette 0 le { +CalcCoordinates +newpath + moveto +psTHETA dTHETA sub 1 psTHETA dTHETA add { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI sub cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI sub cos mul mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI sub 1 psPHI dPHI add { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA add cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA add sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psTHETA dTHETA add -1 psTHETA dTHETA sub { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI add cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI add cos mul mul def + /Zpoint Rsphere psPHI dPHI add sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI add -1 psPHI dPHI sub { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA sub cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA sub sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +closepath +} if +} def +% Dodecahedron : 31 décembre 2003 +% datas : Graphisme scientifique R.Dony +% Masson ed. page 240 +/Dodecahedron{% + /XA M11 0 mul M12 A 0.607062 mul mul add M13 A mul 0.794655 mul add CX add def + /YA M21 0 mul M22 A 0.607062 mul mul add M23 A mul 0.794655 mul add CY add def + /ZA M31 0 mul M32 A 0.607062 mul mul add M33 A mul 0.794655 mul add CZ add def + /XB M11 A mul -0.5773503 mul M12 A mul 0.1875925 mul add M13 A mul 0.7946545 mul add CX add def + /YB M21 A mul -0.5773503 mul M22 A mul 0.1875925 mul add M23 A mul 0.7946545 mul add CY add def + /ZB M31 A mul -0.5773503 mul M32 A mul 0.1875925 mul add M33 A mul 0.7946545 mul add CZ add def + /XC M11 A mul -0.3568221 mul M12 A mul -0.4911235 mul add M13 A mul 0.7946545 mul add CX add def + /YC M21 A mul -0.3568221 mul M22 A mul -0.4911235 mul add M23 A mul 0.7946545 mul add CY add def + /ZC M31 A mul -0.3568221 mul M32 A mul -0.4911235 mul add M33 A mul 0.7946545 mul add CZ add def + /XD M11 A mul 0.3568221 mul M12 A mul -0.4911235 mul add M13 A mul 0.7946545 mul add CX add def + /YD M21 A mul 0.3568221 mul M22 A mul -0.4911235 mul add M23 A mul 0.7946545 mul add CY add def + /ZD M31 A mul 0.3568221 mul M32 A mul -0.4911235 mul add M33 A mul 0.7946545 mul add CZ add def + /XE M11 A mul 0.5773503 mul M12 A mul 0.1875925 mul add M13 A mul 0.7946545 mul add CX add def + /YE M21 A mul 0.5773503 mul M22 A mul 0.1875925 mul add M23 A mul 0.7946545 mul add CY add def + /ZE M31 A mul 0.5773503 mul M32 A mul 0.1875925 mul add M33 A mul 0.7946545 mul add CZ add def + /XF M11 A mul 0 mul M12 A mul 0.982247 mul add M13 A mul 0.175925 mul add CX add def + /YF M21 A mul 0 mul M22 A mul 0.982247 mul add M23 A mul 0.175925 mul add CY add def + /ZF M31 A mul 0 mul M32 A mul 0.982247 mul add M33 A mul 0.175925 mul add CZ add def + /XG M11 A mul -0.9341724 mul M12 A mul 0.303531 mul add M13 A mul 0.1875925 mul add CX add def + /YG M21 A mul -0.9341724 mul M22 A mul 0.303531 mul add M23 A mul 0.1875925 mul add CY add def + /ZG M31 A mul -0.9341724 mul M32 A mul 0.303531 mul add M33 A mul 0.1875925 mul add CZ add def + /XH M11 A mul -0.5773503 mul M12 A mul -0.7946545 mul add M13 A mul 0.1875925 mul add CX add def + /YH M21 A mul -0.5773503 mul M22 A mul -0.7946545 mul add M23 A mul 0.1875925 mul add CY add def + /ZH M31 A mul -0.5773503 mul M32 A mul -0.7946545 mul add M33 A mul 0.1875925 mul add CZ add def + /XI M11 A mul 0.5773503 mul M12 A mul -0.7946545 mul add M13 A mul 0.1875925 mul add CX add def + /YI M21 A mul 0.5773503 mul M22 A mul -0.7946545 mul add M23 A mul 0.1875925 mul add CY add def + /ZI M31 A mul 0.5773503 mul M32 A mul -0.7946545 mul add M33 A mul 0.1875925 mul add CZ add def + /XJ M11 A mul 0.9341724 mul M12 A mul 0.303531 mul add M13 A mul 0.1875925 mul add CX add def + /YJ M21 A mul 0.9341724 mul M22 A mul 0.303531 mul add M23 A mul 0.1875925 mul add CY add def + /ZJ M31 A mul 0.9341724 mul M32 A mul 0.303531 mul add M33 A mul 0.1875925 mul add CZ add def + /XK M11 A mul 0 mul M12 A mul -0.982247 mul add M13 A mul -0.1875925 mul add CX add def + /YK M21 A mul 0 mul M22 A mul -0.982247 mul add M23 A mul -0.1875925 mul add CY add def + /ZK M31 A mul 0 mul M32 A mul -0.982247 mul add M33 A mul -0.1875925 mul add CZ add def + /XL M11 A mul 0.9341724 mul M12 A mul -0.303531 mul add M13 A mul -0.1875925 mul add CX add def + /YL M21 A mul 0.9341724 mul M22 A mul -0.303531 mul add M23 A mul -0.1875925 mul add CY add def + /ZL M31 A mul 0.9341724 mul M32 A mul -0.303531 mul add M33 A mul -0.1875925 mul add CZ add def + /XM M11 A mul 0.5773503 mul M12 A mul 0.7946545 mul add M13 A mul -0.1875925 mul add CX add def + /YM M21 A mul 0.5773503 mul M22 A mul 0.7946545 mul add M23 A mul -0.1875925 mul add CY add def + /ZM M31 A mul 0.5773503 mul M32 A mul 0.7946545 mul add M33 A mul -0.1875925 mul add CZ add def + /XN M11 A mul -0.5773503 mul M12 A mul 0.7946545 mul add M13 A mul -0.1875925 mul add CX add def + /YN M21 A mul -0.5773503 mul M22 A mul 0.7946545 mul add M23 A mul -0.1875925 mul add CY add def + /ZN M31 A mul -0.5773503 mul M32 A mul 0.7946545 mul add M33 A mul -0.1875925 mul add CZ add def + /XO M11 A mul -0.9341724 mul M12 A mul -0.303531 mul add M13 A mul -0.1875925 mul add CX add def + /YO M21 A mul -0.9341724 mul M22 A mul -0.303531 mul add M23 A mul -0.1875925 mul add CY add def + /ZO M31 A mul -0.9341724 mul M32 A mul -0.303531 mul add M33 A mul -0.1875925 mul add CZ add def + /XP M11 A mul -0.5773503 mul M12 A mul -0.1875925 mul add M13 A mul -0.7946545 mul add CX add def + /YP M21 A mul -0.5773503 mul M22 A mul -0.1875925 mul add M23 A mul -0.7946545 mul add CY add def + /ZP M31 A mul -0.5773503 mul M32 A mul -0.1875925 mul add M33 A mul -0.7946545 mul add CZ add def + /XQ M11 A mul -0.3568221 mul M12 A mul 0.4911235 mul add M13 A mul -0.7946545 mul add CX add def + /YQ M21 A mul -0.3568221 mul M22 A mul 0.4911235 mul add M23 A mul -0.7946545 mul add CY add def + /ZQ M31 A mul -0.3568221 mul M32 A mul 0.4911235 mul add M33 A mul -0.7946545 mul add CZ add def + /XR M11 A mul 0.3568221 mul M12 A mul 0.4911235 mul add M13 A mul -0.7946545 mul add CX add def + /YR M21 A mul 0.3568221 mul M22 A mul 0.4911235 mul add M23 A mul -0.7946545 mul add CY add def + /ZR M31 A mul 0.3568221 mul M32 A mul 0.4911235 mul add M33 A mul -0.7946545 mul add CZ add def + /XS M11 A mul 0.5773503 mul M12 A mul -0.1875925 mul add M13 A mul -0.7946545 mul add CX add def + /YS M21 A mul 0.5773503 mul M22 A mul -0.1875925 mul add M23 A mul -0.7946545 mul add CY add def + /ZS M31 A mul 0.5773503 mul M32 A mul -0.1875925 mul add M33 A mul -0.7946545 mul add CZ add def + /XT M11 0 mul M12 A -0.607062 mul mul add M13 A mul -0.794655 mul add CX add def + /YT M21 0 mul M22 A -0.607062 mul mul add M23 A mul -0.794655 mul add CY add def + /ZT M31 0 mul M32 A -0.607062 mul mul add M33 A mul -0.794655 mul add CZ add def +% Centres des faces : condition de visibilité +% FACE 1 pentagone régulier ABCDE +% OC1 + /XC1 XA XB add XC add XD add XE add 5 div def + /YC1 YA YB add YC add YD add YE add 5 div def + /ZC1 ZA ZB add ZC add ZD add ZE add 5 div def +% Normale à la face 1 + /NX1 XC1 CX sub def + /NY1 YC1 CY sub def + /NZ1 ZC1 CZ sub def +% rayon vers point de vue + /RXvue1 XC1 XpointVue sub def + /RYvue1 YC1 YpointVue sub def + /RZvue1 ZC1 ZpointVue sub def +% produit scalaire + /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def +% FACE 2 pentagone régulier EDILJ +% OC2 + /XC2 XE XD add XI add XL add XJ add 5 div def + /YC2 YE YD add YI add YL add YJ add 5 div def + /ZC2 ZE ZD add ZI add ZL add ZJ add 5 div def +% Normale à la face 2 + /NX2 XC2 CX sub def + /NY2 YC2 CY sub def + /NZ2 ZC2 CZ sub def +% rayon vers point de vue + /RXvue2 XC2 XpointVue sub def + /RYvue2 YC2 YpointVue sub def + /RZvue2 ZC2 ZpointVue sub def +% produit scalaire + /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def +% FACE 3 pentagone régulier EJMFA +% OC3 + /XC3 XE XJ add XM add XF add XA add 5 div def + /YC3 YE YJ add YM add YF add YA add 5 div def + /ZC3 ZE ZJ add ZM add ZF add ZA add 5 div def +% Normale à la face 2 + /NX3 XC3 CX sub def + /NY3 YC3 CY sub def + /NZ3 ZC3 CZ sub def +% rayon vers point de vue + /RXvue3 XC3 XpointVue sub def + /RYvue3 YC3 YpointVue sub def + /RZvue3 ZC3 ZpointVue sub def +% produit scalaire + /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def +% FACE 4 pentagone régulier AFNGB +% OC4 + /XC4 XA XF add XN add XG add XB add 5 div def + /YC4 YA YF add YN add YG add YB add 5 div def + /ZC4 ZA ZF add ZN add ZG add ZB add 5 div def +% Normale à la face 4 + /NX4 XC4 CX sub def + /NY4 YC4 CY sub def + /NZ4 ZC4 CZ sub def +% rayon vers point de vue + /RXvue4 XC4 XpointVue sub def + /RYvue4 YC4 YpointVue sub def + /RZvue4 ZC4 ZpointVue sub def +% produit scalaire + /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def +% FACE 5 pentagone régulier BGOHC +% OC5 + /XC5 XB XG add XO add XH add XC add 5 div def + /YC5 YB YG add YO add YH add YC add 5 div def + /ZC5 ZB ZG add ZO add ZH add ZC add 5 div def +% Normale à la face 5 + /NX5 XC5 CX sub def + /NY5 YC5 CY sub def + /NZ5 ZC5 CZ sub def +% rayon vers point de vue + /RXvue5 XC5 XpointVue sub def + /RYvue5 YC5 YpointVue sub def + /RZvue5 ZC5 ZpointVue sub def +% produit scalaire + /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def +% FACE 6 pentagone régulier CHKID +% OC6 + /XC6 XC XH add XK add XI add XD add 5 div def + /YC6 YC YH add YK add YI add YD add 5 div def + /ZC6 ZC ZH add ZK add ZI add ZD add 5 div def +% Normale à la face 6 + /NX6 XC6 CX sub def + /NY6 YC6 CY sub def + /NZ6 ZC6 CZ sub def +% rayon vers point de vue + /RXvue6 XC6 XpointVue sub def + /RYvue6 YC6 YpointVue sub def + /RZvue6 ZC6 ZpointVue sub def +% produit scalaire + /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def +% FACE 7 pentagone régulier KTSLI +% OC7 + /XC7 XK XT add XS add XL add XI add 5 div def + /YC7 YK YT add YS add YL add YI add 5 div def + /ZC7 ZK ZT add ZS add ZL add ZI add 5 div def +% Normale à la face 7 + /NX7 XC7 CX sub def + /NY7 YC7 CY sub def + /NZ7 ZC7 CZ sub def +% rayon vers point de vue + /RXvue7 XC7 XpointVue sub def + /RYvue7 YC7 YpointVue sub def + /RZvue7 ZC7 ZpointVue sub def +% produit scalaire + /PS7 RXvue7 NX7 mul RYvue7 NY7 mul add RZvue7 NZ7 mul add def +% FACE 8 pentagone régulier LSRMJ +% OC8 + /XC8 XL XS add XR add XM add XJ add 5 div def + /YC8 YL YS add YR add YM add YJ add 5 div def + /ZC8 ZL ZS add ZR add ZM add ZJ add 5 div def +% Normale à la face 8 + /NX8 XC8 CX sub def + /NY8 YC8 CY sub def + /NZ8 ZC8 CZ sub def +% rayon vers point de vue + /RXvue8 XC8 XpointVue sub def + /RYvue8 YC8 YpointVue sub def + /RZvue8 ZC8 ZpointVue sub def +% produit scalaire + /PS8 RXvue8 NX8 mul RYvue8 NY8 mul add RZvue8 NZ8 mul add def +% FACE 9 pentagone régulier MRQNF +% OC9 + /XC9 XM XR add XQ add XN add XF add 5 div def + /YC9 YM YR add YQ add YN add YF add 5 div def + /ZC9 ZM ZR add ZQ add ZN add ZF add 5 div def +% Normale à la face 6 + /NX9 XC9 CX sub def + /NY9 YC9 CY sub def + /NZ9 ZC9 CZ sub def +% rayon vers point de vue + /RXvue9 XC9 XpointVue sub def + /RYvue9 YC9 YpointVue sub def + /RZvue9 ZC9 ZpointVue sub def +% produit scalaire + /PS9 RXvue9 NX9 mul RYvue9 NY9 mul add RZvue9 NZ9 mul add def +% FACE 10 pentagone régulier NQPOG +% OC10 + /XC10 XN XQ add XP add XO add XG add 5 div def + /YC10 YN YQ add YP add YO add YG add 5 div def + /ZC10 ZN ZQ add ZP add ZO add ZG add 5 div def +% Normale à la face 6 + /NX10 XC10 CX sub def + /NY10 YC10 CY sub def + /NZ10 ZC10 CZ sub def +% rayon vers point de vue + /RXvue10 XC10 XpointVue sub def + /RYvue10 YC10 YpointVue sub def + /RZvue10 ZC10 ZpointVue sub def +% produit scalaire + /PS10 RXvue10 NX10 mul RYvue10 NY10 mul add RZvue10 NZ10 mul add def +% FACE 11 pentagone régulier OPTKH +% OC11 + /XC11 XO XP add XT add XK add XH add 5 div def + /YC11 YO YP add YT add YK add YH add 5 div def + /ZC11 ZO ZP add ZT add ZK add ZH add 5 div def +% Normale à la face 11 + /NX11 XC11 CX sub def + /NY11 YC11 CY sub def + /NZ11 ZC11 CZ sub def +% rayon vers point de vue + /RXvue11 XC11 XpointVue sub def + /RYvue11 YC11 YpointVue sub def + /RZvue11 ZC11 ZpointVue sub def +% produit scalaire + /PS11 RXvue11 NX11 mul RYvue11 NY11 mul add RZvue11 NZ11 mul add def +% FACE 12 pentagone régulier PQRST +% OC12 + /XC12 XP XQ add XR add XS add XT add 5 div def + /YC12 YP YQ add YR add YS add YT add 5 div def + /ZC12 ZP ZQ add ZR add ZS add ZT add 5 div def +% Normale à la face 12 + /NX12 XC12 CX sub def + /NY12 YC12 CY sub def + /NZ12 ZC12 CZ sub def +% rayon vers point de vue + /RXvue12 XC12 XpointVue sub def + /RYvue12 YC12 YpointVue sub def + /RZvue12 ZC12 ZpointVue sub def +% produit scalaire + /PS12 RXvue12 NX12 mul RYvue12 NY12 mul add RZvue12 NZ12 mul add def +% faceOne ABDCE +PS1 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto +closepath +gsave +0.05 0.1 0.1 0 setcmykcolor +fill +grestore +stroke +} if +% face2 EDILJ +PS2 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YE def + /Zcote ZE def + /Xabscisse XE def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZI def + /Xabscisse XI def + /Yordonnee YI def + CalcCoordinates + lineto + /Zcote ZL def + /Xabscisse XL def + /Yordonnee YL def + CalcCoordinates + lineto + /Zcote ZJ def + /Xabscisse XJ def + /Yordonnee YJ def + CalcCoordinates + lineto +closepath +gsave +0.05 0.15 0.15 0 setcmykcolor +fill +grestore +stroke +} if +% face3 EJMFA +PS3 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YE def + /Zcote ZE def + /Xabscisse XE def + CalcCoordinates + moveto + /Zcote ZJ def + /Xabscisse XJ def + /Yordonnee YJ def + CalcCoordinates + lineto + /Zcote ZM def + /Xabscisse XM def + /Yordonnee YM def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +0.05 0.2 0.2 0 setcmykcolor +fill +grestore +stroke +} if +% face4 AFNGB +PS4 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZN def + /Xabscisse XN def + /Yordonnee YN def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +0.05 0.25 0.25 0 setcmykcolor +fill +grestore +stroke +} if +% face5 BGOHC +PS5 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YB def + /Zcote ZB def + /Xabscisse XB def + CalcCoordinates + moveto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZO def + /Xabscisse XO def + /Yordonnee YO def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto +closepath +gsave +0.05 0.3 0.3 0 setcmykcolor +fill +grestore +stroke +} if +% face6 CHKID +PS6 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YC def + /Zcote ZC def + /Xabscisse XC def + CalcCoordinates + moveto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZK def + /Xabscisse XK def + /Yordonnee YK def + CalcCoordinates + lineto + /Zcote ZI def + /Xabscisse XI def + /Yordonnee YI def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto +closepath +gsave +0.05 0.35 0.35 0 setcmykcolor +fill +grestore +stroke +} if +% face7 KTSLI +PS7 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YK def + /Zcote ZK def + /Xabscisse XK def + CalcCoordinates + moveto + /Zcote ZT def + /Xabscisse XT def + /Yordonnee YT def + CalcCoordinates + lineto + /Zcote ZS def + /Xabscisse XS def + /Yordonnee YS def + CalcCoordinates + lineto + /Zcote ZL def + /Xabscisse XL def + /Yordonnee YL def + CalcCoordinates + lineto + /Zcote ZI def + /Xabscisse XI def + /Yordonnee YI def + CalcCoordinates + lineto +closepath +gsave +0.05 0.4 0.4 0 setcmykcolor +fill +grestore +stroke +} if +% face8 LSRMJ +PS8 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YL def + /Zcote ZL def + /Xabscisse XL def + CalcCoordinates + moveto + /Zcote ZS def + /Xabscisse XS def + /Yordonnee YS def + CalcCoordinates + lineto + /Zcote ZR def + /Xabscisse XR def + /Yordonnee YR def + CalcCoordinates + lineto + /Zcote ZM def + /Xabscisse XM def + /Yordonnee YM def + CalcCoordinates + lineto + /Zcote ZJ def + /Xabscisse XJ def + /Yordonnee YJ def + CalcCoordinates + lineto +closepath +gsave +0.05 0.45 0.45 0 setcmykcolor +fill +grestore +stroke +} if +% face9 MRQNF +PS9 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YM def + /Zcote ZM def + /Xabscisse XM def + CalcCoordinates + moveto + /Zcote ZR def + /Xabscisse XR def + /Yordonnee YR def + CalcCoordinates + lineto + /Zcote ZQ def + /Xabscisse XQ def + /Yordonnee YQ def + CalcCoordinates + lineto + /Zcote ZN def + /Xabscisse XN def + /Yordonnee YN def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto +closepath +gsave +0.05 0.5 0.5 0 setcmykcolor +fill +grestore +stroke +} if +% face10 NQPOG +PS10 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YN def + /Zcote ZN def + /Xabscisse XN def + CalcCoordinates + moveto + /Zcote ZQ def + /Xabscisse XQ def + /Yordonnee YQ def + CalcCoordinates + lineto + /Zcote ZP def + /Xabscisse XP def + /Yordonnee YP def + CalcCoordinates + lineto + /Zcote ZO def + /Xabscisse XO def + /Yordonnee YO def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto +closepath +gsave +0.05 0.55 0.55 0 setcmykcolor +fill +grestore +stroke +} if +% face11 OPTKH +PS11 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YO def + /Zcote ZO def + /Xabscisse XO def + CalcCoordinates + moveto + /Zcote ZP def + /Xabscisse XP def + /Yordonnee YP def + CalcCoordinates + lineto + /Zcote ZT def + /Xabscisse XT def + /Yordonnee YT def + CalcCoordinates + lineto + /Zcote ZK def + /Xabscisse XK def + /Yordonnee YK def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto +closepath +gsave +0.05 0.6 0.6 0 setcmykcolor +fill +grestore +stroke +} if +% face12 PQRST +PS12 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YP def + /Zcote ZP def + /Xabscisse XP def + CalcCoordinates + moveto + /Zcote ZQ def + /Xabscisse XQ def + /Yordonnee YQ def + CalcCoordinates + lineto + /Zcote ZR def + /Xabscisse XR def + /Yordonnee YR def + CalcCoordinates + lineto + /Zcote ZS def + /Xabscisse XS def + /Yordonnee YS def + CalcCoordinates + lineto + /Zcote ZT def + /Xabscisse XT def + /Yordonnee YT def + CalcCoordinates + lineto +closepath +gsave +0.05 0.65 0.65 0 setcmykcolor +fill +grestore +stroke +} if +} +def +end |