\documentclass[10pt]{article} % Use this form to include eps (latex) or pdf (pdflatex) files: \usepackage{asymptote} \usepackage[latin1]{inputenc} \usepackage[francais]{babel} \usepackage[T1]{fontenc} \usepackage{eurosym} \usepackage{pstricks} \usepackage{graphicx} \usepackage{multicol} \usepackage{frcursive} \usepackage{lmodern} \usepackage{fichexo} %package personnel \usepackage{amsfonts,amssymb,amsmath,amsthm} \usepackage{mathrsfs} \usepackage{fancyhdr} \usepackage{lastpage} \usepackage{anysize} \usepackage{calc} \usepackage{stmaryrd} \usepackage{picins} \usepackage{geometry} \geometry% {% margin=1cm,% %landscape=true,% }% \usepackage{lscape} \usepackage{lscape} \newcommand{\asym}{ \texttt{Asymptote} } \newcommand{\com}{$\blacktriangleright$} \newcommand{\comm}[1]{$\blacktriangleright$ \texttt{#1} } % Use this form with latex or pdflatex to include inline LaTeX code: %\usepackage[inline]{asymptote} % Enable this line to produce pdf hyperlinks with latex: %\usepackage[hypertex]{hyperref} % Enable this line to produce pdf hyperlinks with pdflatex: %\usepackage[pdftex]{hyperref} \author{} \date{} \begin{document} \begin{landscape} \pagestyle{empty} \setlength{\columnsep}{6mm} \setlength{\columnseprule}{0.4pt} \begin{multicols}{3} \begin{center} \begin{large}Macros de géométrie plane avec \asym \end{large} \end{center} \begin{asydef} // Global Asymptote définitions can be put here. usepackage("bm"); defaultpen(fontsize(10)); \end{asydef} \def\A{A} \def\B{\bm{B}} \section{Préambule.} \subsection{Les dimensions.} \texttt{figure(pair basgauche,pair hautdroit)} permet de fixer le cadre. Il n'est, par défaut, pas tracé. La constante \texttt{croix} définit la taille des points tracés à l'écran, les dimensions de la croix en fait. la constante \texttt{mainlevee} de type \texttt{bool} à la valeur \texttt{true} permet d'avoir un dessin <<à main levée>>. \section{Les points} \subsection{Tracé} $\blacktriangleright$ \texttt{pointe(pair A,pen p=currentpen)} trace une croix en A sans nommer le point. $\blacktriangleright$ \texttt{nomme(Label L, pair position,pen p=currentpen)} trace le point sur le pair <<position>> et place le texte contenu dans le <<label>> L. \subsection{Construction} $\blacktriangleright$ \texttt{pointdistant(pair A,real distance, real angle)} crée un <<pair>> situé à une certaine distance de A, (AB) faisant un angle donné avec l'horizontale. $\blacktriangleright$ \texttt{compas(pair A,pair B, real a, real b)} crée un <<pair>> situé à distances données de A et B. $\blacktriangleright$ \texttt{point\_angle\_dist(pair O,pair A, real a, real d)} place le point situé à d cm de O et faisant un angle d avec (OA). $\blacktriangleright$ \texttt{milieu(pair A, pair B)},bon là, ça va aller. $\blacktriangleright$ \texttt{pointsur(path chemin, real r)} renvoie un <<pair>> situé sur la chemin en fonction de $r\in[0..1]$: 0 correspond à l'origine et 1 à l'extrémité. \subsection{Points particuliers} $\blacktriangleright$ \texttt{orthocentre(pair C, pair A, pair B)} renvoie l'orthocentre du triangle ABC. $\blacktriangleright$ \texttt{circonscrit(pair C, pair A, pair B)} renvoie le centre du cercle circonscrit à ABC. \comm{inscrit{pair A, pair B, pair C}} renvoie le centre du cercle inscrit dans ABC. $\blacktriangleright$ \texttt{projortho(pair M, pair A,pair B)} renvoie le projeté orthogonal de M sur (AB). \section{Mesure et codage} \subsection{Cotation} $\blacktriangleright$ \texttt{cotemilieu(pair A,pair B, string texte, real d,pen sty=black)} trace une flèche de A à B à d mm au dessus de (AB), le texte est au milieu. $\blacktriangleright$ \texttt{cote(pair A,pair B, string texte, real d,pen sty=black)} trace une flèche de A à B à d mm au dessus de (AB), le texte est au dessus. $\blacktriangleright$ \texttt{etiquette(pair A, pair B, string txt,bool dessus=true,pen sty=currentpen)} place le texte txt le long de [AB]. $\blacktriangleright$ \texttt{hachurage(path p,real espace, real angle, pen pen=currentpen)} remplit avec des hachures espacées de "espace" mm, avec un angle de "angle" \degre le chemin fermé p. \subsection{Codage des longeurs et des angles} $\blacktriangleright$ \texttt{code(int trait,pair[] K)}code une série de segments dont les extrémités sont contenues dans une matrice de type <<pair[]>>. Le paramètre "trait" précise le codage : \begin{description} \item[Si "trait" vaut 1, 2 ou 3] le segment est codé par des traits ... \item[Si "trait" vaut 4] le segment est codé par un tilde. \item[Si "trait" vaut 5] le segment est codé par un cercle. \end{description} $\blacktriangleright$ \texttt{codemilieu(pair A, pair B, int trait)} est similaire à \verb+code+ mais plus simple syntaxiquement. $\blacktriangleright$ \texttt{codeangle(pair A,pair B, pair C, int trait,int nbarc=1)} marque l'angle $\ang{ABC}$ par des traits et un ou plusieurs arcs de cercle. $\blacktriangleright$ \texttt{angledroit(pair A,pair C,pair B,real taille=3mm, pen p=black)} code l'angle droit $\ang{ACB}$. \section{Quadrillages} $\blacktriangleright$ \texttt{ millimetre(pen sty=orange)} trace du papier millimétré dans les limites du \texttt{cadre}. La couleur par defaut est "orange". $\blacktriangleright$ \texttt{carreau(real cote=0.5, pen sty=orange)} trace un quadrillage \mbox{5 mm $\times$ 5mm} par défaut. $\blacktriangleright$ \texttt{seyes()} trace un morceau de cahier d'écolier. \section{triangle et quadrilatères} Pour les triangles, la longueur $a$ est située en face du point $A$, $b$ et $c$ sont placés ensuite dans le sens trigonométrique. L'angle $\ang{alpha}$ est l'angle en $A$, $\ang{beta}$ en $B$. \com \texttt{triangle3c(pair A, real a, real b, real c, bool dessus=true,real angle=0)} renvoie un path, le triangle dont les côtés sont a b et c en cm. \com \texttt{triangle1c(pair A, real c, real alpha, real beta,bool dessus=true,real angle=0)} renvoie un path, le triangle de côté c en cm.et d'angles adjacents alpha et beta \com \texttt{triangle2c(pair A, real c, real b, real alpha, bool dessus=true,real angle=0)} renvoie un path, le triangle de côtés adjacents c et b en cm.et formant un angle alpha. \com \texttt{rectangle(pair A, real a, real b,bool diagonale=false,real angle=0)} renvoie un path, le rectangle de côtés adjacents a et b en cm. Si diagonale=true, b est la diagonale. \com \texttt{parallelogramme(pair A, real a, real b,real alpha, bool diagonale=false,real angle=0)} renvoie un path, le parallelogramme de côtés adjacents a et b en cm formant un angle alpha. Si diagonale vaut true, alpha est la diagonale en cm. \section{Droites et segments} $\blacktriangleright$ La commande \texttt{segment(pair A, pair B,real a=0) }renvoie le chemin [AB] et permet de faire dépasser le trait de $a$ cm de part et d'autre des extrémités. $\blacktriangleright$ \texttt{ droite(pair A, pair B)} définit un <<path>> passant par A et B mais contenu dans le \verb+cadre+, le résultat est plus élégant -- à mon sens -- que \verb+drawline+. $\blacktriangleright$ La fonction \texttt{perpendiculaire(pair A, pair B, pair M) } (\emph{resp.} \verb+parallele+) retourne la droite perpendicualire (\emph{resp.} parallèle) à (AB) et passant par M. On dispose aussi des fonctions suivantes qui renvoient toutes des droites : $\blacktriangleright$ \verb+hauteur(pair C, pair A, pair B)+: la hauteur issue de C de ABC. $\blacktriangleright$ \verb+mediatrice(pair A, pair B)+: la médiatrice de [AB] $\blacktriangleright$ \verb+bissectrice(pair A, pair B, pair C)+:la bissectrice de l'angle ABC. \section{Les cercles} $\blacktriangleright$ \verb+arc(pair B, pair A, real s, real t)+ renvoie un chemin qui est l'arc de centre B, passant par A et avec un angle autour de A, le 0 étant sur A. $\blacktriangleright$ \verb+cercle(pair O, pair A)+ renvoie le cercle de centre O et de rayon A. $\blacktriangleright$ \verb+cercleR(pair O, real R)+ définit le cercle de centre O et de rayon R. $\blacktriangleright$ \verb+cercleD(pair A, pair B)+ donne le cercle de diamètre [AB]. \section{Repérage} \subsection{Axes gradués} \comm{void inequation(string txt="", real valeur, real crochet, real zone,pen pen=currentpen)} trace l'axe gradué, hachuré à partir de \texttt{valeur} dans la direction définie par \texttt{zone}: \begin{description} \item[si \texttt{zone} = $-1$]; la partie vers les abscisses négatifs est hachurée. \item[si \texttt{zone} = $1$]; la partie vers les abscisses positifs est hachurée. \end{description} \texttt{crochet} fonctionne de la même façon. \comm{void graduation(pair origine, pair unite, real debut, real fin, string originetxt="$O$", string unitetxt="1", real intermediaire=0,pen sty=currentpen)} trace un axe gradué, les valeurs \texttt{début} et \texttt{fin} sont exprimés en fonction du vecteur unité, \texttt{intermediaire} est une fraction du vecteur unité. \comm{void abscisse(string txtdessous, string txtdessus="",pair origine, pair unite,real x,bool croix=false,pen sty=currentpen)} trace un point qui correspond à une abscisse particulière sur un axe \subsection{Repères} Le type \texttt{repere} contient les informations nécéssaires à un repère du plan : \begin{verbatim} struct repere { pair origine ; pair abscisse; pair ordonnee; string originetxt ; string abscissetxt; string ordonneetxt; } \end{verbatim} \begin{description} \item[\texttt{origine}] contient les coordonnées de l'origine. \item[\texttt{abscisse}] contient les coordonnées du vecteur de l'axe des abscisses. \item[\texttt{ordonnee}] contient les coordonnées du vecteur de l'axe des ordonnées. \item[\texttt{originetxt }] contient le nom de l'origine. \item[\texttt{abscissetxt}] contient le nom de du vecteur de l'axe des abscisses. \item[\texttt{ordonneetxt}] contient le nom de du vecteur de l'axe des ordonnées. \end{description} Le repère par défaut est définit par \verb+reperecourant+, une constante de type \texttt{repere}. C'est, sauf définition de l'utilisateur, le repère << canonique >> de \mbox{\asym.} \begin{verbatim} repere canonique; canonique.origine=(0,0); canonique.abscisse=(1,0); canonique.ordonnee=(0,1); canonique.originetxt="$O$"; canonique.abscissetxt="$\vec{i}$"; canonique.ordonneetxt="$\vec{j}$"; \end{verbatim} \comm{axes(repere rep,int graduation=1,pen sty=currentpen)} trace les axes si graduation=1, gradué toutes les unités, 2 toutes les demi-unités, 3 tous les dixièmes. \comm{base(repere rep,bool vecteur=true,pen sty=currentpen)} trace une base avec les vecteurs. Si \texttt{vecteur} est \texttt{true}, le nom des vecteurs apparaissent. \subsection{Les points} \comm{pair place(string nom,real x, real y,pair direction, repere rep=reperecourant, bool trait=false, pen sty=currentpen)} renvoie et place un pair avec les coordonnées (x;y) dans le repère rep mais dont les coordonnées pour \asym peuvent être différentes. \comm{pair position(real x, real y,repere rep=reperecourant)} renvoie un pair avec les coordonnées (x;y) dans le repère rep mais dont les coordonnées pour \asym peuvent être différentes. \section{Les courbes et fonctions} \subsection{Courbes} \comm{tracepara (real f(real),real g(real),real a, real b,repere rep=reperecourant,int precision=500 ,pen sty=currentpen+linewidth(0.5)) } trace des courbes paramètrées. \comm{tracepolaire (real r(real),real a, real b,repere rep=reperecourant,int precision=500 ,pen sty=currentpen+linewidth(0.5))} trace des courbes polaires. \subsection{Fonctions} \comm{tracefonction (real f(real),real a, real b,repere rep=reperecourant,int precision=500 ,pen sty=currentpen+linewidth(0.5))} trace des fonctions. \comm{path tangente(real a, real f(real), real h=0.01, repere rep=reperecourant)} trace la tangente en a à f. \comm{path morceau (real f(real),real a, real b,repere rep=reperecourant,int precision=500)} renvoie un morceau de courbe si tout le tracé est contenu dans le cadre. Cette fonction est pratique pour hachurer des zones ou calculer des intersections de courbes. %\vfill \end{multicols} \end{landscape} \end{document}