1 |
\documentclass[12pt,a4paper]{report} |
\documentclass[11pt,twoside,a4paper]{report} |
2 |
|
|
3 |
\usepackage{hevea} |
\usepackage{hevea} |
4 |
|
|
10 |
|
|
11 |
%\usepackage[dvips]{graphicx} |
%\usepackage[dvips]{graphicx} |
12 |
|
|
13 |
\title{GeoCaml} |
\newcommand{\geocaml}{% |
14 |
|
\texttt{GeOCaml}\ |
15 |
|
} |
16 |
|
|
17 |
|
\title{\geocaml} |
18 |
|
|
19 |
\author{A. Doniec} |
\author{A. Doniec} |
20 |
|
|
21 |
|
\newenvironment{geoenonce}[1]{% |
22 |
|
\paragraph{#1} |
23 |
|
}{% |
24 |
|
} |
25 |
|
|
26 |
|
|
27 |
\begin{document} |
\begin{document} |
28 |
|
|
29 |
% |
% |
30 |
\maketitle |
\maketitle |
31 |
|
|
32 |
|
\tableofcontents{} |
33 |
|
|
34 |
|
|
35 |
\begin{center} |
\begin{center} |
36 |
GeoCaml est un projet accessible sur le site Savannah |
\geocaml est un projet accessible sur le site Savannah |
37 |
|
|
38 |
\ahrefurl{http://savannah.gnu.org/projects/geocaml/} |
\ahrefurl{http://savannah.gnu.org/projects/\geocaml/} |
39 |
\end{center} |
\end{center} |
40 |
|
|
41 |
|
|
42 |
\pagestyle{estas} |
\pagestyle{estas} |
43 |
|
|
44 |
\chapter{Manuel GeoCaml} |
\chapter{Manuel \geocaml}\thispagestyle{estas} |
45 |
|
|
46 |
\section{Installation} |
\section{Installation} |
47 |
\noindent |
\noindent |
48 |
GeoCaml est en téléchargement à l'adresse:\\ |
\geocaml est en téléchargement à l'adresse:\\ |
49 |
\texttt{http://freesoftware.fsf.org/download/geocaml/} |
\texttt{http://freesoftware.fsf.org/download/geocaml/} |
50 |
\newline |
\newline |
51 |
\noindent |
\noindent |
76 |
|
|
77 |
\section{Configuration} |
\section{Configuration} |
78 |
|
|
79 |
GeoCaml offre deux types d'affichage: l'un dans une fenêtre graphique, l'autre par le biai d'un fichier Postcript généré de manière automatique. La visualisation par la fenêtre graphique est utilisable immédiatement. En revanche pour la génération Postcript, quelques manipulations sont préalablement nécessaires.\\ |
\geocaml offre deux types d'affichage: l'un dans une fenêtre graphique, l'autre par le biai d'un fichier Postcript généré de manière automatique. La visualisation par la fenêtre graphique est utilisable immédiatement. En revanche pour la génération Postcript, quelques manipulations sont préalablement nécessaires.\\ |
80 |
|
|
81 |
Il faut tout d'abord disposer d'un processeur XSLT. Plusieurs sont disponibles gratuitement, citons par exemple: |
Il faut tout d'abord disposer d'un processeur XSLT. Plusieurs sont disponibles gratuitement, citons par exemple: |
82 |
\begin{itemize} |
\begin{itemize} |
83 |
\item Sablotron sur http://www.gingerall.com/ |
\item Sablotron sur \ahrefurl{http://www.gingerall.com/} |
84 |
\item TranforMiix sur http://www.mozilla.org/projects/xslt |
\item TranforMiix sur \ahrefurl{http://www.mozilla.org/projects/xslt} |
85 |
|
\item XsltProc sur \ahrefurl{http://xmlsoft.org/XSLT/xsltproc.html} |
86 |
\end{itemize} |
\end{itemize} |
87 |
|
|
88 |
Il faut ensuite télécharger (et bien sûr installer...) l'extention \texttt{pst-eucl} de Dominique Rodriguez à l'adresse suivante: http://dominique.rodriguez.9online.fr/pst-eucl/. |
Il faut ensuite télécharger (et bien sûr installer...) l'extention \texttt{pst-eucl} de Dominique Rodriguez à l'adresse suivante: http://dominique.rodriguez.9online.fr/pst-eucl/. |
89 |
Pour terminer, il faut éditer le fichier \texttt{postcript.sh} et choisir le processeur XLST (voire en ajouter un autre...) en commantant ou décommantant les lignes adéquates. |
Pour terminer, il faut éditer le fichier \texttt{postcript.sh} et choisir le processeur XLST (voire en ajouter un autre...) en commantant ou décommantant les lignes adéquates. |
90 |
\newpage |
|
91 |
|
|
92 |
|
|
93 |
\section{Présentation Rapide} |
\section{Présentation Rapide} |
94 |
|
|
95 |
GeoCaml est un programme dédié à la géométrie euclidienne. Il permet par l'utilisation d'un langage simple (proche du langage naturel) de décrire des constructions géométriques. GeoCaml analyse le texte source décrivant la construction et génére un affichage graphique.\\ |
\geocaml est un programme dédié à la géométrie euclidienne. Il permet par l'utilisation d'un langage simple (proche du langage naturel) de décrire des constructions géométriques. \geocaml analyse le texte source décrivant la construction et génére un affichage graphique.\\ |
96 |
|
|
97 |
Un exemple valant mieux qu'un long discours, considérons le problème de 'la droite de Simpson': \textit{Soit ABC un triangle, un point D appartenant à son cercle circonscrit, E, F, et G les projettés orthogonaux de D respectivement sur (BC), (CA), (AB). Que peut-on dire des points E, F, et G?}\\ |
Un exemple valant mieux qu'un long discours, considérons le problème |
98 |
|
de |
99 |
|
|
100 |
|
|
101 |
|
\begin{geoenonce}{«la droite de Simpson»} |
102 |
|
\textit{Soit ABC un triangle, un point D appartenant à son cercle circonscrit, E, F, et G les projettés orthogonaux de D respectivement sur (BC), (CA), (AB). Que peut-on dire des points E, F, et G?} |
103 |
|
\end{geoenonce} |
104 |
|
|
105 |
|
|
106 |
|
Voici le fichier \geocaml source décrivant la construction: |
107 |
|
|
108 |
|
|
109 |
|
\verbatiminput{../../exemple/simpson.geo} |
110 |
|
|
111 |
|
|
|
\noindent |
|
|
Voici le source décrivant la construction: |
|
|
\verbatiminput{../exemple/simpson.geo} |
|
112 |
|
|
113 |
\vfill |
\vfill |
114 |
|
|
115 |
\newpage |
\newpage |
116 |
GeoCaml peut afficher le résultat à l'écran: |
\geocaml peut afficher le résultat à l'écran: |
117 |
\begin{figure}[!h] |
\begin{figure}[!h] |
118 |
\begin{center} |
\begin{center} |
119 |
\includegraphics[width=0.6\columnwidth]{simpson.ps} |
\includegraphics[width=0.7\columnwidth]{simpson.ps} |
120 |
\end{center} |
\end{center} |
121 |
\end{figure} |
\end{figure} |
122 |
|
|
124 |
|
|
125 |
\begin{figure}[!h] |
\begin{figure}[!h] |
126 |
\begin{center} |
\begin{center} |
127 |
\includegraphics[width=0.6\columnwidth]{simpson_gv.ps} |
\includegraphics[width=0.7\columnwidth]{simpson_gv.ps} |
128 |
\end{center} |
\end{center} |
129 |
\end{figure} |
\end{figure} |
130 |
|
|
132 |
\newpage |
\newpage |
133 |
\section{Description du langage} |
\section{Description du langage} |
134 |
|
|
135 |
Un texte décrivant la figure est une suite de déclarations de points, de droites (ou segments...) et de cercles. Chaque déclaration commence par un \texttt{soit} (ou un \texttt{soient} \footnote{GeoCaml ne tenant pas compte de l'othographe, \texttt{soit} et \texttt{soient} peuvent s'utiliser indifferemment}) et se termine par un '\texttt{.}'. Lorsque l'on souhaite déclarer un objet qui n'apparaitra pas sur la figure (typiquement le cas des traits de constructions), on fait précéder la déclaration du signe '\texttt{/}'. |
Un texte décrivant la figure est une suite de déclarations de points, |
136 |
|
de droites (ou segments...) et de cercles. Chaque déclaration commence |
137 |
|
par un \texttt{soit} (ou un \texttt{soient} \footnote{\geocaml ne |
138 |
|
tenant pas compte de l'othographe, \texttt{soit} et \texttt{soient} |
139 |
|
peuvent s'utiliser indifferemment}) et se termine par un |
140 |
|
'\texttt{.}'. Lorsque l'on souhaite déclarer un objet qui n'apparaitra |
141 |
|
pas sur la figure (typiquement le cas des traits de constructions), on |
142 |
|
fait précéder la déclaration du signe '\texttt{/}'. |
143 |
|
|
144 |
\subsection{Les points} |
\subsection{Les points} |
145 |
|
|
146 |
GeoCaml utilise comme identifiants pour les points une chaîne de caractères éventuellement suivie d'un nombre. |
\geocaml utilise comme identifiants pour les points une chaîne de |
147 |
|
caractères éventuellement suivie d'un nombre. |
148 |
|
|
149 |
\subsubsection{Le point quelconque} |
\subsubsection{Le point quelconque} |
150 |
|
|
151 |
Pour créer un (ou plusieurs) point(s) quelconque(s), plusieurs syntaxes sont possibles:\\ |
Pour créer un (ou plusieurs) point(s) quelconque(s), plusieurs syntaxes sont possibles:\\ |
152 |
\newline |
|
153 |
|
|
154 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
155 |
soit <identifiant> un point. |
soit <identifiant> un point. |
156 |
\end{boxedverbatim} |
\end{boxedverbatim} |
175 |
\end{boxedverbatim} |
\end{boxedverbatim} |
176 |
\\ |
\\ |
177 |
\smallskip |
\smallskip |
178 |
\\ |
|
179 |
\paragraph{Remarque}: pour une question de cohérence dans la déclaration, GeoCaml exige que \texttt{n} référence le nombre exacte d'identifiants précédemment listés. Si ce n'est pas le cas, un message d'erreur est affiché.\\ |
\paragraph{Remarque}: pour une question de cohérence dans la |
180 |
|
déclaration, \geocaml exige que \texttt{n} référence le nombre exacte |
181 |
|
d'identifiants précédemment listés. Si ce n'est pas le cas, un message |
182 |
|
d'erreur est affiché. |
183 |
|
|
184 |
|
|
185 |
\noindent |
\noindent |
186 |
\paragraph{Exemple}: |
\paragraph{Exemple}: |
191 |
|
|
192 |
\subsubsection{Les points d'intersections} |
\subsubsection{Les points d'intersections} |
193 |
|
|
194 |
La première famille de points d'intersections que l'on rencontre en géométrie sont les intersections de droites (ou de segments):\\ |
La première famille de points d'intersections que l'on rencontre en |
195 |
\newline |
géométrie sont les intersections de droites (ou de segments): |
196 |
|
|
197 |
|
|
198 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
199 |
soit <id_point> intersection de <id_line_1> et <id_line_2>. |
soit <id_point> intersection de <id_line_1> et <id_line_2>. |
200 |
\end{boxedverbatim} |
\end{boxedverbatim} |
201 |
\footnote{Nous verrons plus loin comment déclarer des droites et des segments} |
\footnote{Nous verrons plus loin comment déclarer des droites et des segments} |
|
\\ |
|
202 |
|
|
203 |
La seconde famille est composée des intersections cercle/droite et cercle/cercle. De telles intersections sont en général formées de deux points (sauf cas extrème des tangentes où les deux points sont alors confondus). La déclaration nécessite donc l'introduction de deux identifiants:\\ |
|
204 |
\newline |
La seconde famille est composée des intersections cercle/droite et |
205 |
|
cercle/cercle. De telles intersections sont en général formées de deux |
206 |
|
points (sauf cas extrème des tangentes où les deux points sont alors |
207 |
|
confondus). La déclaration nécessite donc l'introduction de deux |
208 |
|
identifiants: |
209 |
|
|
210 |
|
|
211 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
212 |
soientt <id_pt_1> et <id_pt_2> intersections de <id1> et <id2>. |
soientt <id_pt_1> et <id_pt_2> intersections de <id1> et <id2>. |
213 |
\end{boxedverbatim} |
\end{boxedverbatim} |
214 |
\\ |
|
215 |
\newline |
|
216 |
\paragraph{Remarque}:\texttt{id1} et \texttt{id2} peuvent référencer des cercles ou des droites. Si \texttt{id1} et \texttt{id2} référencent tous deux une droite, un message d'erreur est affiché indiquant que ce type d'intersection retourne un point et non deux. |
|
217 |
|
\paragraph{Remarque}:\texttt{id1} et \texttt{id2} peuvent référencer |
218 |
|
des cercles ou des droites. Si \texttt{id1} et \texttt{id2} |
219 |
|
référencent tous deux une droite, un message d'erreur est affiché |
220 |
|
indiquant que ce type d'intersection retourne un point et non deux. |
221 |
|
|
222 |
\subsubsection{Le milieu} |
\subsubsection{Le milieu} |
223 |
|
|
224 |
GeoCaml permet la construction d'un milieu par la donnée soit de 2 points, soit d'un segment:\\ |
\geocaml permet la construction d'un milieu par la donnée soit de 2 |
225 |
\newline |
points, soit d'un segment: |
226 |
|
|
227 |
|
|
228 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
229 |
soit <id_milieu> milieu de <id_point_1> et <id_point2>. |
soit <id_milieu> milieu de <id_point_1> et <id_point2>. |
230 |
\end{boxedverbatim} |
\end{boxedverbatim} |
235 |
soit <id_milieu> milieu de <id_segment>. |
soit <id_milieu> milieu de <id_segment>. |
236 |
\end{boxedverbatim} |
\end{boxedverbatim} |
237 |
\\ |
\\ |
238 |
\newline |
|
239 |
\paragraph{Remarque}: si \verb+id_segment+ ne référence pas un segment, un message d'erreur est affiché. |
\paragraph{Remarque}: si \verb+id_segment+ ne référence pas un |
240 |
|
segment, un message d'erreur est affiché. |
241 |
|
|
242 |
\subsubsection{Points sur cercle/points sur droite} |
\subsubsection{Points sur cercle/points sur droite} |
243 |
|
|
244 |
Nous avons vu qu'il était possible de définir un point quelconque dans le plan. Il est également possible de définir un point sur une droite ou sur un cercle:\\ |
Nous avons vu qu'il était possible de définir un point quelconque dans |
245 |
|
le plan. Il est également possible de définir un point sur une droite |
246 |
|
ou sur un cercle: |
247 |
|
|
248 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
249 |
soit <id_point> un point de <id_objet>. |
soit <id_point> un point de <id_objet>. |
250 |
\end{boxedverbatim} |
\end{boxedverbatim} |
251 |
\\ |
\\ |
252 |
\newline |
|
253 |
\paragraph{Remarque}: si \verb+id_objet+ ne référence ni une droite, ni un cercle, un message d'erreur est affciché. |
\paragraph{Remarque}: si \verb+id_objet+ ne référence ni une droite, |
254 |
|
ni un cercle, un message d'erreur est affiché. |
255 |
|
|
256 |
\subsection{Les droites et segments} |
\subsection{Les droites et segments} |
257 |
|
|
258 |
Généralement en géométrie, les droites (et segments) sont identifiées par un couple de points entre parenthèses (ou entre crochets pour le segment).\\ |
Généralement en géométrie, les droites (et segments) sont identifiées |
259 |
ex: \textit{soit le droite (AB) et le segment [BC]}\\ |
par un couple de points entre parenthèses (ou entre crochets pour le |
260 |
GeoCaml utilise une syntaxe très proche, les identifiants de points étant séparés par une virgule.\footnote{Comme en géométrie, \texttt{(A,B)} et \texttt{(B,A)} référent à la même droite, il est donc possible d'utiliser les deux identifiants indifféremment} Il est également possible d'identifier les droites et les segments par une chaîne de caractère suivie d'un nombre comme pour les points. |
segment). |
261 |
|
|
262 |
|
ex: \textit{soit le droite (AB) et le segment [BC]} |
263 |
|
|
264 |
|
\geocaml utilise une syntaxe très proche, les identifiants de points |
265 |
|
étant séparés par une virgule.\footnote{Comme en géométrie, |
266 |
|
\texttt{(A,B)} et \texttt{(B,A)} référent à la même droite, il est |
267 |
|
donc possible d'utiliser les deux identifiants indifféremment} Il |
268 |
|
est également possible d'identifier les droites et les segments par |
269 |
|
une chaîne de caractère suivie d'un nombre comme pour les points. |
270 |
|
|
271 |
\subsubsection{Droites et segments quelconques} |
\subsubsection{Droites et segments quelconques} |
272 |
|
|
273 |
Pour déclarer des droites et des segments quelconques, il est nécessaire d'employer la notation non-parenthésée pour l'identifiant:\\ |
Pour déclarer des droites et des segments quelconques, il est |
274 |
|
nécessaire d'employer la notation non-parenthésée pour l'identifiant: |
275 |
|
|
276 |
\noindent |
\noindent |
277 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
278 |
soit <id_droite> une droite quelconque. |
soit <id_droite> une droite quelconque. |
279 |
\end{boxedverbatim} |
\end{boxedverbatim} |
280 |
\footnote{Contrairement au point, le mot réservé \texttt{quelconque} n'est pas facultatif} |
\footnote{Contrairement au point, le mot réservé \texttt{quelconque} n'est pas facultatif} |
281 |
\\ |
|
282 |
\newline |
|
283 |
|
|
284 |
\noindent |
\noindent |
285 |
\paragraph{Exemple}: |
\paragraph{Exemple}: |
286 |
\begin{verbatim} |
\begin{verbatim} |
289 |
|
|
290 |
\subsubsection{Droites et segments passant par deux points} |
\subsubsection{Droites et segments passant par deux points} |
291 |
|
|
292 |
Connaissant deux points, il possible de tracer la droite ou le segment qui en résulte. Deux syntaxes sont disponibles. La première utilise comme identifiant la chaîne de caractères quelconque:\\ |
Connaissant deux points, il possible de tracer la droite ou le segment |
293 |
|
qui en résulte. Deux syntaxes sont disponibles. La première utilise |
294 |
|
comme identifiant la chaîne de caractères quelconque: |
295 |
|
|
296 |
\noindent |
\noindent |
297 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
304 |
soit <id_droite> le segment passant par <id_pt_1> et <id_pt_2>. |
soit <id_droite> le segment passant par <id_pt_1> et <id_pt_2>. |
305 |
\end{boxedverbatim} |
\end{boxedverbatim} |
306 |
\\ |
\\ |
307 |
\newline |
|
308 |
\noindent |
\noindent |
309 |
La seconde utilise la notation parenthésée:\\ |
La seconde utilise la notation parenthésée: |
310 |
\newline |
|
311 |
\noindent |
\noindent |
312 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
313 |
soit la droite (<id_pt_1>,<id_pt_2>). |
soit la droite (<id_pt_1>,<id_pt_2>). |
319 |
soit le segment [<id_pt_1>,<id_pt_2>]. |
soit le segment [<id_pt_1>,<id_pt_2>]. |
320 |
\end{boxedverbatim} |
\end{boxedverbatim} |
321 |
\\ |
\\ |
322 |
\newline |
|
323 |
\noindent |
\noindent |
324 |
\paragraph{Exemple}: |
\paragraph{Exemple}: |
325 |
\begin{verbatim} |
\begin{verbatim} |
331 |
\subsubsection{Orthogonalité} |
\subsubsection{Orthogonalité} |
332 |
|
|
333 |
Les droites perpendiculaires se définissent à partir d'une autre droite (voire d'un segment) et d'un point:\\ |
Les droites perpendiculaires se définissent à partir d'une autre droite (voire d'un segment) et d'un point:\\ |
334 |
\newline |
|
335 |
|
|
336 |
\noindent |
\noindent |
337 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
338 |
soit <id1> la droite perpendiculaire à <id2> passant par <id_point>. |
soit <id1> la droite perpendiculaire à <id2> passant par <id_point>. |
340 |
\\ |
\\ |
341 |
|
|
342 |
Pour ce qui est des segments, il faut en plus préciser la longueur. La notation utilisée pour représenter la longueur est celle de la distance algébrique:\\ |
Pour ce qui est des segments, il faut en plus préciser la longueur. La notation utilisée pour représenter la longueur est celle de la distance algébrique:\\ |
343 |
\newline |
|
344 |
\noindent |
\noindent |
345 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
346 |
soit <id1> le segment perpendiculaire à <id2> |
soit <id1> le segment perpendiculaire à <id2> |
373 |
soit <id1> le segment parralèle à <id2> |
soit <id1> le segment parralèle à <id2> |
374 |
passant par <id_point> et de longueur |<id_point1>,<id_point2>|. |
passant par <id_point> et de longueur |<id_point1>,<id_point2>|. |
375 |
\end{boxedverbatim} |
\end{boxedverbatim} |
376 |
\\ |
|
|
\newline |
|
|
\noindent |
|
377 |
\paragraph{Exemple}: |
\paragraph{Exemple}: |
378 |
\begin{verbatim} |
\begin{verbatim} |
379 |
soient A,B,C 3 points quelconques. |
soient A,B,C 3 points quelconques. |
407 |
|
|
408 |
\subsubsection{Bissectrice} |
\subsubsection{Bissectrice} |
409 |
|
|
410 |
La construction d'un bissectrice requiert quant à elle trois points\footnote{qui définiront un angle bien entendu...}:\\ |
La construction d'un bissectrice requiert quant à elle trois points\footnote{qui définiront un angle bien entendu...}: |
411 |
\newline |
|
412 |
\noindent |
\noindent |
413 |
\begin{boxedverbatim} |
\begin{boxedverbatim} |
414 |
soit <id1> la bissectrice de <id_pointA>,<id_pointB>,<id_pointC>. |
soit <id1> la bissectrice de <id_pointA>,<id_pointB>,<id_pointC>. |
441 |
\section{Utilisation du programme} |
\section{Utilisation du programme} |
442 |
|
|
443 |
\noindent |
\noindent |
444 |
GeoCaml s'utilise en ligne de commandes: |
\geocaml s'utilise en ligne de commandes: |
445 |
\begin{verbatim} |
\begin{verbatim} |
446 |
> geocaml [option] <nom_du_fichier_source> |
> geocaml [option] <nom_du_fichier_source> |
447 |
\end{verbatim} |
\end{verbatim} |
457 |
--help display this list of options |
--help display this list of options |
458 |
\end{verbatim} |
\end{verbatim} |
459 |
|
|
460 |
|
\appendix{} |
461 |
|
|
462 |
|
\chapter{Exemples}\thispagestyle{estas} |
463 |
|
|
464 |
|
|
465 |
|
\section{La droite de Simson} |
466 |
|
|
467 |
|
\verbatiminput{../../exemple/simpson.geo} |
468 |
|
|
469 |
|
\section{Le milieu d'un segment} |
470 |
|
|
471 |
|
\verbatiminput{../../exemple/milieu.geo} |
472 |
|
|
473 |
|
|
474 |
|
\section{Projection orthogonale} |
475 |
|
|
476 |
|
|
477 |
|
\verbatiminput{../../exemple/projorth.geo} |
478 |
|
|
479 |
|
\section{Cercle circonscrit} |
480 |
|
|
481 |
|
|
482 |
|
\verbatiminput{../../exemple/circonscrit.geo} |
483 |
|
|
484 |
|
|
485 |
|
\section{Hexagone} |
486 |
|
|
487 |
|
|
488 |
|
\verbatiminput{../../exemple/hexagone.geo} |
489 |
|
|
490 |
|
|
491 |
|
\section{Un exercice} |
492 |
|
|
493 |
|
|
494 |
|
\verbatiminput{../../exemple/exo00.geo} |
495 |
|
|
496 |
|
|
497 |
|
\section{Bissectrice} |
498 |
|
|
499 |
|
\verbatiminput{../../exemple/02bissectrice.geo} |
500 |
|
|
501 |
\end{document} |
\end{document} |