%! % PostScript prologue for prisme_object.tex % Version 1.00, 2006/08/16 % /PrismeDict 100 dict def PrismeDict begin /MaillagePrisme { 0 incrementANGLE 360 {% /theta ED /X1 Rprisme theta cos mul def /Y1 Rprisme theta sin mul def /Z1 0 def /Xpoint X1 def /Ypoint Y1 def /Zpoint Z1 def PointsApresTransformations /Zfacette1 ED /Yfacette1 ED /Xfacette1 ED /X2 Rprisme theta incrementANGLE add cos mul def /Y2 Rprisme theta incrementANGLE add sin mul def /Z2 0 def /Xpoint X2 def /Ypoint Y2 def /Zpoint Z2 def PointsApresTransformations /Zfacette2 ED /Yfacette2 ED /Xfacette2 ED % /X3 X2 def % /Y2 Y2 def /Z3 Hprisme def /Xpoint X2 def /Ypoint Y2 def /Zpoint Z3 def PointsApresTransformations /Zfacette3 ED /Yfacette3 ED /Xfacette3 ED % /X4 X1 def % /Y4 Y1 def % /Z4 Z3 def /Xpoint X1 def /Ypoint Y1 def /Zpoint Z3 def PointsApresTransformations /Zfacette4 ED /Yfacette4 ED /Xfacette4 ED % centre de la facette /Xcentre Xfacette1 Xfacette2 add Xfacette3 add Xfacette4 add 4 div def /Ycentre Yfacette1 Yfacette2 add Yfacette3 add Yfacette4 add 4 div def /Zcentre Zfacette1 Zfacette2 add Zfacette3 add Zfacette4 add 4 div def % centre du prisme /Xpoint 0 def /Ypoint 0 def /Zpoint Hprisme 2 div def PointsApresTransformations /ZcentrePrisme ED /YcentrePrisme ED /XcentrePrisme ED % normale à la facette /nXfacette Xcentre XcentrePrisme sub def /nYfacette Ycentre YcentrePrisme sub def /nZfacette Zcentre ZcentrePrisme sub def /normeN nXfacette dup mul nYfacette dup mul add nZfacette dup mul add sqrt def % vecteur du centre de la facette vers le point de vue /RXvue XpointVue Xcentre sub def /RYvue YpointVue Ycentre sub def /RZvue ZpointVue Zcentre sub def % condition de visibilité : produit scalaire /PSfacette nXfacette RXvue mul nYfacette RYvue mul add nZfacette RZvue mul add def % vecteur centre de la facette vers la source de lumière /VxLight xLight Xcentre sub def /VyLight yLight Ycentre sub def /VzLight zLight Zcentre sub def % norme /normeL VxLight dup mul VyLight dup mul VzLight dup mul add add sqrt def % produit scalaire /PSLight VxLight nXfacette mul VyLight nYfacette mul add VzLight nZfacette mul add def /CosCouleur PSLight normeL normeN mul div def /facette { newpath Xfacette1 Yfacette1 Zfacette1 3dto2d moveto Xfacette2 Yfacette2 Zfacette2 3dto2d lineto Xfacette3 Yfacette3 Zfacette3 3dto2d lineto Xfacette4 Yfacette4 Zfacette4 3dto2d lineto closepath } def condition { gsave facette H_S CosCouleur sethsbcolor fill grestore facette 0 setgray stroke } if } for } def /FaceSup { /facette { /Zpoint Hprisme def newpath /Xpoint Rprisme def /Ypoint 0 def PointsApresTransformations 3dto2d moveto 0 incrementANGLE 360 {% /theta ED /Xpoint Rprisme theta cos mul def /Ypoint Rprisme theta sin mul def PointsApresTransformations 3dto2d lineto } for closepath } def % la normale à la face /Xpoint 0 def /Ypoint 0 def /Zpoint Hprisme def PointsApresTransformations /Zcentre ED /Ycentre ED /Xcentre ED % centre du prisme /Xpoint 0 def /Ypoint 0 def /Zpoint Hprisme 2 div def PointsApresTransformations /ZcentrePrisme ED /YcentrePrisme ED /XcentrePrisme ED /nZfacette Zcentre ZcentrePrisme sub def /nYfacette Ycentre YcentrePrisme sub def /nXfacette Xcentre XcentrePrisme sub def % vecteur du centre de la facette vers le point de vue /RXvue XpointVue Xcentre sub def /RYvue YpointVue Ycentre sub def /RZvue ZpointVue Zcentre sub def % condition de visibilité : produit scalaire /PSfacette nXfacette RXvue mul nYfacette RYvue mul add nZfacette RZvue mul add def % vecteur centre de la facette vers la source de lumière /VxLight xLight Xcentre sub def /VyLight yLight Ycentre sub def /VzLight zLight Zcentre sub def % norme /normeL VxLight dup mul VyLight dup mul VzLight dup mul add add sqrt def % produit scalaire /PSLight VxLight nXfacette mul VyLight nYfacette mul add VzLight nZfacette mul add def /CosCouleur PSLight normeL div def condition { gsave facette H_S CosCouleur sethsbcolor fill grestore gsave facette 0 setgray stroke grestore } if } def /FaceInf { /facette { /Zpoint 0 def newpath /Xpoint Rprisme def /Ypoint 0 def PointsApresTransformations 3dto2d moveto 0 incrementANGLE 360 {% /theta ED /Xpoint Rprisme theta cos mul def /Ypoint Rprisme theta sin mul def PointsApresTransformations 3dto2d lineto } for closepath } def % la normale à la face /Xpoint 0 def /Ypoint 0 def /Zpoint 0 def PointsApresTransformations /Zcentre ED /Ycentre ED /Xcentre ED % centre du prisme /Xpoint 0 def /Ypoint 0 def /Zpoint Hprisme 2 div def PointsApresTransformations /ZcentrePrisme ED /YcentrePrisme ED /XcentrePrisme ED /nZfacette Zcentre ZcentrePrisme sub def /nYfacette Ycentre YcentrePrisme sub def /nXfacette Xcentre XcentrePrisme sub def % vecteur du centre de la facette vers le point de vue /RXvue XpointVue Xcentre sub def /RYvue YpointVue Ycentre sub def /RZvue ZpointVue Zcentre sub def % condition de visibilité : produit scalaire /PSfacette nXfacette RXvue mul nYfacette RYvue mul add nZfacette RZvue mul add def % vecteur centre de la facette vers la source de lumière /VxLight xLight Xcentre sub def /VyLight yLight Ycentre sub def /VzLight zLight Zcentre sub def % norme /normeL VxLight dup mul VyLight dup mul VzLight dup mul add add sqrt def % produit scalaire /PSLight VxLight nXfacette mul VyLight nYfacette mul add VzLight nZfacette mul add def /CosCouleur PSLight normeL div def condition { gsave facette H_S CosCouleur sethsbcolor fill grestore facette 0 setgray stroke } if } def end