http://wiki.noordover.org, un wiki dont l'objectif est modeste : permettre d'écrire facilement, en vrac, à un rythme de sénateur, quelques trucs et astuces divers, pour ne pas les oublier et aider éventuellement d'autres personnes.

Retour au Sommaire de la section du wiki relative Ă  Asymptote

[[ Asymptote : fonction LINE ]]

Cette page n'est pas achevée… mais je pense qu'elle peut déjà aider à comprendre quelques subtilités de la fonction LINE de l'extension geometry de Philippe Ivaldi.

On ne confondra le type LINE avec la fonction LINE.

Fonction LINE : syntaxe n°1

line line(coordsys R=currentcoordsys, real slope, real origin)

définit, dans le système de coordonnées R (le système de coordonnées courant quand il n'est pas précisé), la droite de coefficient directeur slope et d'ordonnée à l'origine origin.

/*---------------------------------------------*/
 
import geometry_dev;
size(4cm);
show(defaultcoordsys);
 
// d est la droite d'équation y=(-1/2)x+(3/2)
line d=line(-1/2,3/2);
draw(d);         
 
// un rectangle invisible
// pour définir la zone affichée
draw(box((-1,-1),(2,2.5)),invisible);
 
/*---------------------------------------------*/


import geometry_dev;
size(4cm);
show(defaultcoordsys);
line d=line(-1/2,3/2);
draw(d);         
draw(box((-1,-1),(2,2.5)),invisible);

Fonction LINE : syntaxe n°2

line line(coordsys R=currentcoordsys, real a, real b, real c)

définit, dans le système de coordonnées R (le système de coordonnées courant quand il n'est pas précisé), la droite d'équation $ax+by+c=0$.

/*---------------------------------------------*/
 
import geometry_dev;
size(4cm);
show(defaultcoordsys);
 
// d est la droite d'équation 2x+y-2=0
line d=line(2,1,-2);
draw(d);         
 
// un rectangle invisible
// pour définir la zone affichée
draw(box((-1,-1),(2,2.5)),invisible);
 
/*---------------------------------------------*/


import geometry_dev;
size(4cm);
show(defaultcoordsys);
line d=line(2,1,-2);
draw(d);         
draw(box((-1,-1),(2,2.5)),invisible);

Fonction LINE : syntaxe n°3

line line(explicit side c)

définit la droite qui porte le côté c d'un triangle.

/*---------------------------------------------*/
 
import geometry_dev;
size(4cm,0);
pair E=(0,0),F=(4,1),G=(1,2);
triangle t=triangle(E,F,G);
draw(t);
label("$E$","$F$","$G$",t,alignAngle=70,.5blue);
// l1 : droite portant le "premier" côté de t
line l1=line(t.AB);
draw(l1);
addMargins(1cm,0cm);
 
/*---------------------------------------------*/


import geometry_dev;
size(4cm,0);
pair E=(0,0),F=(4,1),G=(1,2);
triangle t=triangle(E,F,G);
draw(t);label("$E$","$F$","$G$",t,alignAngle=70,.5blue);
line l1=line(t.AB);
draw(l1);
addMargins(1cm,0cm);

A noter que, même si le code suivant est valide pour tracer la droite $(EF)$ (alors que t.AB désigne le côté $[EF]$) :

draw(t.AB);

on préférera, pour plus de lisibilité, le code suivant :

draw(line(t.AB));

En effet, mĂŞme si t.AB est du type side, il est converti automatiquement en type line par draw.

Fonction LINE : syntaxe n°4

line line(point A, bool extendA=true, point B, bool extendB=true)

définit la ligne (droite, demi-droite ou segment) relative aux points A et B. Si extendA est true, la ligne n'est pas limitée du côté de A ; Si extendB est true, la ligne n'est pas limitée du côté de B ; Avec extendA=false et extendB=false, la ligne définie est le segment [AB].

/*---------------------------------------------*/
 
import geometry_dev;
size(4cm);
show(defaultcoordsys);
 
point A=(2,2),B=(-1,1);
dot(A); dot(B);
 
// d est la demi-droite [BA)
line d=line(A,true,B,false);
draw(d);         
 
// un rectangle invisible
// pour définir la zone affichée
draw(box((-2,-1),(3,2.5)),invisible);
 
/*---------------------------------------------*/


import geometry_dev;
size(4cm);
show(defaultcoordsys);
point A=(2,2),B=(-1,1);
dot(A); dot(B);
line d=line(A,true,B,false);
draw(d);         
draw(box((-2,-1),(3,2.5)),invisible);

Fonction LINE : syntaxe n°5

line line(real a, point A=point(currentcoordsys,(0,0)))

définit la ligne passant par A avec un angle de mesure a en degrés par rapport à l'axe des abscisses dans le système de coordonnées de A.

/*---------------------------------------------*/
 
import geometry_dev;
size(4cm);
show(defaultcoordsys);
 
point A=(2,1); dot(A);
 
// d est la droite passant par A 
// inclinée de -15° par rapport à (Ox)
line d=line(-15,A);
draw(d);         
 
// un rectangle invisible
// pour définir la zone affichée
draw(box((-2,-1),(3,2.5)),invisible);
 
/*---------------------------------------------*/


import geometry_dev;
size(4cm);
show(defaultcoordsys);
point A=(2,1); dot(A);
line d=line(-15,A);
draw(d);         
draw(box((-2,-1),(3,2.5)),invisible);

Fonction LINE : syntaxe n°6

line line(segment s)

définit la droite qui porte le segment s, donc la droite qui passe par les points s.A et s.B.

/*---------------------------------------------*/
 
import geometry_dev;
size(4cm);
show(defaultcoordsys);
 
point A=(2,2),B=(-1,1);
dot(A); dot(B);
segment AB=segment(A,B);
 
// d est la droite qui porte le segment [AB]
line d=line(AB);
draw(d);         
 
// un rectangle invisible
// pour définir la zone affichée
draw(box((-2,-1),(3,2.5)),invisible);
 
/*---------------------------------------------*/


import geometry_dev;
size(4cm);
show(defaultcoordsys);
point A=(2,2),B=(-1,1);
dot(A); dot(B);
segment AB=segment(A,B);
line d=line(AB);
draw(d);         
draw(box((-2,-1),(3,2.5)),invisible);

Outils personnels