summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-section_en_corr.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-section_en_corr.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-section_en_corr.tex955
1 files changed, 955 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-section_en_corr.tex b/Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-section_en_corr.tex
new file mode 100644
index 00000000000..5372ef07b5f
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-section_en_corr.tex
@@ -0,0 +1,955 @@
+\section{Sectioning a solid with a plane}
+
+\subsection{Drawing the intersection between a plane and a solid}
+
+\subsubsection{The parameters}
+
+The option \texttt{intersectionplan=\{[a b c d]\}} allows the user
+to draw the intersection between a plane and a solid. The numbers
+between the braces are the coefficients of the affine plane with
+equation: $ax+by+cz+d=0$. It is possible to draw the intersection
+between a solid and more than one plane by placing the appropriate
+parameters in order, as in the following example.
+
+The drawing is activated with \verb+[intersectiontype=0]+ or any
+value $\geq0$.
+
+The colour of the intersection line is chosen with the option
+\verb+[intersectioncolor=(bleu) (rouge) etc.]+. In the same order,
+the thickness of the appropriate line
+\verb+[intersectionlinewidth=1 2 etc.]+ (dimensions in picas) is
+set up.
+
+
+The hidden parts, drawn with dashed lines, will be shown with
+\verb+[action=draw]+.
+
+\begin{LTXexample}[width=7cm]
+\begin{pspicture}(-3,-2)(3,7.5)
+\psset{viewpoint=50 20 20 rtp2xyz,Decran=50}
+\psset{lightsrc=viewpoint} \psSolid[object=cylindre,
+ ngrid=1 24,
+ r=2,
+ fillcolor=yellow!25,
+ intersectiontype=0,
+ intersectionplan={
+ [0 0 1 -1]
+ [0 0 1 -2]
+ [0 0 1 -3]
+ [0.894 0 0.447 -1.8]},
+ intersectioncolor=(bleu) (rouge) (vert) (rose),
+ intersectionlinewidth=1 1.5 1.8 2.2]
+\axesIIID(2,2,6)(3,3,7)
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Slicing a solid}
+
+\subsubsection{Slicing a filled solid}
+
+The object under consideration is a cylinder. The plane that
+slices the object is defined by:
+
+ \begin{verbatim}
+ plansepare={[a b c d]}
+ \end{verbatim}
+
+The two parts are not drawn, but memorised with the name
+\texttt{name=partiescylindre}:
+
+ \begin{verbatim}
+\psset{solidmemory}
+\psSolid[object=cylindre,
+ r=2,h=6
+ ngrid=6 24,
+ plansepare={[0.707 0 0.707 0]},
+ name=partiescylindre,
+ action=none](0,0,-3)
+ \end{verbatim}
+
+
+Then they are displayed separately using their respective index
+numbers. The numbering of the two parts is determined by the
+direction of the normal to the slicing plane: 0 if above the
+normal, 1 if below. For both parts, the sliced face carries the
+number 0. If there are several sliced faces, as may happen in the
+case of a torus, they are numbered 0, 1 etc.
+
+
+ \begin{verbatim}
+\psSolid[object=load,
+ load=partiescylindre1,
+ fillcolor={[rgb]{0.7 1 0.7 }},
+ fcol=0 (1 1 0.7 setrgbcolor)]
+\psSolid[object=load,
+ load=partiescylindre0,RotZ=60,
+ fillcolor={[rgb]{0.7 1 0.7 }},
+ fcol=0 (1 1 0.7 setrgbcolor)](0,4,0)
+ \end{verbatim}
+
+\begin{center}
+\begin{pspicture}(-4,-5)(7,4)
+\psframe(-4,-5)(7,4)
+\psset{viewpoint=50 -40 10 rtp2xyz,Decran=50,linecolor=darkgray}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,action=draw,
+ base=-3 5 -3 5,
+ linecolor=red](0,0,-3)
+\psset{solidmemory}
+\psSolid[object=cylindre,
+ r=2,h=6,
+ ngrid=6 24,
+ plansepare={[0.707 0 0.707 0]},
+ name=partiescylindre,
+ action=none](0,0,-3)
+\psSolid[object=load,
+ load=partiescylindre1,
+ fillcolor={[rgb]{0.7 1 0.7 }},
+ fcol=0 (1 1 0.7 setrgbcolor)]
+\psSolid[object=load,
+ load=partiescylindre0,RotZ=90,
+ fillcolor={[rgb]{0.7 1 0.7 }},
+ fcol=0 (1 1 0.7 setrgbcolor)](0,4,0)
+\psSolid[object=plan,action=draw,
+ definition=equation,
+ args={[0.707 0 0.707 0] 90},
+ base=-2 2 -3 3,planmarks,showBase]
+\axesIIID(0,0,0)(2.5,2.5,3.5)
+\end{pspicture}
+\end{center}
+
+\subsubsection{Slicing a hollow solid}
+
+The options \verb+[rm=0,hollow]+ allow us to not only remove a
+face \verb+[rm=0]+ but also to see inside it \verb+[hollow]+.
+
+\begin{center}
+\begin{pspicture}(-4,-5)(7,4)
+\psframe(-4,-5)(7,4)
+\psset{viewpoint=50 -40 10 rtp2xyz,Decran=50,linecolor=darkgray}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,action=draw,
+ base=-3 5 -3 5,
+ linecolor=red](0,0,-3)
+\psset{solidmemory}
+\psSolid[object=cylindre,
+ r=2,h=6,
+ ngrid=6 24,
+ plansepare={[0.707 0 0.707 0.5]},
+ name=partiescylindre,
+ action=none](0,0,-3)
+\psSolid[object=load,
+ load=partiescylindre1,
+ fillcolor={[rgb]{0.7 1 0.7 }},
+ rm=0,hollow,
+ incolor={[rgb]{1 1 0.7}}]
+\psSolid[object=load,
+ load=partiescylindre0,RotZ=90,
+ fillcolor={[rgb]{0.7 1 0.7 }},
+ rm=0,hollow,
+ incolor={[rgb]{1 1 0.7}}](0,4,0)
+\psSolid[object=plan,action=draw,
+ definition=equation,
+ args={[0.707 0 0.707 0.5] 90},
+ base=-2 2 -3 3,planmarks,showBase]
+\composeSolid
+\end{pspicture}
+\end{center}
+
+
+\subsection{Slice of a pyramid}
+
+\subsubsection{Highlighting the contour lines and first slice}
+
+This pyramid is generated as \verb+[object=new]+ by giving a list
+of the coordinates of the vertices, and the vertices of each face.
+
+\begin{verbatim}
+ sommets=
+ 0 -2 0 %% 0
+ -2 0 0 %% 1
+ 0 4 0 %% 2
+ 4 0 0 %% 3
+ 0 0 5, %% 4
+ faces={
+ [3 2 1 0]
+ [4 0 3]
+ [4 3 2]
+ [4 2 1]
+ [4 1 0]
+}
+\end{verbatim}
+
+In the first diagram, the slicing lines are highlighted.
+
+ \begin{verbatim}
+ intersectiontype=0,
+ intersectionplan={[0 0 1 -1] [0 0 1 -2]},
+ intersectionlinewidth=1 2,
+ intersectioncolor=(bleu) (rouge)
+ \end{verbatim}
+
+Then we cut off the upper part, and draw the slicing plane as
+well.
+
+ \begin{verbatim}
+\psSolid[object=new,
+ sommets=
+ 0 -2 0 %% 0
+ -2 0 0 %% 1
+ 0 4 0 %% 2
+ 4 0 0 %% 3
+ 0 0 5, %% 4
+ faces={
+ [3 2 1 0]
+ [4 0 3]
+ [4 3 2]
+ [4 2 1]
+ [4 1 0]},
+ plansepare={[0 0 1 -2]},
+ name=firstSlice,
+ action=none]
+\psSolid[object=load,action=draw*,
+ load=firstSlice1]
+\psSolid[object=plan,
+ definition=equation,
+ args={[0 0 1 -2]},
+ base=-3 5 -3 5,action=draw]
+ \end{verbatim}
+
+To avoid having to repeatedly type the vertices and faces of the
+pyramid, we save these data to the files:
+\begin{itemize}
+ \item \texttt{Pyramid-couleurs.dat}
+ \item \texttt{Pyramid-faces.dat}
+ \item \texttt{Pyramid-sommets.dat}
+ \item \texttt{Pyramid-io.dat}
+\end{itemize}
+thanks to the command \verb+[action=writesolid]+:
+
+ \begin{verbatim}
+\psSolid[object=new,
+ sommets=
+ 0 -2 0 %% 0
+ -2 0 0 %% 1
+ 0 4 0 %% 2
+ 4 0 0 %% 3
+ 0 0 5, %% 4
+ faces={
+ [3 2 1 0]
+ [4 0 3]
+ [4 3 2]
+ [4 2 1]
+ [4 1 0]
+},file=Pyramid,fillcolor=yellow!50,
+ action=writesolid]
+ \end{verbatim}
+
+All these lines of code could then be removed and, thereafter, we
+would recall the data with the command:
+
+ \begin{verbatim}
+\psSolid[object=datfile,
+ file=Pyramid]
+ \end{verbatim}
+
+\begin{center}
+\psset{unit=0.75}
+\begin{pspicture}(-5,-2)(5,7)
+%\psframe(-5,-2)(5,7)
+\psset{viewpoint=50 20 10 rtp2xyz,Decran=50}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-3 5 -3 5,
+ linecolor=gray]
+%% create the pyramid with base area in xy-plane
+\psSolid[object=new,
+ sommets=
+ 0 -2 0 %% 0
+ -2 0 0 %% 1
+ 0 4 0 %% 2
+ 4 0 0 %% 3
+ 0 0 5, %% 4
+faces={
+ [3 2 1 0]
+ [4 0 3]
+ [4 3 2]
+ [4 2 1]
+ [4 1 0]
+}, action=draw*,
+ intersectiontype=0,
+ intersectionplan={[0 0 1 -1]
+ [0 0 1 -2]},
+ intersectionlinewidth=1 2,
+ intersectioncolor=(bleu) (rouge)]
+\axesIIID[linecolor=blue](4,4,5)(5,5,6)
+\end{pspicture}
+\hfill
+\begin{pspicture}(-5,-2)(5,7)
+%\psframe(-5,-2)(5,7)
+\psset{viewpoint=50 20 10 rtp2xyz,Decran=50}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-3 5 -3 5,
+ linecolor=gray]
+\psset{solidmemory}
+%% create the pyramid with base area in xy-plane
+\psSolid[object=new,
+ sommets=
+ 0 -2 0 %% 0
+ -2 0 0 %% 1
+ 0 4 0 %% 2
+ 4 0 0 %% 3
+ 0 0 5, %% 4
+faces={
+ [3 2 1 0]
+ [4 0 3]
+ [4 3 2]
+ [4 2 1]
+ [4 1 0]
+},
+ plansepare={[0 0 1 -2]},
+ name=firstSlice,
+ action=none]
+\psSolid[object=load,action=draw*,
+ load=firstSlice1]
+\psSolid[object=plan,
+ definition=equation,
+ args={[0 0 1 -2]},
+ base=-3 5 -3 5,action=draw]
+\axesIIID[linecolor=blue](4,4,2)(5,5,6)
+\end{pspicture}
+\end{center}
+
+\subsubsection{The second slice and its insertion within the pyramid}
+
+Having removed the upper part \texttt{firstSlice0} (which no
+longer appears), we slice the frustum of the pyramid
+\texttt{firstSlice1}, and keep the upper part of this as
+\texttt{secondSlice0}, then we record it and insert it into a wire
+frame model of the pyramid:
+
+
+ \begin{verbatim}
+\psset{solidmemory}
+\psSolid[object=datfile,
+ file=Pyramid,
+ plansepare={[0 0 1 -2]},
+ name=firstSlice,
+ action=none]
+\psSolid[object=load,
+ load=firstSlice1,
+ action=none,
+ plansepare={[0 0 1 -1]},
+ name=secondSlice]
+\psSolid[object=load,action=draw*,
+ load=secondSlice0]
+\psSolid[object=load,
+ load=secondSlice0,
+ file=slicePyramid,
+ action=writesolid]
+\psSolid[object=datfile,fillcolor=yellow!50,
+ file=slicePyramid]
+ \end{verbatim}
+
+
+\begin{center}
+\psset{unit=0.75}
+\begin{pspicture}(-5,-2)(4,7)
+%\psframe(-4,-2)(4,7)
+\psset{viewpoint=50 20 10 rtp2xyz,Decran=50}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-3 5 -3 5,
+ linecolor=gray]
+\psset{solidmemory}
+%% create the pyramid with base area in xy-plane
+%\psSolid[object=new,
+% sommets=
+% 0 -2 0 %% 0
+% -2 0 0 %% 1
+% 0 4 0 %% 2
+% 4 0 0 %% 3
+% 0 0 5, %% 4
+% faces={
+% [3 2 1 0]
+% [4 0 3]
+% [4 3 2]
+% [4 2 1]
+% [4 1 0]
+%},file=Pyramid,fillcolor=yellow!50,
+% action=writesolid]
+\psSolid[object=datfile,
+ file=Pyramid,
+ plansepare={[0 0 1 -2]},
+ name=firstSlice,
+ action=none]
+\psSolid[object=plan,
+ definition=equation,
+ args={[0 0 1 -1]},action=draw,
+ base=-3 5 -3 5]
+\psSolid[object=load,
+ load=firstSlice1,
+ action=none,
+ plansepare={[0 0 1 -1]},
+ name=secondSlice]
+%\psSolid[object=load,action=draw*,
+% load=secondSlice0]
+%\psSolid[object=load,
+% load=secondSlice0,
+% file=slicePyramid,
+% action=writesolid]
+\psSolid[object=datfile,fillcolor=yellow!50,
+ file=slicePyramid]
+\psSolid[object=plan,
+ definition=equation,
+ args={[0 0 1 -2]},
+ base=-3 5 -3 5,action=draw]
+\axesIIID[linecolor=blue](0,0,2)(5,5,6)
+\end{pspicture}
+\hfill
+\begin{pspicture}(-4,-2)(6,7)
+\psset{viewpoint=50 20 10 rtp2xyz,Decran=50}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-3 5 -3 5,
+ linecolor=gray]
+\psSolid[object=datfile,fillcolor=yellow!50,
+ file=slicePyramid]
+\psSolid[object=datfile,
+ file=Pyramid,action=draw]
+\axesIIID[linecolor=blue](4,4,2)(5,5,6)
+\end{pspicture}
+\end{center}
+
+\subsection{Slicing an octahedron with a plane parallel to one of its faces}
+
+\subsubsection{The view inside}
+
+Recall that there are options \verb+[rm=0,hollow]+ that allow us,
+on the one hand, to remove a face \verb+[rm=0]+ and, on the other,
+to look inside \texttt{hollow}.
+
+In the following example, we shall start by generating the
+required objects without drawing them (\verb+action=none+).
+
+We construct the octahedron, giving the center of the face with
+index $1$ the name $G$, then define the point $H$ which satisfies
+$\overrightarrow{OH} = 0.8\,\overrightarrow{OG}$. After that we
+define $P$ to be the plane through $H$ parallel to the face of the
+octahedron with index $1$. Finally, we slice the octahedron using
+the plane $P$.
+
+\begin{LTXexample}[width=7.5cm]
+\begin{pspicture}(-3.5,-3)(4.5,5)
+\psset{viewpoint=100 5 10 rtp2xyz,Decran=80,
+ lightsrc=viewpoint,solidmemory,action=none}
+\psSolid[object=octahedron,
+ a=4,name=my_octahedron,]
+\psSolid[object=point,
+ definition=solidcentreface,
+ args=my_octahedron 1,
+ name=G,]
+\psSolid[object=point,
+ definition=mulv3d,
+ args=G .8,
+ name=H,]
+\psSolid[object=plan,
+ definition=solidface,
+ args=my_octahedron 1,
+ base=-4 4 -4 4,
+ name=P,](H,,)
+\psSolid[object=load,
+ load=my_octahedron,
+ plansepare=P,
+ name=part]
+\psSolid[object=load,load=part1,
+ rm=0,hollow,action=draw**,
+ fillcolor={[rgb]{0.7 1 0.7}},
+ incolor={[rgb]{1 1 0.7}},]
+\psSolid[object=plan,args=P,
+ action=draw,showBase]
+\psSolid[object=line,
+ args=0 0 0 H,
+ linestyle=dashed,]
+\psProjection[object=point,plan=P,args=0 0,
+ fontsize=20,pos=cl,text=H,phi=90,]
+\axesIIID[linecolor=blue,linewidth=0.4pt](0,0,0)(4,4,4)
+\end{pspicture}
+\end{LTXexample}
+
+\subsubsection{Regarding the solid as filled}
+
+The option \verb+[fcol=0 (YellowOrange)]+ allows us to colour the
+face with index 0.
+
+\begin{LTXexample}[width=7.5cm]
+\begin{pspicture}(-3.5,-3)(4.5,5)
+\psset{viewpoint=100 5 10 rtp2xyz,Decran=80,
+ lightsrc=viewpoint,solidmemory,action=none}
+\psSolid[object=octahedron,
+ a=4,name=my_octahedron,]
+\psSolid[object=point,
+ definition=solidcentreface,
+ args=my_octahedron 1,
+ name=G,]
+\psSolid[object=point,
+ definition=mulv3d,
+ args=G .8,
+ name=H,]
+\psSolid[object=plan,
+ definition=solidface,
+ args=my_octahedron 1,
+ base=-4 4 -4 4,
+ name=P,](H,,)
+\psSolid[object=load,
+ load=my_octahedron,
+ plansepare=P,
+ name=part]
+\psSolid[object=load,
+ load=part1,
+ fcol=0 (YellowOrange),
+ action=draw**,
+ fillcolor={[rgb]{0.7 1 0.7}},]
+\psSolid[object=plan,args=P,
+ action=draw,showBase]
+\psSolid[object=line,
+ args=0 0 0 H,
+ linestyle=dashed,]
+\psProjection[object=point,plan=P,args=0 0,
+ fontsize=20,pos=cl,text=H,phi=90,]
+\axesIIID[linecolor=blue,linewidth=0.4pt](0,0,0)(4,4,4)
+\end{pspicture}
+\end{LTXexample}
+
+\subsubsection{The two parts of a sliced solid}
+
+You will recall that the direction of the normal of the slicing
+plane determines the numbering of the two parts: 0 if above the
+normal, 1 if below. For both parts, the sliced face carries the
+number 0. If there are several sliced faces, as in the case of the
+torus, they are numbered 0, 1 etc.
+
+Using two steps, we memorise both parts of the sliced solid:
+
+ \begin{verbatim}
+\psSolid[object=load,
+ load=my_octahedron,
+ plansepare=P,
+ name=part]
+ \end{verbatim}
+
+Then we position and render each part:
+
+ \begin{verbatim}
+\psSolid[object=load,
+ fcol=0 (YellowOrange),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ load=part1]
+\psSolid[object=load,
+ fillcolor={[rgb]{0.7 1 0.7}},
+ load=part0](H 2 mulv3d,,)
+\composeSolid
+ \end{verbatim}
+
+
+\begin{LTXexample}[width=7.5cm]
+\begin{pspicture}(-3.5,-3)(4.5,5)
+\psset{viewpoint=100 5 20 rtp2xyz,Decran=150,
+ lightsrc=viewpoint,solidmemory,action=none}
+\psSolid[object=octahedron,
+ a=2,name=my_octahedron,]
+\psSolid[object=point,
+ definition=solidcentreface,
+ args=my_octahedron 1,
+ name=G,]
+\psSolid[object=point,
+ definition=mulv3d,
+ args=G .7,
+ name=H,]
+\psSolid[object=plan,
+ definition=solidface,
+ args=my_octahedron 1,
+ base=-4 4 -4 4,
+ name=P,](H,,)
+\psSolid[object=load,
+ load=my_octahedron,
+ plansepare=P,
+ name=part]
+\psset{action=draw**}
+\psSolid[object=load,
+ load=part1,
+ fcol=0 (YellowOrange),
+ fillcolor={[rgb]{0.7 1 0.7}},]
+\psSolid[object=load,
+ fillcolor={[rgb]{0.7 1 0.7}},
+ load=part0](H 2 mulv3d,,)
+\composeSolid
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Slices of a cube}
+
+\subsubsection{Highlighting the edges of the cut}
+
+\begin{LTXexample}[width=8cm]
+\psset{viewpoint=100 30 20 rtp2xyz,Decran=150}
+\begin{pspicture}(-4,-3)(4,5)
+\psset{solidmemory}
+\psSolid[object=plan,definition=normalpoint,
+ args={1 1 1 [1 1 1]},action=none,name=P]
+\psSolid[object=cube,a=2,action=draw,
+ intersectiontype=0,
+ intersectionplan=P,
+ intersectionlinewidth=2,
+ intersectioncolor=(rouge),
+](1,1,1)
+\psProjection[object=point,
+ args=0 0,fontsize=10,pos=dc,
+ text=H,phi=-30,plan=P,
+]
+\psSolid[object=line,
+ linestyle=dashed,
+ args=0 0 0 1 1 1]
+\psSolid[object=vecteur,
+ linecolor=red,
+ args=1 1 1 .7 mulv3d](1,1,1)
+\axesIIID[linecolor=blue](2,2,2)(2.5,2.5,2.5)
+\end{pspicture}
+\end{LTXexample}
+
+\subsubsection{Showing the sliced cube with its hexagonal cut face}
+
+\begin{LTXexample}[width=8cm]
+\psset{viewpoint=100 30 20 rtp2xyz,Decran=150}
+\begin{pspicture}(-4,-3)(4,5)
+\psset{solidmemory}
+\psSolid[object=plan,action=none,definition=normalpoint,
+ args={1 1 1 [1 1 1]},name=P]
+\psSolid[object=cube,a=2,
+ plansepare=P,
+ action=none,
+ name=parts_cube,
+](1,1,1)
+\psSolid[object=load,
+ load=parts_cube1,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+]
+\psProjection[object=point,
+ args=0 0,fontsize=10,pos=dc,
+ text=H,phi=-30,plan=P,
+]
+\psSolid[object=vecteur,
+ linecolor=red,
+ args=1 1 1 .7 mulv3d](1,1,1)
+\axesIIID[linecolor=blue](2,2,2)(2.5,2.5,2.5)
+\end{pspicture}
+\end{LTXexample}
+
+\subsubsection{The sliced cube in various positions}
+
+Where we use the option that allows us to memorise a solid, in
+order to put the truncated cube, after undergoing various
+transformations, down on its cut face.
+
+ \begin{verbatim}
+\psset{solidmemory}
+\psSolid[object=datfile,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ name=C1,
+ action=none,
+ file=cubeHexagone]
+ \end{verbatim}
+
+
+\begin{center}
+\begin{pspicture}(-3,-3)(3,3)
+\psframe(-3,-2)(3,3)
+\psset{viewpoint=100 30 20 rtp2xyz,Decran=100}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-2 3 -2 3,
+ linecolor=gray]
+\psSolid[object=datfile,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ file=cubeHexagone]
+\axesIIID[linecolor=blue](2,2,2)(2.5,2.5,2.5)
+\end{pspicture}
+
+\hfil
+
+\begin{pspicture}(-2,-3)(4,3)
+\psframe(-2,-2)(4,3)
+\psset{viewpoint=100 -30 20 rtp2xyz,Decran=100}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-2 3 -2 3,
+ linecolor=gray]
+\psSolid[object=datfile,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ file=cubeHexagone]
+\axesIIID[linecolor=blue](2,2,2)(2.5,2.5,2.5)
+\end{pspicture}
+
+\begin{pspicture}(-3,-2)(3,3)
+\psframe(-3,-2)(3,3)
+\psset{viewpoint=100 225 20 rtp2xyz,Decran=100}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-2 3 -2 3,
+ linecolor=gray]
+\psSolid[object=datfile,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ file=cubeHexagone]
+\axesIIID[linecolor=blue](0,0,0)(2.5,2.5,2.5)
+\end{pspicture}
+\hfil
+\begin{pspicture}(-3,-2)(3,3)
+\psframe(-3,-2)(3,3)
+\psset{viewpoint=100 30 20 rtp2xyz,Decran=100}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-2 3 -2 3,
+ linecolor=gray]
+\psset{solidmemory}
+\psSolid[object=datfile,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ name=C1,
+ action=none,
+ file=cubeHexagone]
+\codejps{C1 {-1.5 -1.5 0 translatepoint3d} solidtransform
+drawsolid**
+}
+\axesIIID[linecolor=blue](0,0,0)(2.5,2.5,2.5)
+\end{pspicture}
+
+\begin{pspicture}(-3,-2)(3,4)
+\psframe(-3,-2)(3,3)
+\psset{viewpoint=100 30 20 rtp2xyz,Decran=100}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-2 3 -2 3,
+ linecolor=gray]
+\psset{solidmemory}
+\psSolid[object=datfile,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ name=C1,
+ action=none,
+ file=cubeHexagone]
+\codejps{C1 {-1.5 -1.5 0 translatepoint3d} solidtransform
+ {0 0 45 rotateOpoint3d} solidtransform
+drawsolid**
+}
+%\composeSolid
+\axesIIID[linecolor=blue](0,0,0)(2.5,2.5,2.5)
+\end{pspicture}
+\hfil
+\begin{pspicture}(-3,-2)(3,4)
+\psframe(-3,-2)(3,3)
+\psset{viewpoint=100 30 20 rtp2xyz,Decran=100}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psSolid[object=grille,
+ base=-2 3 -2 3,
+ linecolor=gray]
+\psset{solidmemory}
+\psSolid[object=datfile,
+ fcol=0 (Dandelion),
+ fillcolor={[rgb]{0.7 1 0.7}},
+ name=C1,
+ action=none,
+ file=cubeHexagone]
+\codejps{C1 {-1.5 -1.5 0 translatepoint3d} solidtransform
+ {0 0 45 rotateOpoint3d} solidtransform
+ {-35.2644 -90 add 0 0 rotateOpoint3d} solidtransform
+drawsolid*
+}
+\axesIIID[linecolor=blue](1,2.5,0.5)(2.5,3,2.5)
+\end{pspicture}
+\end{center}
+
+
+\subsection{Multiple sections}
+
+\subsubsection{Slicing a sphere with \texttt{PStricks}}
+
+\begin{LTXexample}[width=8cm]
+\begin{pspicture}(-4,-4)(4,4)
+\psset{viewpoint=100 20 20 rtp2xyz,Decran=75}
+\psset{solidmemory,lightsrc=viewpoint}
+\codejps{
+ /coeff 0.75 def /rO 4 def /OH coeff rO mul neg def}%
+\psSolid[object=sphere,
+ r=rO,ngrid=9 18,
+ plansepare={[1 0 0 OH]},
+ name=part,
+ action=none]
+\psSolid[object=load,
+ load=part1,plansepare={[-1 0 0 OH]},action=none,name=part]
+\psSolid[object=load,
+ load=part1,plansepare={[0 1 0 OH]},action=none,name=part]
+\psSolid[object=load,
+ load=part1,plansepare={[0 -1 0 OH]},action=none,name=part]
+\psSolid[object=load,
+ load=part1,plansepare={[0 0 1 OH]},action=none,name=part]
+\psSolid[object=load,
+ load=part1,plansepare={[0 0 -1 OH]},action=none,name=part]
+\psSolid[object=load,hue=.1 .8 0.5 1,
+ load=part1](0,0,0)
+\composeSolid
+\end{pspicture}
+\end{LTXexample}
+
+\subsubsection{Multiple sections of a parallelepiped}
+
+Multiple sections are better carried out inside a PostScript loop,
+within \verb+\codejps+; it's easier and quicker!
+
+In this example, the original solid is a parallelepiped.
+Truncations of the vertices and chamfering of the edges are
+effected by means of slicing planes, starting off with the
+vertices and finishing with the edges.
+
+\begin{LTXexample}[width=7cm]
+\begin{pspicture}(-3.5,-4)(3.5,4)
+\psset{viewpoint=100 -20 10 rtp2xyz,Decran=100}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\codejps{
+4 4 6 newparallelepiped
+45 90 360 {
+/iAngle exch def
+ /n_x iAngle cos 35.2644 cos mul def
+ /n_y iAngle sin 35.2644 cos mul def
+ /n_z 35.2644 sin def
+ /distance 2 3 add 3 sqrt div neg def
+[ n_x n_y n_z distance]
+solidplansepare
+} for
+45 90 360 {
+/iAngle exch def
+ /n_x iAngle cos 35.2644 cos mul def
+ /n_y iAngle sin 35.2644 cos mul def
+ /n_z 35.2644 sin neg def
+ /distance 2 3 add 3 sqrt div neg def
+[ n_x n_y n_z distance]
+solidplansepare
+} for
+45 90 360 {
+/iAngle exch def
+% plan : ax+by+cz-d=0
+[ iAngle cos % a
+ iAngle sin % b
+ 0 % c
+ -2.5 % -d
+] solidplansepare
+} for
+dup [.5 .2] solidputhuecolors
+solidlightOn
+drawsolid*}
+\end{pspicture}
+\end{LTXexample}
+\subsection{Sections of a torus}
+%\begin{pspicture}(-6,-4)(6,4)
+%\psSolid[r1=3,r0=1.5,
+% object=tore,
+%% ngrid=18 60,
+% file=tore1860,action=writesolid]
+%\end{pspicture}
+
+\begin{center}
+\begin{pspicture}(-6,-4)(6,4)
+\pstVerb{/Ampl 3 2 sqrt mul def}%
+\defFunction[algebraic]{lemniscate}(t){1.5}{Ampl*sin(t)/(1+cos(t)*cos(t))}{Ampl*sin(t)*cos(t)/(1+cos(t)*cos(t))}
+\psset{viewpoint=50 -10 30 rtp2xyz,Decran=50}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psframe[fillstyle=solid,fillcolor=gray!50](-6,-4)(6,4)
+%\psset{solidmemory}
+%\psSolid[object=datfile,file=tore1860,
+% plansepare={[1 0 0 -1.5]},
+% name=lemniscate,
+% action=none](0,0,0)
+%\psSolid[object=load,
+% load=lemniscate1,
+% file=tore1860lemniscate,action=writesolid](0,0,0)
+\psSolid[object=datfile,file=tore1860lemniscate,
+ fcol=0 (0.5 0.72 0.5 setrgbcolor)
+ 1 (0.5 0.72 0.5 setrgbcolor),
+ fillcolor=green!30,
+ intersectiontype=0,
+ intersectionplan={
+ [1 0 0 -1.5]},
+ intersectioncolor=(rouge),
+ intersectionlinewidth=2.2]
+\psSolid[object=courbe,r=0,linewidth=2pt,
+ range=0 6.28,
+ linecolor=red,
+ function=lemniscate]%
+\psSolid[object=plan,action=draw,
+ definition=equation,
+ args={[1 0 0 -1.5] 90},
+ base=-5 5 -2 2,planmarks,showBase]
+%\composeSolid
+\end{pspicture}
+\end{center}
+\begin{center}
+\begin{pspicture}(-6,-4)(6,4)
+\pstVerb{/Ampl 3 2 sqrt mul def}%
+\defFunction[algebraic]{lemniscate}(t){1.5}{Ampl*sin(t)/(1+cos(t)*cos(t))}{Ampl*sin(t)*cos(t)/(1+cos(t)*cos(t))}
+\psset{viewpoint=50 -10 30 rtp2xyz,Decran=50}
+%\lightsource
+\psset{lightsrc=viewpoint}
+\psframe[fillstyle=solid,fillcolor=gray!50](-6,-4)(6,4)
+\psSolid[object=datfile,file=tore1860lemniscate,
+ hollow,
+ rm=0 1,
+ fillcolor=green!30,incolor=yellow!50]
+\psSolid[object=courbe,r=0,linewidth=2pt,
+ range=0 6.28,
+ linecolor=red,
+ function=lemniscate]%
+\psSolid[object=plan,action=draw,
+ definition=equation,
+ args={[1 0 0 -1.5] 90},
+ base=-5 5 -2 2,planmarks,showBase]
+\end{pspicture}
+\end{center}
+\subsection{Some more examples}
+\begin{enumerate}
+\item
+You will find a \verb+jps+ coded version of this document
+within the \verb+\codejps+ command in the following document:
+
+\centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections}}
+\item A lesson about conic sections on:
+
+\centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections/sections-cone}}
+\item A lesson about cylindrical sections on:
+
+\centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections/section-cylindre}}
+\item A lesson about sections of a torus on:
+
+\centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections/section-tore}}
+\end{enumerate}
+
+
+\endinput