O:=point(0,0);A:=point(1,0);B:=point(0,1);
Ce:=cercle(O,1);
D:=point(3,0);C:=point(-1,0);
l'autoscale refuse de montrer le point D.
autoscale
Modérateur : xcasadmin
Re: autoscale
L'algorithme utilisé pour l'autoscale consiste à créer la liste des abscisses (ou ordonnées) des points (pour les cercles plusieurs points régulièrement répartis sur le cercle sont pris en compte). Puis on calcule le 1er et le 9ème décile de la liste et on fait un léger zoom out par rapport à ces valeurs. Ceci afin d'éviter qu'un point très éloigné mais très isolé ne modifie trop les échelles.
Evidemment ce n'est pas toujours très bien adapté... mais je ne vois pas d'algorithme parfait pour faire ça de toutes façons!
Evidemment ce n'est pas toujours très bien adapté... mais je ne vois pas d'algorithme parfait pour faire ça de toutes façons!
Re: autoscale
Très intéressant et parfaitement compréhensible par les élèves de seconde qui connaissent les notions de quartiles.
A quel endroit du source peut-on trouver les lignes de code qui correspondent à la recherche de ces déciles ?
A quel endroit du source peut-on trouver les lignes de code qui correspondent à la recherche de ces déciles ?
Re: autoscale
C'est dans tex.cc, mais je ne sais pas si c'est tres pedagogique comme code...
La fonction zoom sert a faire un zoomin/out en fonction de la valeur du 3eme parametre:
Code : Tout sélectionner
void autoscaleminmax(vector<double> & v,double & m,double & M){
int s=v.size();
if (s>1){
sort(v.begin(),v.end());
m=v[s/10];
M=v[9*s/10];
if (2*(M-m)>(v[s-1]-v[0])){
M=v[s-1];
m=v[0];
zoom(m,M,1.1);
}
else
zoom(m,M,1/0.8);
}
}
Code : Tout sélectionner
static void zoom(double &m,double & M,double d){
double x_center=(M+m)/2;
double dx=(M-m);
if (dx==0)
dx=1;
dx *= d/2;
m = x_center - dx;
M = x_center + dx;
}
Re: autoscale
Vraiment très intéressant à expliquer aux élèves ! Pour comprendre ce qui se passe quand on clique sur le bouton auto.
1/ écrire en langage Xcas les deux fonctions autoscaleminmax et zoom.
2/ commenter en utilisant le vocabulaire de cette classe: définition des déciles, écart inter-décile, étendue d'une série, milieu et longueur d'un segment.
3/ Illustrer avec seq(point(k,k),k,0,1,0.1);A:=point(2,0);B:=point(-2,0);
1/ écrire en langage Xcas les deux fonctions autoscaleminmax et zoom.
2/ commenter en utilisant le vocabulaire de cette classe: définition des déciles, écart inter-décile, étendue d'une série, milieu et longueur d'un segment.
3/ Illustrer avec seq(point(k,k),k,0,1,0.1);A:=point(2,0);B:=point(-2,0);