First Geogebra Java script

Discutez d'informatique ici !
Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 554
Enregistré le: 13 Mai 2009, 10:28

First Geogebra Java script

par ortollj » 22 Fév 2014, 11:33

Bonjour
j'ai l'impression que j'ai fini par fatiguer tout le monde avec mes questions de debutant Java script sur le
Geogebra Forum
voir la page 2 le fichier Geogebra 3D y est attaché :help:
en gros ce que je voudrai faire
c'est ca j'ai N vecteurs en 3D (j'utilise Geogebra 3D)
Geogebra 3D



quand j'essaie le code ci dessous mis dans l'objet OK button
Code: Tout sélectionner
g.evalCommand("r=(0,0,0)");
for(var i =0;i<NbStep+1;i++)
{
g.evalCommand("r=r+u_{"+i+"}");
}

j'obtiens l'erreur definition circulaire.
ma question:
dans Geogebra, en Java Script ou en Geogebra script, comment faire pour additionner dans une boucle N vecteurs ?
si j'avais su j'aurais pas venu.



Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 554
Enregistré le: 13 Mai 2009, 10:28

par ortollj » 22 Fév 2014, 12:53

Bon j'ai essayé ca aussi sans succes :hum:

Code: Tout sélectionner
var g=ggbApplet;
function c_1()
 {
  var NbStep=10
  var a=0.15;b=0.1 ; var step=Math.PI/NbStep;
  var x=-a; var y=0;var z=0;
  var X;var Y; var Z;
  g.evalCommand("f(x)=sqrt("+a+"^2-x^2)");
  g.evalCommand("P=(0,0,"+b+")");
  for(var i =0;i<NbStep+1;i++)
    {
       x=a*Math.round(100*Math.cos(Math.PI - (step*(i))))/100;
       y=Math.sqrt(Math.pow(a,2) - Math.pow(x,2))
       g.evalCommand("A_{"+i+"}=("+x+","+y+",0)");
       g.evalCommand("v_{"+i+"}=P-("+x+","+y+",0)");
            /* for unit vectors */
       g.evalCommand("l_{"+i+"}=Length[v_{"+i+"}]");
       g.evalCommand("u_{"+i+"}=v_{"+i+"}/l_{"+i+"}");
    }
  g.evalCommand("R_0=(0,0,0)");
  for(var i =0;i<NbStep+1;i++)
    {
       /*g.evalCommand("Delete(v_{"+i+"})");*/
       /*g.evalCommand("setVisible(v_{"+i+"},false)");*/
       g.evalCommand(" "+X+"=x(u_{"+i+"}) + "+X+" ");
       g.evalCommand(" "+Y+"=y(u_{"+i+"}) + "+Y+" ");
       g.evalCommand(" "+Z+"=z(u_{"+i+"}) + "+Z+" ");
    }
/*g.evalCommand("R_1=("+X+","+Y+","+Z+")");*/
 }
c_1();
si j'avais su j'aurais pas venu.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 14:00

par fatal_error » 22 Fév 2014, 13:46

hello,

1) c'est pas Java script mais javascript
2) peux-tu indenter ton code? c'est illisible
3) utilises plutot ' au lieu de " (parce que ca pollue moins l'écran)
4) additionner deux vectors en js (acronyme pour javacript) est assez immédiat.
Avec deux arrays u et v de même taille, il vient
Code: Tout sélectionner
var result=addVector(u,b);
function addVector(u,v){
  var res=[]
  for(var i=0;i<u.length;++i){
    res[i]=u[i]+v[i];
  }
  return res;
}


edit: sous reserve que u et v sont des vecteurs de scalaires.
S'ils sont des points, il faut légèrement modifier ci dessus
la vie est une fête :)

Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 554
Enregistré le: 13 Mai 2009, 10:28

par ortollj » 22 Fév 2014, 16:12

ca y est j'ai fini par trouver :zen:
bon finalement j'ai privilegié les variables Geogebra plutôt que JavaScript pour X,Y,Z
parce que je ne sais pas recuperer une variable Geogebra vers JavaScript
je ne sais que recuperer une variable JavaScript vers Geogebra :bad:
j'ai posté le fichier Geogebra 3D sur le forum Geogebra
Code: Tout sélectionner
var g=ggbApplet;
function c_1()
 {
   var NbStep=10
   var a=0.15;b=0.1 ; var step=Math.PI/NbStep;
   var x=-a; var y=0;var z=0;
   /* var X;var Y; var Z; */
   g.evalCommand("X=0");
   g.evalCommand("Y=0");
   g.evalCommand("Z=0");
   g.evalCommand("f(x)=sqrt("+a+"^2-x^2)");
   g.evalCommand("P=(0,0,"+b+")");
   for(var i =0;i<NbStep+1;i++)
     {
       x=a*Math.round(100*Math.cos(Math.PI - (step*(i))))/100;
       y=Math.sqrt(Math.pow(a,2) - Math.pow(x,2))
       g.evalCommand("A_{"+i+"}=("+x+","+y+",0)");
       g.evalCommand("v_{"+i+"}=P-("+x+","+y+",0)");
        /* for unit vectors */
       g.evalCommand("l_{"+i+"}=Length[v_{"+i+"}]");
       g.evalCommand("u_{"+i+"}=v_{"+i+"}/l_{"+i+"}");
      }
   g.evalCommand("R_0=(0,0,0)");
   for(var i =0;i<NbStep+1;i++)
     {
       /*g.evalCommand("Delete(v_{"+i+"})");*/
       /*g.evalCommand("setVisible(v_{"+i+"},false)");*/
       g.evalCommand(" X = x(u_{"+i+"}) + X ");
       g.evalCommand(" Y = y(u_{"+i+"}) + Y ");
       g.evalCommand(" Z = z(u_{"+i+"}) + Z ");
      }
   g.evalCommand("R_1=(X,Y,Z)");
   /*g.evalCommand("v_r=Vector[(0,0,0),(X,Y,Z)]");*/
   g.evalCommand("v_r=(X,Y,Z) - R_0");
 }
c_1();
si j'avais su j'aurais pas venu.

Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 554
Enregistré le: 13 Mai 2009, 10:28

par ortollj » 22 Fév 2014, 18:06

fatal_error a écrit:hello,

1) c'est pas Java script mais javascript
2) peux-tu indenter ton code? c'est illisible
3) utilises plutot ' au lieu de " (parce que ca pollue moins l'écran)
4) additionner deux vectors en js (acronyme pour javacript) est assez immédiat.
Avec deux arrays u et v de même taille, il vient
Code: Tout sélectionner
var result=addVector(u,b);
function addVector(u,v){
  var res=[]
  for(var i=0;i<u.length;++i){
    res[i]=u[i]+v[i];
  }
  return res;
}


edit: sous reserve que u et v sont des vecteurs de scalaires.
S'ils sont des points, il faut légèrement modifier ci dessus


merci fatal_error , j'ai posé une nouvelle question dans le thread cité plus haut de Geogebra forum.
quand j'aurais la reponse je pourrai utiliser ce que tu as ecrit.
si j'avais su j'aurais pas venu.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite