\documentclass[12pt]{article}
\usepackage{pstcol,pst-vue3d,pst-grad,multido}
\usepackage[a4paper]{geometry}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}%
% Mluque5130@aol.com
% les couleurs
\definecolor{Beige} {rgb}{0.96,0.96,0.86}
\definecolor{GrisClair} {rgb}{0.8,0.8,0.8}
\definecolor{GrisTresClair} {rgb}{0.9,0.9,0.9}
\definecolor{OrangeTresPale}{cmyk}{0,0.1,0.3,0}
\definecolor{OrangePale}{cmyk}{0,0.2,0.4,0}
\definecolor{BleuClair}{cmyk}{0.2,0,0,0}
\definecolor{LightBlue}{rgb}{.68,.85,.9}
\definecolor{DarkGreen}{rgb}{0,.85,0}
\definecolor{Copper}{cmyk}{0,0.9,0.9,0.2}
%%%%
%%%%
% 10 novembre 2002
% Manuel LUQUE <Mluque5130@aol.com>
\title{Vue en 3D}
\author{Manuel Luque\\
\makeatletter
\textsf{<Mluque5130@aol.com>}
\makeatother
}
\date{11 novembre 2002}
\newcommand\axeOZ{%
\PointThreeD(0,0,5){O}
\PointThreeD(0,0,25){Z}
\PointThreeD(0,0,12.5){Z'}
{\psset{linecolor=red,linestyle=dashed}
\psline(O)(Z)
\uput[0](Z){Z}}}
\newcommand\tapis{
\PointThreeD(-20,-20,-5){P1}
\PointThreeD(20,-20,-5){P2}
\PointThreeD(20,20,-5){P3}
\PointThreeD(-20,20,-5){P4}
\pspolygon*[linecolor=green](P1)(P2)(P3)(P4)
\multido{\iX=-20+10}{5}{%
\PointThreeD(\iX,-20,-5){X1}
\PointThreeD(\iX,20,-5){X2}
\psline[linecolor=black](X1)(X2)}
\multido{\iY=-20+10}{5}{%
\PointThreeD(-20,\iY,-5){Y1}
\PointThreeD(20,\iY,-5){Y2}
\psline[linecolor=black](Y1)(Y2)}}
%
\def\Plans{%
% les plans de référence
% plan de front OYZ
{\psset{normaleLongitude=180,%
                normaleLatitude=0,%
                Xorigine=0,%
                Yorigine=0,%
                Zorigine=0}
\QuadrillageThreeD[linecolor=blue,linewidth=0.2mm,grille=10,%
                  Ymin=-50,Ymax=50,Xmax=50,Xmin=-50]}
% plan vertical OXZ
{\psset{normaleLongitude=90,%
                normaleLatitude=0,%
                Xorigine=0,%
                Yorigine=0,%
                Zorigine=0}
\QuadrillageThreeD[linecolor=red,linewidth=0.2mm,grille=10,%
                  Ymin=-50,Ymax=50,Xmax=50,Xmin=-50]}
% plan horizontal OXY
{\psset{normaleLongitude=0,%
                normaleLatitude=90,%
                Xorigine=0,%
                Yorigine=0,%
                Zorigine=0}
\QuadrillageThreeD[linecolor=green,linewidth=0.2mm,grille=10,%
                  Ymin=-50,Ymax=50,Xmax=50,Xmin=-50]}
\PointThreeD(0,0,0){O}
\PointThreeD(0,0,100){Z}
\PointThreeD(100,0,0){X}
\PointThreeD(0,100,0){Y}
{\psset{linestyle=dashed}
\psline[linecolor=blue](O)(Z)
\psline[linecolor=red](O)(X)
\psline[linecolor=green](O)(Y)}
\uput[0](Z){Z}
\uput[0](X){X}
\uput[0](Y){Y}}
\begin{document}
\maketitle
\section{Objectifs }
Il s'agit de représenter en 3D, des objets avec élimination des
parties cachées.

La position du point de vue sera définie par la distance à
l'origine du repère, la longitude $\theta$ et la latitude $\phi$.
On choisira aussi la distance à  laquelle l'observateur place, par
rapport à lui, l'écran de projection.

L'objectif suivant est de définir des éléments de décor en 3D, \textit{des
briques}, pour reconstruire ce qu'un observateur verrait.

