1 \chapter{La fusion d'objets
}
3 \
[\includegraphics{figures/fusion1.pdf
}\
]
5 Tout ce qui est relatif à la fusion d'objets n'est
{\em valable
} que
6 pour ce chapitre. Ce n'est pas implanté pour les surfaces, les courbes,
\ldots
8 \section{Quels objets fusionner ?
}
9 Avant de voir ce que nous permet la fusion, voyons quels objets sont
10 mis à notre disposition :
\texttt{tétraèdre régulier
},
\texttt{cube
}
11 et
\texttt{pavé droit
},
\texttt{octaèdre régulier
},
\texttt{dodécaèdre
12 régulier
},
\texttt{icosaèdre régulier
},
\texttt{prisme
} et
13 \texttt{prisme creux
},
\texttt{cylindre de révolution creux
} et
14 \texttt{plein
},
\texttt{cône de révolution creux
} et
\texttt{plein
},
15 \texttt{tronc de cône de révolution creux
} et
\texttt{plein
},
16 \texttt{sphère
},
\texttt{calotte sphérique creuse
} et
\texttt{pleine
},
17 \texttt{tore
},
\texttt{anneau
},
\texttt{tube
},
\texttt{grille
},
18 \texttt{ruban
},
\texttt{biface
},
\texttt{OFF
},
\texttt{OBJ
} et
\texttt{New
}.
20 Dans ce chapitre, aucun de ces objets n'est dessiné ! Mais ils sont
21 numérotés. Ainsi pour les afficher, Il faut impérativement utiliser
24 \macro{\verb!AffichageObjet1!
}
26 1 étant le numéro de l'objet à afficher.
29 Voici comment les définir :
32 \begin{tabular
}{m
{2.5cm
}m
{2.75cm
}m
{6cm
}>
{\footnotesize}m
{6.5cm
}}
33 \multicolumn{1}{c
}{\textcolor{red
}{Tétraèdre régulier
}}&
\verb!"a=
3"!
34 (
\texttt{a
} rayon de la sphère circonscrite)&
\includegraphics[width=
5.5cm
]{figures/objettetraedre1.pdf
}&
%\\
36 Objettetraedre1("a=
1");
39 \multicolumn{1}{c
}{\textcolor{red
}{Cube
}}&
\verb!"a=
3"!&
\includegraphics[width=
5.5cm
]{figures/objetcube1.pdf
}&
%\\
45 \multicolumn{1}{c
}{\textcolor{red
}{Octaèdre régulier
}}&
\verb!"a=
3"!
46 (
\texttt{a
} rayon de la sphère circonscrite)&
\includegraphics[width=
5.5cm
]{figures/objetoctaedre1.pdf
}&
%\\
48 Objetoctaedre1("a=
1");
51 \multicolumn{1}{c
}{\textcolor{red
}{Dodécaèdre régulier
}}&
\verb!"a=
3"!
52 (
\texttt{a
} rayon de la sphère circonscrite)&
\includegraphics[width=
5.5cm
]{figures/objetdodecaedre1.pdf
}&
%\\
54 Objetdodecaedre1("a=
1");
60 \begin{tabular
}{m
{2.5cm
}m
{2.75cm
}m
{6cm
}>
{\footnotesize}m
{6.5cm
}}
61 \multicolumn{1}{c
}{\textcolor{red
}{Icosaèdre régulier
}}&
\verb!"a=
3"!
62 (
\texttt{a
} rayon de la sphère circonscrite)&
\includegraphics[width=
5.5cm
]{figures/objeticosaedre1.pdf
}&
%\\
64 Objeticosaedre1("a=
1");
67 \multicolumn{1}{c
}{\textcolor{red
}{Pavé droit
}}&
\verb!"L=
2","H=
1",!
\par\verb!"P=
0.5"!&
\includegraphics[width=
5.5cm
]{figures/objetpave1.pdf
}&
%\\
70 Objetpave1("L=
2","H=
6","P=
4");
73 \multicolumn{1}{c
}{\textcolor{red
}{Prisme plein
}}&
\verb!("axe=(
0,
1,
2)"!
%
74 \par\verb!,"h=
3")!
\par
75 \verb!(Liste sommets)!&
\includegraphics[width=
5.5cm
]{figures/objetprisme1.pdf
}&
%\\
78 ObjetPrisme1("axe=(
0,
0.5,
1)",
%
80 ((
1,
0,
0),(
2,
3,
0),(-
1,
4,
0));
83 \multicolumn{1}{c
}{\textcolor{red
}{Prisme creux
}}&
\verb!("axe=(
0,
1,
2)"!
%
84 \par\verb!,"h=
3")!
\par
85 \verb!(Liste sommets)!&
\includegraphics[width=
5.5cm
]{figures/objetprisme2.pdf
}&
%\\
89 Objetprisme1("axe=(
0,
0.5,
1)",
%
91 ((
1,
0,
0),(
2,
3,
0),(-
1,
4,
0));
97 \begin{tabular
}{m
{2.5cm
}m
{2.75cm
}m
{6cm
}>
{\footnotesize}m
{6.5cm
}}
98 \multicolumn{1}{c
}{\textcolor{red
}{Tore
}}&
\verb!"R=
3","r=
2"!&
\includegraphics[width=
5.5cm
]{figures/objettore1.pdf
}&
%\\
101 Objettore1("R=
4","r=
1");
104 \multicolumn{1}{c
}{\textcolor{red
}{Tube plein
}\footnotemark}&
\verb!"F(t)","F'(t)"!,
105 \verb!rayon!,
\verb!umin!,
\verb!nb de points!,
\verb!pas!&
\includegraphics[width=
5.5cm
]{figures/objettube1.pdf
}&
%\\
109 2*(
1+cos(t)),
2*tan(t/
2),
2*sin(t)
%
111 -
2*sin(t),
2/((cos(t/
2))**
2),
2*cos(t)
%
112 )",
1,-
2.7468,
71,
0.0763);
115 \multicolumn{1}{c
}{\textcolor{red
}{Tube creux
}}&
\verb!"F(t)","F'(t)"!,
116 \verb!rayon!,
\verb!umin!,
\verb!nb de points!,
\verb!pas!&
\includegraphics[width=
5.5cm
]{figures/objettube2.pdf
}&
%\\
121 2*(
1+cos(t)),
2*tan(t/
2),
2*sin(t)
%
123 -
2*sin(t),
2/((cos(t/
2))**
2),
2*cos(t)
%
124 )",
1,-
2.7468,
71,
0.0763);
127 \textcolor{red
}{Cylindre de révolution creux
}&
\verb!"r=
1","h=
2"!&
\includegraphics[width=
5.5cm
]{figures/objetcylindre1.pdf
}&
%\\
131 Objetcylindre1("r=
2","h=
4");
135 \footnotetext{Le tube représenté ici est relatif à la courbe
{\em
139 \begin{tabular
}{m
{2.5cm
}m
{2.75cm
}m
{6cm
}>
{\footnotesize}m
{6.5cm
}}
140 \textcolor{red
}{Cylindre de révolution plein
}&
\verb!"r=
1","h=
2"!&
\includegraphics[width=
5.5cm
]{figures/objetcylindre2.pdf
}&
%\\
144 Objetcylindre1("r=
2","h=
4");
147 \textcolor{red
}{Cône de ré\-vo\-lu\-tion creux
}&
\verb!"r=
1","h=
2"!&
\includegraphics[width=
5.5cm
]{figures/objetcone1.pdf
}&
%\\
151 Objetcone1("r=
1.5","h=
4");
154 \textcolor{red
}{Cône de ré\-vo\-lu\-tion plein
}&
\verb!"r=
1","h=
2"!&
\includegraphics[width=
5.5cm
]{figures/objetcone2.pdf
}&
%\\
158 Objetcone1("r=
1.5","h=
4");
161 \textcolor{red
}{Tronc de cône creux
}&
\verb!"r=
1"!,
\verb!"h=
2"!,
\verb!"H=
5"!&
\includegraphics[width=
5.5cm
]{figures/objettronccone1.pdf
}&
%\\
165 Objettronccone1("r=
2","h=
4","H=
5");
168 \textcolor{red
}{Tronc de cône plein
}&
\verb!"r=
1"!,
\verb!"h=
2"!,
\verb!"H=
5"!&
\includegraphics[width=
5.5cm
]{figures/objettronccone2.pdf
}&
%\\
172 Objettronccone1("r=
2","h=
2","H=
3");
178 \begin{tabular
}{m
{2.5cm
}m
{2.75cm
}m
{6cm
}>
{\footnotesize}m
{6.5cm
}}
179 \multicolumn{1}{c
}{\textcolor{red
}{Sphère
}}&
\verb!"R=
3"!&
\includegraphics[width=
5.5cm
]{figures/objetsphere1.pdf
}&
%\\
185 \textcolor{red
}{Calotte sphérique pleine
}&
\verb!"r=
3"!,
186 \verb!"phib=-pi/
4"!,
\verb!"phih=pi/
6"! (en radians)&
\includegraphics[width=
5.5cm
]{figures/objetcalotte1.pdf
}&
%\\
190 "R=
4","phib=-pi/
3","phih=pi/
4");
193 \textcolor{red
}{Calotte sphérique creuse
}&
\verb!"r=
3"!,
194 \verb!"phib=-pi/
4"!,
\verb!"phih=pi/
6"! (en radians)&
\includegraphics[width=
5.5cm
]{figures/objetcalotte2.pdf
}&
%\\
198 "R=
4","phib=-pi/
3","phih=pi/
4");
201 \textcolor{red
}{Anneau à section rectangulaire
}&
\verb!"R=
3"!,
\verb!"r=
1"!,
\verb!"h=
2"!&
\includegraphics[width=
5.5cm
]{figures/objetanneau1.pdf
}&
%\\
204 Objetanneau1("R=
4","r=
3","h=
1.5");
207 \textcolor{red
}{Grille dans le plan $(xOy)$
}&
\verb!"am=-
3"!,
208 \verb!"an=
2"!,
\verb!"bm=-
2"!,
\verb!"bn=
4"!&
\includegraphics[width=
5.5cm
]{figures/objetgrille1.pdf
}&
%\\
211 Objetgrille1("am=-
2.5","an=
2.5",
%
218 \begin{tabular
}{m
{2.5cm
}m
{2.75cm
}m
{6cm
}>
{\footnotesize}m
{6.5cm
}}
219 \textcolor{red
}{Ruban d'axe $(Oz)$
}&
\verb!"h=
2"!,
220 \verb!Liste des!,
\verb!sommets!&
\includegraphics[width=
5.5cm
]{figures/objetruban1.pdf
}&
%\\
223 ObjetRuban2("h=
2")((
0,
0,
0),
%
224 (
2,
2,
0),(
4,
0,
0),(
6,
2,
0));
227 \multicolumn{1}{c
}{\textcolor{red
}{Biface
\footnotemark}}&
\verb!Liste!
\verb!des!
\verb!sommets!&
\includegraphics[width=
5.5cm
]{figures/objetbiface1.pdf
}&
%\\
229 ObjetBiface1((
5,
0,
0) for
%
230 t=
0.06544 step
0.06544%
233 (
3*sin(t)*((cos(t))**
3))
%
237 \multicolumn{1}{c
}{\textcolor{red
}{\texttt{OFF
}}}&
\verb!Nom!
\verb!du!
\verb!fichier!&
\includegraphics[width=
5.5cm
]{figures/objetoff1.pdf
}&
%\\
241 ObjetOFF1("Kangaroo.off");
244 \multicolumn{1}{c
}{\textcolor{red
}{\texttt{OBJ
}}}&
\verb!Nom!
\verb!du!
\verb!fichier!&
\includegraphics[width=
5.5cm
]{figures/objetobj1.pdf
}&
%\\
247 ObjetOFF1("Midpoly_03-
1.obj");
251 \footnotetext{Sur la figure proposée, il y a en fait quatre solides
255 \begin{tabular
}{m
{2.5cm
}m
{2.75cm
}m
{6cm
}>
{\footnotesize}m
{6.5cm
}}
256 \multicolumn{1}{c
}{\textcolor{red
}{New
}}&
\verb!Liste!
\verb!des!
257 \verb!sommets!,
\verb!Liste!
\verb!des!
\verb!faces!&
\includegraphics[width=
5.5cm
]{figures/objetnew1.pdf
}&
%\\
260 ObjetNew1((
0,
0,-
3*sqrt(
6)/
4),
%
261 (-sqrt(
3)/
2,-
3/
2,-sqrt(
6)/
4),
%
262 (sqrt(
3),
0,-sqrt(
6)/
4),
%
263 (-sqrt(
3)/
2,
3/
2,-sqrt(
6)/
4),
%
264 (sqrt(
3)/
2,-
3/
2,sqrt(
6)/
4),
%
265 (-sqrt(
3),
0,sqrt(
6)/
4),
%
266 (sqrt(
3)/
2,
3/
2,sqrt(
6)/
4),
%
268 (-
3*sqrt(
3)/
4,
0,-
3*sqrt(
6)/
8),
%
269 (
3*sqrt(
3)/
8,-
9/
8,-
3*sqrt(
6)/
8),
%
270 (
3*sqrt(
3)/
8,
9/
8,-
3*sqrt(
6)/
8),
%
271 (-
3*sqrt(
3)/
8,-
9/
8,
3*sqrt(
6)/
8),
%
272 (-
3*sqrt(
3)/
8,
9/
8,
3*sqrt(
6)/
8),
%
273 (
3*sqrt(
3)/
4,
0,
3*sqrt(
6)/
8)
%
302 Pour beaucoup de ces objets, les
\param{\verb!nb!
} et/ou
303 \param{\verb!subh!
} sont requis et ont la possibilité d'être modifiés. Ils
304 représentent le maillage sur chacun des objets. De manière générale,
305 \param{\verb!nb!
} représente le maillage de
\og la base
\fg\ du solide
306 et
\param{\verb!subh!
} représente le maillage
\og vertical
\fg\ de
308 \par Pour les objets possédant une version creuse, c'est le paramètre
309 booléen
\param{\verb!creux!
} qui fait la différence. Sa valeur par
310 défaut est
\verb!false!.
311 \subsection{Compléments sur l'objet
\texttt{ruban
}}
312 Le ruban est un paravent. Il s'agit simplement de positionner les
313 sommets dans le plan $(Oxy)$ et de donner la hauteur du paravent
315 \
\Il n'est pas toujours nécessaire de prendre une ligne
\og brisée
\fg\
316 comme support de base pour le ruban.
317 \paragraph{Exemple
1 : Un paravent sinusoïdal
}\hfill\newline
320 \includegraphics[scale=
0.9]{figures/rubansinus1.pdf
}
321 \caption{Un paravent sinusoïdal
}
324 \begin{lstlisting
}[frame=tb
]
325 figureespace(-
10u,-
10u,
10u,
10u);
326 Initialisation(
500,
60,
20,
25);
328 eclairage:=false;
%<-pour obtenir la grille en blanc
330 Objetgrille1("am=-
5","an=
5","bm=-
13","bn=
13");
333 outcolor:=
0.5[rouge,blanc
]; incolor:=
0.5[vert,blanc
];
335 ObjetRuban2("h=
2")(for t=-
4*pi step (pi/
12) until
47*pi/
12:(
2*sin(t),t,
0), endfor(
0,
4*pi,
0));
340 \paragraph{Exemple
2 : Un paravent d'amour
}\hfill\newline
343 \includegraphics{figures/rubancardioide1.pdf
}
344 \caption{Un paravent d'amour
}
346 \begin{lstlisting
}[frame=tb
]
347 figureespace(-
10u,-
10u,
10u,
10u);
348 Initialisation(
500,
60,
20,
25);
351 drawoptions(withcolor gris);
353 Objetgrille1("am=-
5.5","an=
3","bm=-
5","bn=
5");
357 outcolor:=
0.5[rouge,blanc
]; incolor:=
0.5[vert,blanc
];
359 ObjetRuban2("h=
2")(for t=-pi step pi/
36 until
35*pi/
36:
1.5*(
2*cos(t)-cos(
2*t),
2*sin(t)-sin(
2*t),
0), endfor(-
4.5,
0,
0));
361 TraceAxesD(
3.5,
5.5,
4);
364 \subsection{Compléments sur l'objet
\texttt{prisme
}}
365 Si l'on souhaite définir un prisme avec une base peu courante, on
366 utilisera la macro
\macro{\verb!ObjetPrisme!
} (avec une majuscule) de
367 la même façon que la macro
\macro{\verb!Objetprisme!
} en définissant
368 l'axe, la hauteur et la liste des sommets formant la base.
369 \paragraph{Exemple
1 : Prisme droit à section carrée
370 arrondie
}\hfill\newline
371 \begin{minipage
}{9cm
}
374 \includegraphics[width=
8cm
]{figures/prismearrondi1.pdf
}
375 \caption{Prisme droit à section carrée arrondie
}
380 \begin{minipage
}{9cm
}
381 \begin{lstlisting
}[frame=tb
]
382 outcolor:=
0.5[orange,blanc
];
384 figureespace(-
10u,-
10u,
10u,
10u);
385 Initialisation(
1500,-
25,
30,
20);
388 Objetgrille0("am=-
2","an=
2","bm=-
2","bn=
2");
390 ObjetPrisme1("axe=(
0,
0,
1)","h=
6")(for k=
0 step
10 until
90:(
1+cosd(k),
1+sind(k),
0),endfor for k=
90 step
10 until
180:(cosd(k)-
1,
1+sind(k),
0), endfor for k=
180 step
10 until
270:(cosd(k)-
1,sind(k)-
1,
0), endfor for k=
270 step
10 until
350:(cosd(k)+
1,sind(k)-
1,
0), endfor (
2,
1,
0));
396 \paragraph{Exemple
2 : Demi-prisme droit à section couronne circulaire
}\hfill\newline
397 \begin{minipage
}{9cm
}
400 \includegraphics[width=
8cm
]{figures/demiprisme1.pdf
}
405 \begin{minipage
}{9cm
}
406 \begin{lstlisting
}[frame=tb
]
407 figureespace(-
10u,-
10u,
10u,
10u);
408 Initialisation(
500,
60,
30,
25);
411 Objetgrille1("am=-
5","an=
5","bm=-
5","bn=
5");
413 outcolor:=jaune; incolor:=rouge;
415 angx:=
90; TR:=(
0,
4,
0);
416 ObjetPrisme2("axe=(
0,
0,
1)","h=
8",for k=
0 step
10 until
180:(
3*cosd(k),
3*sind(k),
0), endfor for k=
180 step -
10 until
0:(cosd(k),sind(k),
0), endfor(
3,
0,
0));
423 \begin{minipage
}{9cm
}
426 \includegraphics[width=
8cm
]{figures/demiprisme2.pdf
}
431 \begin{minipage
}{9cm
}
432 \begin{lstlisting
}[frame=tb
]
433 figureespace(-
10u,-
10u,
10u,
10u);
434 Initialisation(
500,
60,
30,
25);
437 Objetgrille1("am=-
5","an=
5","bm=-
5","bn=
5");
439 outcolor:=jaune; incolor:=rouge;
441 angx:=
90; TR:=(
0,
4,
0);
442 creux:=true;
%<-changement en solide creux
443 ObjetPrisme2("axe=(
0,
0,
1)","h=
8",for k=
0 step
10 until
180:(
3*cosd(k),
3*sind(k),
0), endfor for k=
180 step -
10 until
0:(cosd(k),sind(k),
0), endfor(
3,
0,
0));
449 \paragraph{Exemple
2: Prisme droit creux dont la section est un
450 bifolium régulier
}\hfill\newline
451 \begin{minipage
}{8cm
}
452 \includegraphics[width=
8cm
]{figures/prismebifolium1.pdf
}
455 \begin{minipage
}{10cm
}
456 \begin{lstlisting
}[frame=tb
]
457 figureespace(-
10u,-
10u,
10u,
10u);
458 Initialisation(
500,
60,
30,
25);
461 Objetgrille1("am=-
5","an=
5","bm=-
5","bn=
5");
463 outcolor:=vert; incolor:=orange;
466 ObjetPrisme2("axe=(
0,
0,
1)","h=
6",for k=
0 step
5 until
175:(
12*sind(k)*(cosd(k)**
3),
12*(sind(k)**
2)*(cosd(k)**
2),
0),endfor (
0,
0,
0));
472 \subsection{Compléments sur les objets
\texttt{cylindre
} et
\texttt{cone
}}
473 S'il l'on veut généraliser la notion de cylindre, la macro
474 \macro{\texttt{Objetcylindre
}} ne suffit pas. En effet, il devient nécessaire de
475 définir une courbe
{\em directrice
} et la direction de
{\em l'axe du
477 \`A cet effet, la macro
\macro{\texttt{ObjetCylindre
}} (
{\em notez la
478 majuscule
}) a été défini.
480 \macro{\verb!ObjetCylindre1(fn,umin,umax,vmin,vmax)!
}
482 Proposons un exemple.
485 \includegraphics{figures/cylindreastroide1.pdf
}
486 \caption{Cylindre à base astroïdale et d'axe $(
0;
0;
1)$
}
488 Définissons la courbe spatiale
\param{\verb!fn!
} :
489 \verb!(
3*(cos(u)**
3),
3*(sin(u)**
3),-
2+v)! de paramètre
{\em obligatoire
}
490 \verb!u! et
\verb!v!. C'est une astroïde tracé dans
491 le plan $z=-
2$. Les paramètres seront donc
\param{\verb!umin!$=
\pi$
};
492 \param{\verb!umax!$=-
\pi$
},
\param{\verb!vmin!=$
0$
} et (par exemple)
493 \param{\verb!vmax!$=
4$
} pour aller jusqu'au plan $z=
2$..
494 Le code dont résulte la figure ci-dessus est donc
495 \begin{lstlisting
}[frame=tb
]
498 figureespace(-
10u,-
10u,
10u,
10u);
499 Initialisation(
500,
30,
20,
50);
501 incolor:=
0.75[orange,blanc
];
502 ObjetCylindre1("(
3*(cos(u)**
3),
3*(sin(u)**
3),-
2+v)",pi,-pi,
0,
4);
506 \par Si l'on souhaite avoir maintenant le même cylindre partant du
507 plan $z=
0$ mais d'axe $(
0;
1;
2)$, on codera alors
509 \begin{minipage
}{8cm
}
510 \includegraphics[width=
8cm
]{figures/cylindreastroide2.pdf
}
513 \begin{minipage
}{10cm
}
514 \begin{lstlisting
}[frame=tb
]
517 figureespace(-
10u,-
10u,
10u,
10u);
518 Initialisation(
500,
30,
20,
50);
520 incolor:=
0.75[orange,blanc
];
521 ObjetCylindre1("(
3*(cos(u)**
3),
3*(sin(u)**
3)+v,
2*v)",pi,-pi,
0,
2);
526 L'usage de la macro
\macro{\verb!ObjetCone!
} (toujours avec la
527 majuscule) est le même pour la généralisation des cônes. Toutefois, il
528 faut ici définir une origine et les deux nappes du cône seront
529 symétriques par rapport à cette origine.
531 \macro{\verb!ObjetCone1(fn,umin,umax,zbas,"orig=...")!
}
533 Il ne faut pas oublier de
534 placer la courbe directrice dans le même plan que le plan de base du cône.\
\Pour mieux exploiter cette
535 fonctionnalité, voici l'exemple d'un cône dont la directrice est une
536 branche d'épicycloïde et dont l'origine est le point $(
0;
1;
3)$.
538 \begin{minipage
}{8cm
}
539 \includegraphics[width=
8cm
]{figures/coneepi1.pdf
}
542 \begin{minipage
}{10cm
}
543 \begin{lstlisting
}[frame=tb
]
546 figureespace(-
10u,-
10u,
10u,
10u);
547 Initialisation(
500,-
10,
15,
30);
548 outcolor:=
0.5[vert,blanc
];
551 draw Fonction("(r*((q+
1)*cos(t)-cos((q+
1)*t)),r*((q+
1)*sin(t)-sin((q+
1)*t)),
0)",-pi,pi,
0.0628) withpen pencircle scaled1.5bp withcolor bleu;
552 ObjetCone1("(r*((q+
1)*cos(u)-cos((q+
1)*u)),r*((q+
1)*sin(u)-sin((q+
1)*u)),
0)",
0,pi,-
2,"orig=(
0,
1,
3)");
558 \subsection{Compléments sur les objets
\texttt{anneau
}}
559 L'objet
\macro{\texttt{Objetanneau
}} propose
{\em par défaut
} une
560 section rectangulaire.
562 \begin{minipage
}{8cm
}
563 \includegraphics{figures/sectionanneau1.pdf
}
566 \begin{minipage
}{9cm
}
567 \
[\includegraphics{figures/Sectionanneau1.pdf
}\
]
569 Objetannneau1("R=
8","r=
6","h=
3");
572 \par Pour utiliser une autre section telle que celle-ci
573 \
[\includegraphics{figures/sectionanneau2.pdf
}\
]
576 \macro{\verb!ObjetAnneau1("nbp=...",pp)!
}
578 où
\param{\verb!nbp!
} est le nombre de sommets de la section et
579 \param{\verb!pp!
} un chemin
\MP\ représentant la section souhaitée.
581 \begin{minipage
}{8cm
}
582 \includegraphics[width=
8cm
]{figures/Sectionanneau2.pdf
}
585 \begin{minipage
}{10cm
}
586 \begin{lstlisting
}[frame=tb
]
587 figureespace(-
10u,-
10u,
10u,
10u);
588 Initialisation(
500,
30,
30,
25);
594 pp=for k=
0 step
10 until
90:(R+
1+cosd(k),
1+sind(k))-- endfor for k=
90 step
10 until
180:(R+cosd(k)-
1,
1+sind(k))-- endfor for k=
180 step
10 until
270:(R+cosd(k)-
1,sind(k)-
1)-- endfor for k=
270 step
10 until
350:(R+cosd(k)+
1,sind(k)-
1)-- endfor (R+
2,
1)--cycle;
595 ObjetAnneau1("nbp=
42",pp);
600 \subsection{Compléments sur l'objet
\texttt{new
}}
601 La déclaration des sommets se fait sous forme de triplets. La
602 déclaration des faces se faisant quant à elle, sous la forme d'un
603 $n+
1$-uplet où $n$ est le nombre de sommets composant la face; le
604 premier nombre étant d'ailleurs égal à $n$ suivi des nombres
605 représentant les sommets de cette face :
\texttt{3 4 7 8} représente
606 une face triangulaire (
3) composée des sommets
4,
7 et
8 {\em donnés
607 dans le sens trigonométrique si l'on regarde la face de
609 \par La déclaration des sommets et des faces peut aussi être plus
610 complexes. Cet exemple, repris de la documentation de
611 \verb!pst-solides3d! montre comment on peut définir à l'aide de
612 boucles la liste des sommets et la liste des faces.
614 \begin{minipage
}{6cm
}
615 \includegraphics[width=
6cm
]{figures/hyperboloiderayonconstant1.pdf
}
618 \begin{minipage
}{10cm
}
619 \begin{lstlisting
}[frame=tb
]
620 Initialisation(
500,
30,
20,
25);
623 ObjetNew1((sqrt(
1+((zz+h)**
2)/
4),
0,zz+h)
625 for n=if m=a:b-
1 else:b fi downto
1:
626 ,(sqrt(
1+((zz+h*m/a)**
2)/
4)*cosd(n*(
360 div b)),sqrt(
1+((zz+h*m/a)**
2)/
4)*sind(n*(
360 div b)),zz+h*m/a)
629 )(
4,a*b,b+a*b,b-
1+a*b,a*b-
1
631 for n=if m=a:m*b-
1 else: m*b fi downto (m-
1)*b+
2:
634 ,
4,m*b+
1,(m+
1)*b,m*b,(m-
1)*b+
1
639 \subsection{Numéroter et enlever des facettes
}
640 Lorsque le paramètre booléen
\param{\verb!numeroteface!
} est
641 positionné à
\verb!true!, on numérote
{\em toutes
} les faces
{\em
642 visibles
} du solide. La police utilisée est
\verb!cmr5!; on peut
643 bien évidemment la modifier grâce à
\verb!defaultfont!.
645 \begin{minipage
}{6cm
}
646 \includegraphics[width=
6cm
]{figures/cubenumerote1.pdf
}
649 \begin{minipage
}{10cm
}
650 \begin{lstlisting
}[frame=tb
]
652 Initialisation(
1500,
30,
20,
20);
653 numeroteface:=true;
%<-
660 \par Une fois ceci fait, si le booléen
\param{\verb!creux!
} est positionné
661 à
\verb!true! alors on peut enlever des facettes pour voir ce qu'il se
662 passe à l'intérieur de l'objet considéré. On définit alors l'objet
663 puis on indique quelles sont les numéros des faces que l'on souhaite
664 enlever grâce à
\macro{\verb!ObjetEnleve1(...)!
}
666 \begin{minipage
}{6cm
}
667 \includegraphics[width=
6cm
]{figures/cubecreuse1.pdf
}
670 \begin{minipage
}{11cm
}
671 \begin{lstlisting
}[frame=tb
]
672 Initialisation(
1500,
30,
30,
50);
676 ObjetEnleve1(
7,
12,
17,
31,
33,
37,
41,
43,
131,
133,
141,
143);
681 Les numéros des faces à enlever doivent être donnés dans l'ordre croissant.
683 Si l'on souhaite enlever beaucoup de faces, une boucle
\verb!for! est
684 possible au prix d'un petit changement de syntaxe.
687 \includegraphics{figures/torecreuse1.pdf
}
689 \begin{lstlisting
}[frame=tb
]
692 figureespace(-
10u,-
10u,
10u,
10u);
693 Initialisation(
1000,
30,
20,
30);
696 incolor:=
0.5[gris,white
];
697 Objettore1("R=
2","r=
1");
703 \includegraphics{figures/torecreuse2.pdf
}
705 \begin{lstlisting
}[frame=tb
]
708 figureespace(-
10u,-
10u,
10u,
10u);
709 Initialisation(
1000,
30,
20,
30);
712 incolor:=
0.5[gris,white
];
713 Objettore1("R=
2","r=
1");
715 Face=""&for k=
133 step
2 until
193:decimal(k)&","&""& endfor decimal(
195)&"";
716 ObjetEnleve1(scantokens Face);
721 \subsection{Transparence
}
722 Elle est implantée grâce au booléen
\param{\verb!Transparence!
}
723 positionné à
\verb!false! par défaut. La couleur de transparence
724 choisie est
\param{\verb!fillcolor!
} positionnée à gray par défaut.
726 C'est une notion gourmande en ressources. Aussi, il est plutôt
727 conseillé de l'utiliser avec des objets
{\em simples
}.
731 \includegraphics{figures/J671.pdf
}
732 \caption{Polygone de Johnson : J67
}
734 \section{Et pour les bouger ?
}
735 On dispose (et certains codes de la partie précédente l'ont montré) :
737 \item des rotations autour des axes $(Ox)$, $(Oy)$ et $(Oz)$;
738 \item des translations;
739 \item de transformations définies par l'utilisateur.
741 \subsection{Les rotations et translations
}
742 L'ordre choisi pour les utiliser est la rotation d'axe $(Ox)$; puis
743 celle d'axe $(Oy)$; puis celle d'axe $(Oz)$ et enfin la
744 translation. Les rotations sont définis par trois angles
745 \param{\verb!angx!
},
\param{\verb!angy!
} et
\param{\verb!angz!
}.
749 initiale
]{\includegraphics[width=
4cm
]{figures/rotation1.pdf
}}\hfill
750 \subfigure[Position
\texttt{angx:=
90}]{\includegraphics[width=
4cm
]{figures/rotation2.pdf
}}\hfill
751 \subfigure[Position
\texttt{angy:=-
45}]{\includegraphics[width=
4cm
]{figures/rotation3.pdf
}}\hfill
752 \subfigure[Position
\texttt{angz:=
57}]{\includegraphics[width=
4cm
]{figures/rotation4.pdf
}}\hfill
753 \caption{Utilisation des rotations.
}
755 \par Pour les translations, le paramètre est
\param{\verb!TR!
} de type
759 \includegraphics{figures/translation1.pdf
}
760 \caption{Utilisation des translations.
}
763 Si un fichier
\MP\ comporte plusieurs figures, n'oubliez pas de
764 remettre les paramètres angulaires et de translation à leur valeur
765 d'origine. Sinon, vous pourriez bien vous tirer les cheveux pour
766 savoir où se situe votre erreur
\footnotemark\ldots
768 \footnotetext{Croyez-moi par expérience ;-)
}
769 \subsection{Les transformations propres à l'utilisateur
}
770 On dispose d'un booléen
\param{\verb!transformation!
} (positionné à
771 \texttt{false
} par défaut) pour indiquer la transformation nécessaire
772 des sommets de l'objet considéré.
773 \
\La transformation proprement dite, quant à elle, doit être définie
774 par une macro
\macro{Transform
} (attention à la majuscule).
775 \paragraph{Facteurs d'échelle
}
776 \
[\left\
{\begin{array
}{l
}
782 \begin{lstlisting
}[frame=tb
]
783 vardef Transform(expr PT)=
786 Xpart($)=
1.25*Xpart(PT);
787 Ypart($)=
0.75*Ypart(PT);
788 Zpart($)=
0.5*Zpart(PT);
792 outcolor:=jaune; incolor:=
0.5[vert,blanc
];
794 figureespace(-
10u,-
10u,
10u,
10u);
795 Initialisation(
500,
50,
20,
15);
797 outcolor:=
0.5[rouge,blanc
];
798 Objettore1("R=
4","r=
2");
803 figureespace(-
10u,-
10u,
10u,
10u);
804 Initialisation(
500,
50,
20,
15);
806 transformation:=true;
%<-Pour appliquer la transformation choisie.
807 outcolor:=
0.5[rouge,blanc
];
808 Objettore1("R=
4","r=
2");
814 \
[\includegraphics{figures/Facteurechelle1.pdf
}\kern1cm\includegraphics{figures/Facteurechelle2.pdf
}\
]
815 \paragraph{Transformation liée à la distance du point à l'origine
}
816 \
[\left\
{\begin{array
}{l
}
817 x'=(
0,
5\sqrt{x^
2+y^
2+z^
2}+
1-
0,
5\sqrt3)x\\
818 y'=(
0,
5\sqrt{x^
2+y^
2+z^
2}+
1-
0,
5\sqrt3)y\\
819 z'=(
0,
5\sqrt{x^
2+y^
2+z^
2}+
1-
0,
5\sqrt3)z\\
822 \begin{lstlisting
}[frame=tb
]
823 vardef Transform(expr PT)=
825 Xpart($)=Xpart(PT)*(
0.5*Norm(PT)+
1-
0.5*sqrt(
3));
826 Ypart($)=Ypart(PT)*(
0.5*Norm(PT)+
1-
0.5*sqrt(
3));
827 Zpart($)=Zpart(PT)*(
0.5*Norm(PT)+
1-
0.5*sqrt(
3));
833 figureespace(-
6u,-
6u,
6u,
6u);
835 Initialisation(
500,
60,
20,
50);
837 transformation:=true;
844 \includegraphics{figures/Transforigine1.pdf
}
845 \caption{Déformation d'un cube
}
848 \paragraph{Torsion d'une poutre
}
849 \
[M'=
\mbox{Rotation
}(M,(Oz),
10\mbox{\degres}*z_
{M
})\
]
850 appliqué à un prisme de hauteur
10.
854 torsion
]{\includegraphics{figures/Torsion1.pdf
}}\kern1cm\subfigure[Après torsion
]{\includegraphics{figures/Torsion2.pdf
}}
855 \caption{Torsion d'une poutre
}
858 \begin{lstlisting
}[frame=tb
]
859 vardef Transform(expr PT)=
%pour la torsion.
861 angz:=subh*(Zpart(PT));
868 figureespace(-
2u,-
2u,
2u,
10u);
869 Initialisation(
500,
50,
20,
35);
872 Objetgrille1("am=-
2","an=
2","bm=-
2","bn=
2");
874 outcolor:=
0.5[rouge,blanc
];
875 Objetprisme2("axe=(
0,
0,
1)","h=
10")((
0.5,-
0.5,
0),(
0.5,
0.5,
0),(-
0.5,
0.5,
0),(-
0.5,-
0.5,
0));
880 figureespace(-
2u,-
2u,
2u,
10u);
881 Initialisation(
500,
50,
20,
25);
884 Objetgrille1("am=-
2","an=
2","bm=-
2","bn=
2");
886 transformation:=true;
887 outcolor:=
0.5[rouge,blanc
];
888 Objetprisme2("axe=(
0,
0,
1)","h=
10")((
0.5,-
0.5,
0),(
0.5,
0.5,
0),(-
0.5,
0.5,
0),(-
0.5,-
0.5,
0));
893 \paragraph{Flexion d'une poutre encastrée
}
894 On exerce une force au sommet de la poutre dans la direction
895 $(Ox)$. La rotation se fait alors suivant l'axe $(Oy)$ d'un angle
896 proportionnel à la force exercée et à la distance au sol.
900 flexion
]{\includegraphics{figures/Flexion1.pdf
}}\kern1cm\subfigure[Après flexion
]{\includegraphics{figures/Flexion2.pdf
}}
901 \caption{Flexion d'une poutre encastrée
}
903 \begin{lstlisting
}[frame=tb
]
904 vardef Transform(expr PT)=
%pour la flexion.
913 figureespace(-
3u,-
3u,
3u,
10u);
914 Initialisation(
500,
50,
20,
35);
917 Objetgrille1("am=-
2","an=
2","bm=-
2","bn=
2");
919 transformation:=true;
920 outcolor:=
0.5[rouge,blanc
];
921 ObjetPrisme2("axe=(
0,
0,
1)","h=
10")((
0.5,-
0.5,
0),(
0.5,
0.5,
0),(-
0.5,
0.5,
0),(-
0.5,-
0.5,
0));
926 Voici enfin l'exemple de la banane ! Il m'a été demandé pour un cours de topologie. Je n'y comprends rien :) mais cela montre
{\em l'enchaînement
} de deux transformations :
928 \item la première est appliquée à l'objet
\texttt{sphere
};
929 \item la deuxième est aplliquée à l'objet résultant de la première transformation.
934 les transformations
]{\includegraphics{figures/Banane1.pdf
}}\kern1cm\subfigure[Après les transformations
]{\includegraphics{figures/Banane2.pdf
}}
935 \caption{Transformation d'une sphère en
\og banane
\fg}
937 \begin{lstlisting
}[frame=tb
]
938 vardef Transform(expr PT)=
940 Xpart($)=
0.6*Xpart(PT);
941 Ypart($)=
0.6*Ypart(PT);
942 Zpart($)=
1.75*Zpart(PT);
946 figureespace(-
7u,-
7u,
7u,
7u);
948 Initialisation(
1500,-
60,
10,
50);
954 transformation:=true;
955 ObjetDeplacement2(
1);
957 vardef Transform(expr PT)=
959 angy:=
10*(Zpart(PT));
965 ObjetDeplacement3(
2);
968 \section{Ces objets, on peut les couper ?
}
970 Il n'y a que la section d'un objet par un plan qui est implanté. Et
971 même avec cela, les
\texttt{arithmetic overflow
} sont assez
972 courants. On peut avoir également des erreurs de précisions qui
973 entraînent certaines représentations non conformes.\
\Malgré ces
974 limitations,
\MP\ est capable de nous procurer de bien jolies
975 figures. On peut l'aider en modifiant les paramètres
976 \param{\texttt{nb
}} et
\param{\texttt{subh
}} pour permettre de
977 lever ces
{\em petits
} soucis.
979 On va donc pouvoir couper les différents objets par un plan. Les
980 objets seront
{\em nécessairement
} creux. Pour cela, on va définir un
981 plan par la macro
\macro{\verb!ObjetPlan!
} qui accepte comme paramètres
982 trois points formant le plan. Définir un plan par une équation
983 cartésienne ou par un point et un vecteur normal n'est pas implanté.
985 \begin{lstlisting
}[frame=tb
]
986 ObjetPlan1("An=(
0,
0,
0)","Bn=(
1,
2,
0.25)","Cn=(
4,-
2,
1)");
988 pour définir le plan d'équation $x=
4z$.
989 Une fois le plan défini, on utilise la macro
990 \macro{\verb!ObjetSepare2(
5,
7)!
} où
2 est le numéro de l'objet à
991 couper;
5 et
7 étant les numéros des objets résultants de la coupe :
7
992 pour la partie
\og haute
\fg\,
5 pour la partie
\og base
\fg.
993 \par Dans l'exemple ci-dessous, on a coupé une sphère de centre $O$ et
994 de rayon
1 par le plan $x+y+z=
1$.
995 \begin{minipage
}{8cm
}
998 \includegraphics{figures/sectionsphere1.pdf
}
999 \caption{Section d'une sphère.
}
1003 \begin{minipage
}{9cm
}
1004 \begin{lstlisting
}[frame=tb
]
1005 figureespace(-
100u,-
100u,
100u,
100u);
1006 Initialisation(
2500,
60,
30,
75);
1009 incolor:=
0.5[vert,white
];
1012 Objetsphere15("R=
1");
1013 Objetplan21("An=(
1,
0,
0)","Bn=(
0,
1,
0)",
%
1021 \par Voici la section d'un tore par le plan d'équation $x=
4z$.
1023 \begin{minipage
}{8cm
}
1026 \includegraphics[width=
8cm
]{figures/sectiontore1.pdf
}
1027 \caption{Section d'un tore.
}
1031 \begin{minipage
}{9cm
}
1032 \begin{lstlisting
}[frame=tb
]
1033 figureespace(-
100u,-
100u,
100u,
100u);
1034 Initialisation(
2500,
60,
30,
75);
1037 incolor:=
0.5[vert,white
];
1040 Objettore15("R=
2","r=
0.75");
1041 Objetplan21("An=(
1,
0,
0.25)","Bn=(
2,
1,
0.5)","Cn=(-
1,
0,-
0.25)");
1047 \par Un autre exemple (voir figure
\ref{fig:sectioncube
}) où on coupe
1048 un cube d'arête
2 centré sur $O$ par le même plan d'équation $x=
4z$
1052 \subfigure[Section d'un
1053 cube
]{\includegraphics{figures/sectioncube1.pdf
}}\hfill\subfigure[en
1055 dessus
]{\includegraphics{figures/sectioncube3.pdf
}}\hfill\subfigure[en vue de face
]{\includegraphics{figures/sectioncube2.pdf
}}
1056 \caption{Sections d'un cube
}
1057 \label{fig:sectioncube
}
1059 \begin{lstlisting
}[frame=tb
]
1060 figureespace(-
100u,-
100u,
100u,
100u);
1061 Initialisation(
2500,
60,
30,
75);
1064 incolor:=
0.5[vert,white
];
1068 Objetplan21("An=(
1,
0,
0.25)","Bn=(
0,
1,
0)","Cn=(
4,
0,
1)");
1075 On peut également enchaîner les coupes
\footnote{Mais là, je ne
1076 garantis pas les résultats.
}.
\par
1077 \begin{minipage
}{8cm
}
1080 \includegraphics[width=
8cm
]{figures/doublesectioncone1.pdf
}
1081 \caption{Double section d'un cône
}
1085 \begin{minipage
}{9cm
}
1086 \begin{lstlisting
}[frame=tb
]
1087 figureespace(-
100u,-
100u,
100u,
100u);
1088 Initialisation(
2500,-
60,
30,
75);
1091 incolor:=
0.5[vert,white
];
1093 angx:=
90; TR:=(
0,
5,
0);
1094 Objetcone15("r=
2","h=
10");
1095 angx:=
0; TR:=(
0,
0,
0);
1096 Objetplan21("An=(
1,-
1,
0)","Bn=(
2,-
2,
1)","Cn=(-
2,
2,
1)");
1098 Objetplan22("An=(
1,
1,
0)","Bn=(
2,
2,
1)","Cn=(-
2,-
2,
1)");
1104 \section{La fusion ? C'est parti !
}
1105 Une fois que l'on dispose de tous ces objets, on peut les fusionner
1106 pour créer une scène. La méthode mise en place est la suivante :
1108 \item On définit les objets les uns après les autres en leur
1109 attribuant, si besoin est, les couleurs
\param{\verb!outcolor!
} et
\param{\verb!incolor!
};
1110 \item puis on fusionne tous ces objets. Simple, non ?
1112 Prenons un exemple:
\par
1113 \begin{minipage
}{8cm
}
1116 \includegraphics[width=
6cm
]{figures/fusionsyr1.pdf
}
1117 \caption{Un tore et un cône
}
1118 \label{fig:fusionsyr1
}
1122 \begin{minipage
}{10cm
}
1123 \begin{lstlisting
}[frame=tb
]
1125 figureespace(-
10u,-
10u,
10u,
10u);
1126 Initialisation(
500,
10,
20,
50);
1129 Objetcone1("r=
2.5","h=
5");
1131 angy:=
20; TR:=(
0,
0,
2);
1132 Objettore2("R=
2","r=
0.5");
1138 Convaincu de la simplicité ? Non ? Alors en voici un autre :
\par
1139 \begin{minipage
}{8cm
}
1142 \includegraphics[width=
7cm
]{figures/fusionphan1.pdf
}
1143 \caption{Une hélice entourant un cylindre
}
1147 \begin{minipage
}{10cm
}
1148 \begin{lstlisting
}[frame=tb
]
1150 figureespace(-
10u,-
10u,
10u,
10u);
1151 Initialisation(
500,
60,
40,
50);
1152 angy:=
90; TR:=(-
1,
0,
0);
1155 Objetcylindre1("r=
0.5","h=
7");
1158 ObjetTube2("(sin(t),cos(t),t/
5)","(cos(t),-sin(t),
1/
5)",
0.25,-
5,
165,
0.2);
1164 La fusion se fait donc par l'usage de la macro
1165 \macro{\verb!DessineFusion!
} qui fusionne tous les objets créés
1166 précédemment. Elle dépend de
\param{nbobj
} qui lui indique le nombre
1167 d'objets à fusionner. La numérotation des objets prend ici tout son
1168 sens. C'est ce qui permet à la macro de retrouver ses petits
\ldots
1169 \par\begin{minipage
}{8cm
}
1170 \includegraphics[width=
8cm
]{figures/fusionhorop1.pdf
}
1173 \begin{minipage
}{10cm
}
1174 \begin{lstlisting
}[frame=tb
]
1175 figureespace(-
20u,-
20u,
20u,
20u);
1176 Initialisation(
500,
60,
20,
30);
1180 incolor:=
0.5[vert,white
];
1181 angx:=
90; TR:=(
2,
9,
0);
1182 Objetcylindre1("r=
1","h=
18");
1183 outcolor:=
0.5[jaune,blanc
];
1184 incolor:=
0.5[violet,blanc
];
1185 angx:=
0; TR:=(
0,
0,
0);
1186 ObjetTube2("(
2*(
1+cos(t)),
2*tan(t/
2),
2*sin(t))","(-
2*sin(t),
2/((cos(t/
2))**
2),
2*cos(t))",
1,-
2.7468,
71,
0.0763);
1192 \par Un autre exemple avec des solides creusés manuellement.
\par
1193 \begin{minipage
}{8cm
}
1194 \includegraphics[width=
8cm
]{figures/fusionsolidescreux1.pdf
}
1197 \begin{minipage
}{9cm
}
1198 \begin{lstlisting
}[frame=tb
]
1201 figureespace(-
10u,-
10u,
10u,
10u);
1202 Initialisation(
1500,
20,
20,
50);
1204 outcolor:=
0.5[jaune,white
];
1205 incolor:=
0.5[vert,white
];
1206 Objetanneau1("R=
4","r=
3","h=
1.5");
1207 ObjetEnleve1(
135,
136,
137,
138,
%
1208 139,
140,
150,
151,
152,
153,
154,
155);
1211 outcolor:=
0.5[bleu,white
];
1212 incolor:=
0.5[rouge,white
];
1213 Objetsphere2("R=
2");
1214 ObjetEnleve2(
232,
233,
234,
235,
%
1221 \subsection{Deux anneaux
}
1222 \begin{minipage
}{8cm
}
1223 \includegraphics[width=
8cm
]{figures/exfusion1.pdf
}
1226 \begin{minipage
}{10cm
}
1227 \begin{lstlisting
}[frame=tb
]
1228 outcolor:=
0.5[rouge,blanc
];
1230 figureespace(-
10u,-
10u,
10u,
10u);
1231 Initialisation(
500,
40,
20,
100);
1233 ObjetTube1("(cos(t),sin(t),
0.25)","(-sin(t),cos(t),
0)",
0.15,
0,
50,
0.12566);
1234 angx:=
90; TR:=(-
1,-
0.1,
0.5);
1235 ObjetTube2("(cos(t),sin(t),
0.25)","(-sin(t),cos(t),
0)",
0.15,
0,
50,
0.12566);
1241 \subsection{Trois calottes
}
1242 \begin{minipage
}{8cm
}
1243 \includegraphics[width=
8cm
]{figures/exfusion11.pdf
}
1246 \begin{minipage
}{10cm
}
1247 \begin{lstlisting
}[frame=tb
]
1248 outcolor:=
0.5[ciel,blanc
]; incolor:=
0.5[jaune,blanc
];
1252 figureespace(-
10u,-
10u,
10u,
10u);
1253 Initialisation(
500,
30,
10,
50);
1257 Objetcalotte1("R=
2","phib=-pi/
2","phih=pi/
6");
1258 outcolor:=
0.5[rouge,blanc
];
1259 incolor:=
0.5[vert,blanc
];
1261 Objetcalotte2("R=
1.5","phib=-pi/
2","phih=pi/
6");
1262 outcolor:=
0.5[orange,blanc
];
1263 incolor:=
0.5[gris,blanc
];
1265 Objetcalotte3("R=
1","phib=-pi/
2","phih=pi/
6");