1 \section{Sectioning a solid with a plane
}
3 \subsection{Drawing the
\Index{intersection
} between a plane and a solid
}
5 \subsubsection{The parameters
}
7 The option
\texttt{intersectionplan=\
{[a b c d
]\
}} allows the user
8 to draw the intersection between a plane and a solid. The numbers
9 between the braces are the coefficients of the affine plane with
10 equation: $ax+by+cz+d=
0$. It is possible to draw the intersection
11 between a solid and more than one plane by placing the appropriate
12 parameters in order, as in the following example.
14 The drawing is activated with
\texttt{\texttt{\Lkeyword{intersectiontype
}=
0}} or any
17 The colour of the intersection line is chosen with the option
18 \texttt{\Lkeyword{intersectioncolor
}=(bleu) (rouge) etc.
}. In the same order,
19 the thickness of the appropriate line
20 \texttt{\Lkeyword{intersectionlinewidth
}=
1 2 etc.
} (dimensions in picas) is
24 The hidden parts, drawn with dashed lines, will be shown with
25 \Lkeyword{action
}=
\Lkeyval{draw
}.
27 \begin{LTXexample
}[width=
7cm
]
28 \begin{pspicture
}(-
3,-
2)(
3,
7.5)
29 \psset{viewpoint=
50 20 20 rtp2xyz,Decran=
50}
30 \psset{lightsrc=viewpoint
} \psSolid[object=cylindre,
39 [0.894 0 0.447 -
1.8]},
40 intersectioncolor=(bleu) (rouge) (vert) (rose),
41 intersectionlinewidth=
1 1.5 1.8 2.2]
42 \axesIIID(
2,
2,
6)(
3,
3,
7)
46 \subsection{Slicing a solid
}
48 \subsubsection{Slicing a filled solid
}
50 The object under consideration is a cylinder. The plane that
51 slices the object is defined by:
54 plansepare=
{[a b c d
]}
57 The two parts are not drawn, but memorised with the name
58 \texttt{\Lkeyword{name
}=partiescylindre
}:
62 \psSolid[object=cylindre,
65 plansepare=
{[0.707 0 0.707 0]},
71 Then they are displayed separately using their respective index
72 numbers. The numbering of the two parts is determined by the
73 direction of the normal to the
\Index{slicing
} plane:
0 if above the
74 normal,
1 if below. For both parts, the sliced face carries the
75 number
0. If there are several sliced faces, as may happen in the
76 case of a torus, they are numbered
0,
1 etc.
81 load=partiescylindre1,
82 fillcolor=
{[rgb
]{0.7 1 0.7 }},
83 fcol=
0 (
1 1 0.7 setrgbcolor)
]
85 load=partiescylindre0,RotZ=
60,
86 fillcolor=
{[rgb
]{0.7 1 0.7 }},
87 fcol=
0 (
1 1 0.7 setrgbcolor)
](
0,
4,
0)
91 \begin{pspicture
}(-
4,-
5)(
7,
4)
93 \psset{viewpoint=
50 -
40 10 rtp2xyz,Decran=
50,linecolor=darkgray
}
95 \psset{lightsrc=viewpoint
}
96 \psSolid[object=grille,action=draw,
98 linecolor=red
](
0,
0,-
3)
100 \psSolid[object=cylindre,
103 plansepare=
{[0.707 0 0.707 0]},
104 name=partiescylindre,
106 \psSolid[object=load,
107 load=partiescylindre1,
108 fillcolor=
{[rgb
]{0.7 1 0.7 }},
109 fcol=
0 (
1 1 0.7 setrgbcolor)
]
110 \psSolid[object=load,
111 load=partiescylindre0,RotZ=
90,
112 fillcolor=
{[rgb
]{0.7 1 0.7 }},
113 fcol=
0 (
1 1 0.7 setrgbcolor)
](
0,
4,
0)
114 \psSolid[object=plan,action=draw,
116 args=
{[0.707 0 0.707 0] 90},
117 base=-
2 2 -
3 3,planmarks,showBase
]
118 \axesIIID(
0,
0,
0)(
2.5,
2.5,
3.5)
122 \subsubsection{Slicing a
\Index{hollow solid
}}
124 The options
\verb+rm=
0,hollow+ allow us to not only remove a
125 face
\verb+rm=
0+ but also to see inside it
\Lkeyword{hollow
}.
128 \begin{pspicture
}(-
4,-
5)(
7,
4)
130 \psset{viewpoint=
50 -
40 10 rtp2xyz,Decran=
50,linecolor=darkgray
}
132 \psset{lightsrc=viewpoint
}
133 \psSolid[object=grille,action=draw,
135 linecolor=red
](
0,
0,-
3)
137 \psSolid[object=cylindre,
140 plansepare=
{[0.707 0 0.707 0.5]},
141 name=partiescylindre,
143 \psSolid[object=load,
144 load=partiescylindre1,
145 fillcolor=
{[rgb
]{0.7 1 0.7 }},
147 incolor=
{[rgb
]{1 1 0.7}}]
148 \psSolid[object=load,
149 load=partiescylindre0,RotZ=
90,
150 fillcolor=
{[rgb
]{0.7 1 0.7 }},
152 incolor=
{[rgb
]{1 1 0.7}}](
0,
4,
0)
153 \psSolid[object=plan,action=draw,
155 args=
{[0.707 0 0.707 0.5] 90},
156 base=-
2 2 -
3 3,planmarks,showBase
]
162 \subsection{\Index{Slice
} of a
\Index{pyramid
}}
164 \subsubsection{Highlighting the
\Index{contour lines
} and first slice
}
166 This pyramid is generated as
\texttt{\Lkeyword{object
}=
\Lkeyval{new
}} by giving a list
167 of the coordinates of the vertices, and the vertices of each face.
185 In the first diagram, the slicing lines are highlighted.
189 intersectionplan=
{[0 0 1 -
1] [0 0 1 -
2]},
190 intersectionlinewidth=
1 2,
191 intersectioncolor=(bleu) (rouge)
194 Then we cut off the upper part, and draw the slicing plane as
211 plansepare=
{[0 0 1 -
2]},
214 \psSolid[object=load,action=draw*,
216 \psSolid[object=plan,
219 base=-
3 5 -
3 5,action=draw
]
222 To avoid having to repeatedly type the vertices and faces of the
223 pyramid, we save these data to the files:
225 \item \texttt{Pyramid-couleurs.dat
}
226 \item \texttt{Pyramid-faces.dat
}
227 \item \texttt{Pyramid-sommets.dat
}
228 \item \texttt{Pyramid-io.dat
}
230 thanks to the command
\Lkeyword{action
}=
\Lkeyval{writesolid
}:
246 },file=./Pyramid,fillcolor=yellow!
50,
250 All these lines of code could then be removed and, thereafter, we
251 would recall the data with the command:
254 \psSolid[object=datfile,
260 \begin{pspicture
}(-
5,-
2)(
5,
7)
261 %\psframe(-5,-2)(5,7)
262 \psset{viewpoint=
50 20 10 rtp2xyz,Decran=
50}
264 \psset{lightsrc=viewpoint
}
265 \psSolid[object=grille,
268 %% create the pyramid with base area in xy-plane
284 intersectionplan=
{[0 0 1 -
1]
286 intersectionlinewidth=
1 2,
287 intersectioncolor=(bleu) (rouge)
]
288 \axesIIID[linecolor=blue
](
4,
4,
5)(
5,
5,
6)
291 \begin{pspicture
}(-
5,-
2)(
5,
7)
292 %\psframe(-5,-2)(5,7)
293 \psset{viewpoint=
50 20 10 rtp2xyz,Decran=
50}
295 \psset{lightsrc=viewpoint
}
296 \psSolid[object=grille,
300 %% create the pyramid with base area in xy-plane
315 plansepare=
{[0 0 1 -
2]},
318 \psSolid[object=load,action=draw*,
320 \psSolid[object=plan,
323 base=-
3 5 -
3 5,action=draw
]
324 \axesIIID[linecolor=blue
](
4,
4,
2)(
5,
5,
6)
328 \subsubsection{The second
\Index{slice
} and its insertion within the
\Index{pyramid
}}
330 Having removed the upper part
\texttt{firstSlice0
} (which no
331 longer appears), we slice the frustum of the pyramid
332 \texttt{firstSlice1
}, and keep the upper part of this as
333 \texttt{secondSlice0
}, then we record it and insert it into a wire
334 frame model of the pyramid:
339 \psSolid[object=datfile,
341 plansepare=
{[0 0 1 -
2]},
344 \psSolid[object=load,
347 plansepare=
{[0 0 1 -
1]},
349 \psSolid[object=load,action=draw*,
351 \psSolid[object=load,
355 \psSolid[object=datfile,fillcolor=yellow!
50,
362 \begin{pspicture
}(-
5,-
2)(
4,
7)
363 %\psframe(-4,-2)(4,7)
364 \psset{viewpoint=
50 20 10 rtp2xyz,Decran=
50}
366 \psset{lightsrc=viewpoint
}
367 \psSolid[object=grille,
371 %% create the pyramid with base area in xy-plane
372 %\psSolid[object=new,
385 %},file=./Pyramid,fillcolor=yellow!50,
387 \psSolid[object=datfile,
389 plansepare=
{[0 0 1 -
2]},
392 \psSolid[object=plan,
394 args=
{[0 0 1 -
1]},action=draw,
396 \psSolid[object=load,
399 plansepare=
{[0 0 1 -
1]},
401 %\psSolid[object=load,action=draw*,
403 %\psSolid[object=load,
405 % file=./slicePyramid,
407 \psSolid[object=datfile,fillcolor=yellow!
50,
409 \psSolid[object=plan,
412 base=-
3 5 -
3 5,action=draw
]
413 \axesIIID[linecolor=blue
](
0,
0,
2)(
5,
5,
6)
416 \begin{pspicture
}(-
4,-
2)(
6,
7)
417 \psset{viewpoint=
50 20 10 rtp2xyz,Decran=
50}
419 \psset{lightsrc=viewpoint
}
420 \psSolid[object=grille,
423 \psSolid[object=datfile,fillcolor=yellow!
50,
425 \psSolid[object=datfile,
426 file=./Pyramid,action=draw
]
427 \axesIIID[linecolor=blue
](
4,
4,
2)(
5,
5,
6)
431 \subsection{Slicing an
\Index{octahedron
} with a plane parallel to one of its faces
}
433 \subsubsection{The view inside
}
435 Recall that there are options
\verb+rm=
0,hollow+ that allow us,
436 on the one hand, to remove a face
\verb+rm=
0+ and, on the other,
437 to look inside
\Lkeyword{hollow
}.
439 In the following example, we shall start by generating the
440 required objects without drawing them (
\texttt{\Lkeyword{action
}=
\Lkeyval{none
}}).
442 We construct the octahedron, giving the center of the face with
443 index $
1$ the name $G$, then define the point $H$ which satisfies
444 $
\overrightarrow{OH
} =
0.8\,
\overrightarrow{OG
}$. After that we
445 define $P$ to be the plane through $H$ parallel to the face of the
446 octahedron with index $
1$. Finally, we slice the octahedron using
449 \begin{LTXexample
}[width=
7.5cm
]
450 \begin{pspicture
}(-
3.5,-
3)(
4.5,
5)
451 \psset{viewpoint=
100 5 10 rtp2xyz,Decran=
80,
452 lightsrc=viewpoint,solidmemory,action=none
}
453 \psSolid[object=octahedron,
454 a=
4,name=my_octahedron,
]
455 \psSolid[object=point,
456 definition=solidcentreface,
457 args=my_octahedron
1,
459 \psSolid[object=point,
463 \psSolid[object=plan,
464 definition=solidface,
465 args=my_octahedron
1,
468 \psSolid[object=load,
472 \psSolid[object=load,load=part1,
473 rm=
0,hollow,action=draw**,
474 fillcolor=
{[rgb
]{0.7 1 0.7}},
475 incolor=
{[rgb
]{1 1 0.7}},
]
476 \psSolid[object=plan,args=P,
477 action=draw,showBase
]
478 \psSolid[object=line,
481 \psProjection[object=point,plan=P,args=
0 0,
482 fontsize=
20,pos=cl,text=H,phi=
90,
]
483 \axesIIID[linecolor=blue,linewidth=
0.4pt
](
0,
0,
0)(
4,
4,
4)
487 \subsubsection{Regarding the solid as filled
}
489 The option
\verb+fcol=
0 (YellowOrange)+ allows us to colour the
492 \begin{LTXexample
}[width=
7.5cm
]
493 \begin{pspicture
}(-
3.5,-
3)(
4.5,
5)
494 \psset{viewpoint=
100 5 10 rtp2xyz,Decran=
80,
495 lightsrc=viewpoint,solidmemory,action=none
}
496 \psSolid[object=octahedron,
497 a=
4,name=my_octahedron,
]
498 \psSolid[object=point,
499 definition=solidcentreface,
500 args=my_octahedron
1,
502 \psSolid[object=point,
506 \psSolid[object=plan,
507 definition=solidface,
508 args=my_octahedron
1,
511 \psSolid[object=load,
515 \psSolid[object=load,
517 fcol=
0 (YellowOrange),
519 fillcolor=
{[rgb
]{0.7 1 0.7}},
]
520 \psSolid[object=plan,args=P,
521 action=draw,showBase
]
522 \psSolid[object=line,
525 \psProjection[object=point,plan=P,args=
0 0,
526 fontsize=
20,pos=cl,text=H,phi=
90,
]
527 \axesIIID[linecolor=blue,linewidth=
0.4pt
](
0,
0,
0)(
4,
4,
4)
531 \subsubsection{The two parts of a sliced solid
}
533 You will recall that the direction of the normal of the slicing
534 plane determines the numbering of the two parts:
0 if above the
535 normal,
1 if below. For both parts, the sliced face carries the
536 number
0. If there are several sliced faces, as in the case of the
537 torus, they are numbered
0,
1 etc.
539 Using two steps, we memorise both parts of the sliced solid:
542 \psSolid[object=load,
548 Then we position and render each part:
551 \psSolid[object=load,
552 fcol=
0 (YellowOrange),
553 fillcolor=
{[rgb
]{0.7 1 0.7}},
555 \psSolid[object=load,
556 fillcolor=
{[rgb
]{0.7 1 0.7}},
557 load=part0
](H
2 mulv3d,,)
562 \begin{LTXexample
}[width=
7.5cm
]
563 \begin{pspicture
}(-
3.5,-
3)(
4.5,
5)
564 \psset{viewpoint=
100 5 20 rtp2xyz,Decran=
150,
565 lightsrc=viewpoint,solidmemory,action=none
}
566 \psSolid[object=octahedron,
567 a=
2,name=my_octahedron,
]
568 \psSolid[object=point,
569 definition=solidcentreface,
570 args=my_octahedron
1,
572 \psSolid[object=point,
576 \psSolid[object=plan,
577 definition=solidface,
578 args=my_octahedron
1,
581 \psSolid[object=load,
585 \psset{action=draw**
}
586 \psSolid[object=load,
588 fcol=
0 (YellowOrange),
589 fillcolor=
{[rgb
]{0.7 1 0.7}},
]
590 \psSolid[object=load,
591 fillcolor=
{[rgb
]{0.7 1 0.7}},
592 load=part0
](H
2 mulv3d,,)
597 \subsection{Slices of a cube
}
599 \subsubsection{Highlighting the edges of the cut
}
601 \begin{LTXexample
}[width=
8cm
]
602 \psset{viewpoint=
100 30 20 rtp2xyz,Decran=
150}
603 \begin{pspicture
}(-
4,-
3)(
4,
5)
605 \psSolid[object=plan,definition=normalpoint,
606 args=
{1 1 1 [1 1 1]},action=none,name=P
]
607 \psSolid[object=cube,a=
2,action=draw,
610 intersectionlinewidth=
2,
611 intersectioncolor=(rouge),
613 \psProjection[object=point,
614 args=
0 0,fontsize=
10,pos=dc,
615 text=H,phi=-
30,plan=P,
617 \psSolid[object=line,
620 \psSolid[object=vecteur,
622 args=
1 1 1 .7 mulv3d
](
1,
1,
1)
623 \axesIIID[linecolor=blue
](
2,
2,
2)(
2.5,
2.5,
2.5)
627 \subsubsection{Showing the sliced cube with its hexagonal cut face
}
629 \begin{LTXexample
}[width=
8cm
]
630 \psset{viewpoint=
100 30 20 rtp2xyz,Decran=
150}
631 \begin{pspicture
}(-
4,-
3)(
4,
5)
633 \psSolid[object=plan,action=none,definition=normalpoint,
634 args=
{1 1 1 [1 1 1]},name=P
]
635 \psSolid[object=cube,a=
2,
640 \psSolid[object=load,
643 fillcolor=
{[rgb
]{0.7 1 0.7}},
645 \psProjection[object=point,
646 args=
0 0,fontsize=
10,pos=dc,
647 text=H,phi=-
30,plan=P,
649 \psSolid[object=vecteur,
651 args=
1 1 1 .7 mulv3d
](
1,
1,
1)
652 \axesIIID[linecolor=blue
](
2,
2,
2)(
2.5,
2.5,
2.5)
656 \subsubsection{The sliced cube in various positions
}
658 Where we use the option that allows us to memorise a solid, in
659 order to put the truncated cube, after undergoing various
660 transformations, down on its cut face.
664 \psSolid[object=datfile,
666 fillcolor=
{[rgb
]{0.7 1 0.7}},
674 \begin{pspicture
}(-
3,-
3)(
3,
3)
676 \psset{viewpoint=
100 30 20 rtp2xyz,Decran=
100}
678 \psset{lightsrc=viewpoint
}
679 \psSolid[object=grille,
682 \psSolid[object=datfile,
684 fillcolor=
{[rgb
]{0.7 1 0.7}},
686 \axesIIID[linecolor=blue
](
2,
2,
2)(
2.5,
2.5,
2.5)
691 \begin{pspicture
}(-
2,-
3)(
4,
3)
693 \psset{viewpoint=
100 -
30 20 rtp2xyz,Decran=
100}
695 \psset{lightsrc=viewpoint
}
696 \psSolid[object=grille,
699 \psSolid[object=datfile,
701 fillcolor=
{[rgb
]{0.7 1 0.7}},
703 \axesIIID[linecolor=blue
](
2,
2,
2)(
2.5,
2.5,
2.5)
706 \begin{pspicture
}(-
3,-
2)(
3,
3)
708 \psset{viewpoint=
100 225 20 rtp2xyz,Decran=
100}
710 \psset{lightsrc=viewpoint
}
711 \psSolid[object=grille,
714 \psSolid[object=datfile,
716 fillcolor=
{[rgb
]{0.7 1 0.7}},
718 \axesIIID[linecolor=blue
](
0,
0,
0)(
2.5,
2.5,
2.5)
721 \begin{pspicture
}(-
3,-
2)(
3,
3)
723 \psset{viewpoint=
100 30 20 rtp2xyz,Decran=
100}
725 \psset{lightsrc=viewpoint
}
726 \psSolid[object=grille,
730 \psSolid[object=datfile,
732 fillcolor=
{[rgb
]{0.7 1 0.7}},
736 \codejps{C1
{-
1.5 -
1.5 0 translatepoint3d
} solidtransform
739 \axesIIID[linecolor=blue
](
0,
0,
0)(
2.5,
2.5,
2.5)
742 \begin{pspicture
}(-
3,-
2)(
3,
4)
744 \psset{viewpoint=
100 30 20 rtp2xyz,Decran=
100}
746 \psset{lightsrc=viewpoint
}
747 \psSolid[object=grille,
751 \psSolid[object=datfile,
753 fillcolor=
{[rgb
]{0.7 1 0.7}},
757 \codejps{C1
{-
1.5 -
1.5 0 translatepoint3d
} solidtransform
758 {0 0 45 rotateOpoint3d
} solidtransform
762 \axesIIID[linecolor=blue
](
0,
0,
0)(
2.5,
2.5,
2.5)
765 \begin{pspicture
}(-
3,-
2)(
3,
4)
767 \psset{viewpoint=
100 30 20 rtp2xyz,Decran=
100}
769 \psset{lightsrc=viewpoint
}
770 \psSolid[object=grille,
774 \psSolid[object=datfile,
776 fillcolor=
{[rgb
]{0.7 1 0.7}},
780 \codejps{C1
{-
1.5 -
1.5 0 translatepoint3d
} solidtransform
781 {0 0 45 rotateOpoint3d
} solidtransform
782 {-
35.2644 -
90 add
0 0 rotateOpoint3d
} solidtransform
785 \axesIIID[linecolor=blue
](
1,
2.5,
0.5)(
2.5,
3,
2.5)
790 \subsection{Multiple sections
}
792 \subsubsection{Slicing a sphere with PStricks
}
794 \begin{LTXexample
}[width=
8cm
]
795 \begin{pspicture
}(-
4,-
4)(
4,
4)
796 \psset{viewpoint=
100 20 20 rtp2xyz,Decran=
75}
797 \psset{solidmemory,lightsrc=viewpoint
}
799 /coeff
0.75 def /rO
4 def /OH coeff rO mul neg def
}%
800 \psSolid[object=sphere,
802 plansepare=
{[1 0 0 OH
]},
805 \psSolid[object=load,
806 load=part1,plansepare=
{[-
1 0 0 OH
]},action=none,name=part
]
807 \psSolid[object=load,
808 load=part1,plansepare=
{[0 1 0 OH
]},action=none,name=part
]
809 \psSolid[object=load,
810 load=part1,plansepare=
{[0 -
1 0 OH
]},action=none,name=part
]
811 \psSolid[object=load,
812 load=part1,plansepare=
{[0 0 1 OH
]},action=none,name=part
]
813 \psSolid[object=load,
814 load=part1,plansepare=
{[0 0 -
1 OH
]},action=none,name=part
]
815 \psSolid[object=load,hue=
.1 .8 0.5 1,
821 \subsubsection{Multiple sections of a
\Index{parallelepiped
}}
823 Multiple sections are better carried out inside a PostScript loop,
824 within
\verb+
\codejps+; it's easier and quicker!
826 In this example, the original solid is a parallelepiped.
827 Truncations of the vertices and chamfering of the edges are
828 effected by means of slicing planes, starting off with the
829 vertices and finishing with the edges.
831 \begin{LTXexample
}[width=
7cm
]
832 \begin{pspicture
}(-
3.5,-
4)(
3.5,
4)
833 \psset{viewpoint=
100 -
20 10 rtp2xyz,Decran=
100}
835 \psset{lightsrc=viewpoint
}
837 4 4 6 newparallelepiped
840 /n_x iAngle cos
35.2644 cos mul def
841 /n_y iAngle sin
35.2644 cos mul def
843 /distance
2 3 add
3 sqrt div neg def
844 [ n_x n_y n_z distance
]
849 /n_x iAngle cos
35.2644 cos mul def
850 /n_y iAngle sin
35.2644 cos mul def
851 /n_z
35.2644 sin neg def
852 /distance
2 3 add
3 sqrt div neg def
853 [ n_x n_y n_z distance
]
858 % plan : ax+by+cz-d=0
865 dup
[.5 .2] solidputhuecolors
870 \subsection{Sections of a torus
}
871 %\begin{pspicture}(-6,-4)(6,4)
872 %\psSolid[r1=3,r0=1.5,
875 % file=./tore1860,action=writesolid]
879 \begin{pspicture
}(-
6,-
4)(
6,
4)
880 \pstVerb{/Ampl
3 2 sqrt mul def
}%
881 \psset{viewpoint=
50 -
10 30 rtp2xyz,Decran=
50}
883 \psset{lightsrc=viewpoint
}
884 \psframe[fillstyle=solid,fillcolor=gray!
50](-
6,-
4)(
6,
4)
886 %\psSolid[object=datfile,file=./tore1860,
887 % plansepare={[1 0 0 -1.5]},
889 % action=none](0,0,0)
890 %\psSolid[object=load,
892 % file=./tore1860lemniscate,action=writesolid](0,0,0)
893 \defFunction[algebraic
]{lemniscate
}(t)
{1.5}{Ampl*sin(t)/(
1+cos(t)*cos(t))
}{Ampl*sin(t)*cos(t)/(
1+cos(t)*cos(t))
}
894 \psSolid[object=datfile,file=./tore1860lemniscate,
895 fcol=
0 (
0.5 0.72 0.5 setrgbcolor)
896 1 (
0.5 0.72 0.5 setrgbcolor),
901 intersectioncolor=(rouge),
902 intersectionlinewidth=
2.2]
903 \psSolid[object=courbe,r=
0,linewidth=
2pt,
906 function=lemniscate
]%
907 \psSolid[object=plan,action=draw,
909 args=
{[1 0 0 -
1.5] 90},
910 base=-
5 5 -
2 2,planmarks,showBase
]
915 \begin{pspicture
}(-
6,-
4)(
6,
4)
916 \pstVerb{/Ampl
3 2 sqrt mul def
}%
917 \psset{viewpoint=
50 -
10 30 rtp2xyz,Decran=
50}
919 \psset{lightsrc=viewpoint
}
920 \psframe[fillstyle=solid,fillcolor=gray!
50](-
6,-
4)(
6,
4)
921 \defFunction[algebraic
]{lemniscate
}(t)
{1.5}{Ampl*sin(t)/(
1+cos(t)*cos(t))
}{Ampl*sin(t)*cos(t)/(
1+cos(t)*cos(t))
}
922 \psSolid[object=datfile,file=./tore1860lemniscate,
925 fillcolor=green!
30,incolor=yellow!
50]
926 \psSolid[object=courbe,r=
0,linewidth=
2pt,
929 function=lemniscate
]%
930 \psSolid[object=plan,action=draw,
932 args=
{[1 0 0 -
1.5] 90},
933 base=-
5 5 -
2 2,planmarks,showBase
]
936 \subsection{Some more examples
}
939 You will find a
\textit{jps
} coded version of this
document
940 within the
\verb+
\codejps+ command in the following
document:
942 \centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections
}}
943 \item A lesson about conic sections on:
945 \centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections/sections-cone
}}
946 \item A lesson about cylindrical sections on:
948 \centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections/section-cylindre
}}
949 \item A lesson about sections of a torus on:
951 \centerline{\url{http://melusine.eu.org/syracuse/mluque/solides3d2007/sections/section-tore
}}