Les \textit{briques} à notre disposition sont :
\begin{itemize}
  \item Un parallélépipède rectangle donné par ses trois
  dimensions \verb+A,B,C+ : il peut donc se transformer en cube et
  même en dé.
  \item Un point pouvant être défini de deux façons :
\begin{itemize}
  \item par ses coordonnées cartésiennes $(x,y,z)$ ;
  \item ou en coordonnées sphériques $(R,\theta,\phi)$.
  $(\theta,\phi)$ sont la longitude et la latitude.
\end{itemize}
  \item Un rectangle.
  \item Un cercle défini par la normale à son plan, son origine et
  son rayon, un arc de cercle défini comme le cercle avec ses deux angles limites.
  \item Un tétraèdre donné par les coordonnées du centre de sa base et le rayon du
  cercle inscrivant chaque face, que l'on peut faire
  tourner.
  \item Une pyramide à base carrée donnée par le demi-côté de sa
  base et sa hauteur que l'on peut faire tourner et placer où on
  veut.
  \item Une sphère donnée par les coordonnées du centre \verb+CX=...+,\verb+CY=...+,\verb+CZ=...+
   et le rayon, que l'on peut faire
  tourner avec les paramètres
  \verb+RotX=...+,\verb+RotY=...+,\verb+RotZ=...+.

  On pourra choisir de dessiner un méridien ou en cercle parallèle
  particulier.
  \item Une demi-sphère creuse ou pas, avec les mêmes paramètres
  que la sphère.
  \item Un cylindre vertical défini par son rayon, sa hauteur, que l'on peut faire
  tourner avec les paramètres
  \verb+RotX=...+,\verb+RotY=...+,\verb+RotZ=...+ et dont le centre
  de la base se placera avec les paramètres \verb+CX=...+,\verb+CY=...+,\verb+CZ=...+
  \item Un cône et tronc de cône définis par le rayon de la base,
  la hauteur et la fraction de hauteur qu'on souhaite retenir (pour le tronc ce cône).
  On peut les placer ou l'on veut et les faire tourner comme les autres éléments.
  \item Un cercle défini par la normale à son plan, son origine et
  son rayon.
\end{itemize}
\section{Parallélépipède, cube et dé}
Le parallélépipède est défini par ses trois dimensions
\textsf{A,B,C}. On peut le déplacer en fixant les coordonnées de
son centre avec : \textsf{CX,CY,CZ} et le faire tourner avec autour
des axes avec : \textsf{RotX,RotY,RotZ} dont les valeurs sont par défauts, positionnées à~0.
\begin{verbatim}
% positionnement du point de vue
\psset{THETA=70,PHI=30,Dobs=100,Decran=10}
% les dimensions du parallélépipède
\psset{A=5,B=5,C=A,fillstyle=solid,fillcolor=GrisClair,linecolor=red}
\Die
\end{verbatim}
\begin{center}
\begin{pspicture}(-1,-1)(1,1)
\psset{THETA=70,PHI=30,Dobs=100,Decran=10}
\psset{A=5,B=5,C=A,fillstyle=solid,fillcolor=GrisClair,linecolor=red}
\Die
\end{pspicture}
\end{center}
Faisons tourner le dé autour de $Oz$.

\multido{\iRotZ=0+45}{8}{%
\begin{pspicture}(-1.5,-1.5)(1.5,1.5)
\psset{THETA=70,PHI=30,Dobs=200,Decran=10}
\psset{A=5,B=5,C=A,fillstyle=solid,fillcolor=GrisClair,linecolor=red}
\psset{RotZ=\iRotZ}
\tapis
\Die%
\axeOZ
\uput[180](Z'){\texttt{RotZ=\iRotZ}}
\end{pspicture}\hfill }
% parallélépipède défini par la demi-longueur de ses côtés
% A (suivant OX); B A (suivant OY) ; C (suivant OZ)
% CX, CY, CZ sont les coordonnées du centre
% RotZ=...,RotY=...,RotX=... sont les rotations
% qu'on peut lui faire subir autour des axes.
% La commande s'appelle \Cube

\textbf{Avec un parallélépipède quelconque en rotation autour de OX}. On
rappelle que \verb+CX+, \verb+CY+ et \verb+CZ+ servent à
transporter le centre du parallélépipède au point dont les
coordonnées sont \verb+(CX,CY,CZ)+ et que \verb+RotX+
le fait tourner autour de OX d'un angle égal à
\verb+RotX+ etc.
\begin{center}
\psset{THETA=-10,PHI=20,Dobs=200,Decran=10}
\multido{\iCX=0+30}{8}{%
\begin{pspicture}(-1.5,-1.5)(1.5,1.5)
% point défini par ses coordonnées (x,y,z)
% \PointThreeD(x,y,z){name}
\PointThreeD(0,0,0){O}
\PointThreeD(0,0,20){Z}
\PointThreeD(50,0,0){X}
\PointThreeD(0,20,0){Y}
\psset{A=20,B=5,C=10,fillstyle=solid,fillcolor=LightBlue,linecolor=gray}
\psset{CX=0,CZ=0,CY=0,RotZ=0,RotY=0,RotX=\iCX}
\Cube%
\psset{linestyle=dashed}
\psline(O)(Z)
\psline(O)(X)
\psline(O)(Y)
\uput[0](Z){Z}
\uput[0](X){X}
\uput[0](Y){Y}
\end{pspicture}\hfill}
\end{center}
\section{Sphère, hémisphère, parallèles et méridiens}
\begin{center}
\psset{THETA=60,PHI=30,Dobs=100,Decran=10}
\begin{pspicture}(-3,-4)(3,5)
% CX,CY,CZ coordonnées centre de l'objet
% \SphereThreeD[CX=...,CY=...,CZ=...]{rayon}
\psset{CX=0,CZ=0,CY=0}
{\psset{fillstyle=gradient,gradbegin=white,gradend=blue,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\SphereThreeD{20}}
% PhiCercle=latitude du cercle
% \SphereCercle[PhiCercle=...]{rayon}
\psset{linecolor=red,PhiCercle=45}
\SphereCercle{20}
% ThetaMeridien=longitude du méridien
% \SphereMeridien[ThetaMeridien=...]{rayon}
\SphereMeridien[ThetaMeridien=45]{20}
% \PointLongitudeLatitude{rayon}{longitude}{latitude}{nom du point}
\PointLongitudeLatitude{20}{45}{45}{A}
\PointLongitudeLatitude{40}{45}{45}{B}
\psline[linecolor=magenta]{->}(A)(B)
\PointLongitudeLatitude{20}{0}{90}{Nord}
\PointLongitudeLatitude{40}{0}{90}{Nord1}
\psline[linecolor=magenta]{->}(Nord)(Nord1)
\SphereCercle[PhiCercle=0]{20}
\SphereMeridien[ThetaMeridien=0]{20}
\end{pspicture}
\hfill
\begin{pspicture}(-3,-4)(3,5)
% CX,CY,CZ coordonnées centre de l'objet
% \DemiSphereThreeD[CX=...,CY=...,CZ=...]{rayon}
\psset{CX=0,CZ=0,CY=0}
\psset{fillstyle=gradient,gradbegin=cyan,gradend=magenta,%
gradmidpoint=0,linecolor=red,linewidth=0.1mm}
\DemiSphereThreeD[RotY=90]{20}
\end{pspicture}
\end{center}
\section{Demi-sphères creuses ou pas}
\begin{center}
\begin{pspicture}(-3,-4)(3,5)
\psset{THETA=185,PHI=0,Dobs=100,Decran=10}
% CX,CY,CZ coordonnées centre de l'objet
% \SphereThreeD[CX=...,CY=...,CZ=...]{rayon}
\psset{fillstyle=gradient,gradbegin=white,gradend=blue,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\DemiSphereThreeD[CZ=-5,RotX=180,RotY=-10]{20}
\DemiSphereThreeD[CZ=5,RotY=10]{20}
\psset{fillstyle=gradient,gradbegin=white,gradend=red,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\SphereCreuse[CZ=-5,RotX=180,RotY=-10]{20}
\SphereCreuse[CZ=5,RotY=10]{20}
\end{pspicture}
\hfill
\begin{pspicture}(-3,-4)(3,5)
\psset{THETA=10,PHI=30,Dobs=100,Decran=10}
% CX,CY,CZ coordonnées centre de l'objet
% \SphereThreeD[CX=...,CY=...,CZ=...]{rayon}
\psset{CX=0,CZ=0,CY=0,RotX=180,RotY=20}
\psset{fillstyle=gradient,gradbegin=white,gradend=blue,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\DemiSphereThreeD[CX=0]{20}
\psset{fillstyle=gradient,gradbegin=white,gradend=red,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\SphereCreuse[CX=0]{20}
\end{pspicture}
\end{center}
\begin{verbatim}
\psset{fillstyle=gradient,gradbegin=white,gradend=blue,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\DemiSphereThreeD[CZ=-5,RotX=180,RotY=-10]{20}
\DemiSphereThreeD[CZ=5,RotY=10]{20}
\psset{fillstyle=gradient,gradbegin=white,gradend=red,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\SphereCreuse[CZ=-5,RotX=180,RotY=-10]{20}
\SphereCreuse[CZ=5,RotY=10]{20}
\end{verbatim}
\subsection{Dessiner un cylindre}
Le cylindre sera donné par le rayon de sa base et sa hauteur. Le
centre de la base sera positionné avec \textsf{CX,CY,CZ}, on le fait tourner autour
autour des axes avec \textsf{RotX,RotY,RotZ}.

\verb+\CylindreThreeD{radius}{hauteur}+
\begin{center}
\begin{pspicture}(-5,-4)(5,5)
\psset{THETA=65,PHI=40,Dobs=150,Decran=10}
% plan horizontal
{\psset{normaleLongitude=0,%
                normaleLatitude=90,%
                Xorigine=0,%
                Yorigine=0,%
                Zorigine=0}
\FrameThreeD[fillstyle=solid,fillcolor=cyan](-50,0)(50,50)
\FrameThreeD[fillstyle=solid,fillcolor=OrangePale](-50,0)(50,-50)
\QuadrillageThreeD[linecolor=green,linewidth=0.2mm,grille=10,%
                  Ymin=-50,Ymax=50,Xmax=50,Xmin=-50]}
{\psset{fillstyle=gradient,gradbegin=white,gradend=red,gradmidpoint=0.2,linewidth=0.1mm}
\multido{\iCY=-45+90}{2}{%
\CylindreThreeD[CX=-45,CY=\iCY,CZ=0]{5}{50}
\DemiSphereThreeD[CX=-45,CZ=50,CY=\iCY,fillstyle=gradient,gradbegin=white,gradend=yellow]{5}}
{\psset{CX=0,CY=0,CZ=0}
\CylindreThreeD{10}{15}
\psset{CX=0,CY=0,CZ=15}
\CylindreThreeD{20}{5}}
{\psset{fillstyle=gradient,gradbegin=white,gradend=blue,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\DemiSphereThreeD[CZ=35,RotX=180]{20}}
{\psset{fillstyle=gradient,gradbegin=white,gradend=red,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm}
\SphereCreuse[CZ=35,RotX=180]{20}}
{\psset{CX=15,CY=15,CZ=5,RotY=90,RotX=0,RotZ=30}
\CylindreThreeD{5}{20}}
\multido{\iCY=-45+90}{2}{%
\CylindreThreeD[CX=45,CY=\iCY,CZ=0]{5}{50}
\DemiSphereThreeD[CX=45,CZ=50,CY=\iCY,fillstyle=gradient,gradbegin=white,gradend=yellow,linestyle=none]{5}}}
\end{pspicture}
\end{center}
{\footnotesize
\begin{verbatim}
{\psset{CX=0,CY=0,CZ=-5}
\CylindreThreeD{10}{15}}
{\psset{CX=15,CY=15,CZ=0,RotY=90,RotX=0}
\CylindreThreeD{5}{20}}
\end{verbatim}}
\section{Plans et quadrillages}
\psset{THETA=-10,PHI=10,Dobs=200,Decran=10}
\begin{pspicture}(-5,-2)(5,4)
% plan de front
{\psset{normaleLongitude=180,%
                normaleLatitude=0,%
                Xorigine=0,%
                Yorigine=0,%
                Zorigine=0}
\FrameThreeD[fillstyle=solid,fillcolor=OrangePale](-50,-50)(50,50)
\QuadrillageThreeD[linecolor=blue,linewidth=0.2mm,grille=10,%
                  Ymin=-50,Ymax=50,Xmax=50,Xmin=-50]}
% plan vertical de gauche
{\psset{normaleLongitude=90,%
                normaleLatitude=0,%
                Xorigine=0,%
                Yorigine=50,%
                Zorigine=0}
\FrameThreeD[fillstyle=solid,fillcolor=yellow](0,-50)(50,50)
\QuadrillageThreeD[linecolor=blue,linewidth=0.2mm,grille=10,%
                  Ymin=-50,Ymax=50,Xmax=50,Xmin=0]}
% plan vertical à droite
{\psset{normaleLongitude=90,%
                normaleLatitude=0,%
                Xorigine=0,%
                Yorigine=-50,%
                Zorigine=0}
\FrameThreeD[fillstyle=solid,fillcolor=yellow](0,-50)(50,50)
\QuadrillageThreeD[linecolor=red,linewidth=0.2mm,grille=10,%
                  Ymin=-50,Ymax=50,Xmax=50,Xmin=0]}
% plan horizontal
{\psset{normaleLongitude=0,%
                normaleLatitude=90,%
                Xorigine=0,%
                Yorigine=0,%
                Zorigine=0}
\FrameThreeD[fillstyle=solid,fillcolor=cyan](-50,0)(50,50)
\QuadrillageThreeD[linecolor=green,linewidth=0.2mm,grille=10,%
                  Ymin=0,Ymax=50,Xmax=50,Xmin=-50]}
\PointThreeD(0,0,0){O}
\PointThreeD(0,0,100){Z}
\PointThreeD(100,0,0){X}
\PointThreeD(0,100,0){Y}
{\psset{linecolor=red,linestyle=dashed}
\psline(O)(Z)
\psline(O)(X)
\psline(O)(Y)}
\uput[0](Z){Z}
\uput[0](X){X}
\uput[0](Y){Y}
\end{pspicture}
\section{Points et droites}
\psset{THETA=70,PHI=30,Dobs=150,Decran=10}
\begin{center}
\begin{pspicture}(-5,-2)(5,4)
\PointThreeD(0,0,0){O}
\PointThreeD(0,0,60){Z}
\PointThreeD(60,0,0){X}
\PointThreeD(0,60,0){Y}
{\psset{linecolor=red,linestyle=dashed}
\psline(O)(Z)
\psline(O)(X)
\psline(O)(Y)}
\uput[0](Z){Z}
\uput[0](X){X}
\uput[0](Y){Y}
\PointThreeD(25,-25,25){A}
\PointThreeD(25,25,25){B}
\PointThreeD(25,25,-25){C}
\PointThreeD(25,-25,-25){D}
\PointThreeD(-25,-25,25){E}
\PointThreeD(-25,25,25){F}
\PointThreeD(-25,25,-25){G}
\PointThreeD(-25,-25,-25){H}
\pspolygon(A)(B)(C)(D)
\pspolygon(E)(F)(G)(H)
\psline(A)(E)
\psline(B)(F)
\psline(C)(G)
\psline(D)(H)
\psset{linestyle=dashed}
\psline(A)(G)
\psline(B)(H)
\psline(C)(E)
\psline(D)(F)
% routine page 49 in présentation de PSTricks
% D.Girou cahier 16 Gutengerg
\newcounter{lettre}
\multido{\i=1+1}{8}{%
\setcounter{lettre}{\i}
\psdot[linecolor=red](\Alph{lettre})
\uput[90](\Alph{lettre}){\Alph{lettre}}
}
\end{pspicture}
\end{center}
\section{Cercles}
\begin{center}
\psset{THETA=80,PHI=50,Dobs=120,Decran=10}
\begin{pspicture}(-5,-6)(5,1)
\multido{\iX=-70+10}{15}{%
\PointThreeD(\iX,0,0){X1}
\PointThreeD(\iX,50,0){X2}
\psline(X1)(X2)}
\multido{\iY=0+10}{6}{%
\PointThreeD(-70,\iY,0){Y1}
\PointThreeD(70,\iY,0){Y2}
\psline(Y1)(Y2)}
\psset{normaleLongitude=0,normaleLatitude=90,Zorigine=0}
\multido{\iXorigine=-65+10}{14}{%
\multido{\iYorigine=5+10}{5}{%
\psset{Yorigine=\iYorigine,Xorigine=\iXorigine}
\CircleThreeD[linecolor=red]{5}}}
\end{pspicture}
\end{center}
\begin{verbatim}
\psset{normaleLongitude=0,normaleLatitude=90,Zorigine=0}
\multido{\iXorigine=-65+10}{14}{%
\multido{\iYorigine=5+10}{5}{%
\psset{Yorigine=\iYorigine,Xorigine=\iXorigine}
\CircleThreeD[linecolor=red]{5}}}
\end{verbatim}
\section{Exemples divers}
\psset{THETA=70,PHI=40,Dobs=150,Decran=8}
\begin{center}
\begin{pspicture}(-5,-4)(5,8)
% parallélépipède défini par la demi-longueur de ses côtés
% A (suivant OX); B A (suivant OY) ; C (suivant OZ)
% CX, CY, CZ sont les coordonnées du centre
% RotZ=...,RotY=...,RotX=... sont les rotations
% qu'on peut lui faire subir autour des axes.
% La commande s'appelle \Cube
{\psset{A=50,B=5,C=5,fillstyle=solid,fillcolor=GrisClair,linecolor=red}
\psset{CX=0,CZ=5,CY=-5,RotZ=0,RotY=0,RotX=0}
\Cube}
{\psset{A=5,B=5,C=50,fillstyle=solid,fillcolor=GrisClair,linecolor=red}
\psset{CX=0,CZ=60,CY=-5,RotZ=0,RotY=0,RotX=0}
\Cube}
\PointThreeD(0,0,0){O}
\PointThreeD(0,0,120){Z}
\PointThreeD(100,0,0){X}
\PointThreeD(0,60,0){Y}
{\psset{linecolor=red,linestyle=dashed}
\psline(O)(Z)
\psline(O)(X)
\psline(O)(Y)}
\uput[0](Z){Z}
\uput[0](X){X}
\uput[0](Y){Y}
\multido{\iX=-70+10}{15}{%
\PointThreeD(\iX,0,0){X1}
\PointThreeD(\iX,50,0){X2}
\psline(X1)(X2)}
\multido{\iY=0+10}{6}{%
\PointThreeD(-70,\iY,0){Y1}
\PointThreeD(70,\iY,0){Y2}
\psline(Y1)(Y2)}
\psset{fillstyle=gradient,gradbegin=white,gradend=red,gradmidpoint=0.2,linewidth=0.1mm}
% Le cylindre est défini par son rayon, sa hauteur
% les coordonnées du centre de la base CX, CY et CZ
% RotZ=...,RotY=...,RotX=... sont les rotations
% qu'on peut lui faire subir autour des axes.
% \CylindreThreeD{rayon}{hauteur}
{\psset{CX=-60,CY=-5,CZ=0}
\CylindreThreeD{5}{50}}
\multido{\iZ=60+20,\iX=-60+20,\iY=-5+7}{4}{%
\psset{fillstyle=gradient,gradbegin=white,gradend=blue,%
gradmidpoint=0.2,linecolor=cyan,linewidth=0.1mm,%
CX=\iX,CZ=\iZ,CY=\iY}
\SphereThreeD{4}}
{\psset{CZ=0,CY=40,CX=50,RotZ=20,linecolor=black,fillstyle=gradient,Rtetraedre=10}
\Tetraedre}
\psset{RotX=0,RotZ=30,RotY=0,CX=-20,CZ=0,CY=25,fillstyle=solid,linecolor=black,A=15,Hpyramide=10}
\Pyramide
\psset{linecolor=red,fillstyle=gradient,gradbegin=yellow,gradend=red,gradmidpoint=0,linewidth=0.05mm}
{\psset{CX=60,CZ=0,CY=10,fracHcone=0.75}
\ConeThreeD{10}{100}}
\end{pspicture}
\end{center}

\end{document}
