login.php?sid=12074f39cbb3809643e94a4584938886 profile.php?mode=register&sid=12074f39cbb3809643e94a4584938886 faq.php?sid=12074f39cbb3809643e94a4584938886 memberlist.php?sid=12074f39cbb3809643e94a4584938886 search.php?sid=12074f39cbb3809643e94a4584938886 index.php?sid=12074f39cbb3809643e94a4584938886

Traces d'objets - Gestion sous Javascript

 
Post new topic   Reply to topic     Forum Index -> Utilisation de CaRMetal
View previous topic :: View next topic  
Author Message
felfra



Joined: 07 Feb 2012
Posts: 4
Location: Marseille

PostPosted: Tue Feb 07, 2012 4:45 pm    Post subject: Traces d'objets - Gestion sous Javascript Reply with quote

Bonjour,

Je découvre depuis quelques jours CaRMetal, Qui me semble être un excellent logiciel de géométrie dynamique. Différents outils permettent d'animer les figures, dont, j'en viens à l'objet de ce post, les traces d'objets.

Cependant, si dans un script (JS) il est possible de cacher ou supprimer un objet, je n'ai pas trouvé la méthode pour en effacer la trace, ce qui est possible par le menu Edition. Est-ce qu'une telle commande javascript existe ?

je voudrais aussi savoir si, toujours dans javascript, il est possible de passer à CarMetal des raccourcis clavier, ce qui pourrait être une solution à mon problème... et à d'autres Smile .

D'avance merci pour vos réponses.

felfra
Back to top
View user's profile Send private message
mohjer



Joined: 10 Jun 2009
Posts: 58
Location: Tunis

PostPosted: Wed Feb 08, 2012 11:03 am    Post subject: Reply with quote

Bonjour,

Quote:
si dans un script (JS) il est possible de cacher ou supprimer un objet, je n'ai pas trouvé la méthode pour en effacer la trace, ce qui est possible par le menu Edition. Est-ce qu'une telle commande javascript existe ?


Bien sur il existe une commande javascript qui est " PenDown" suivi du nom de l'objet et de false (un booléen) si on veut que l'objet cesse de laisser une trace.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
felfra



Joined: 07 Feb 2012
Posts: 4
Location: Marseille

PostPosted: Wed Feb 08, 2012 3:03 pm    Post subject: Reply with quote

Merci, mohjer, pour votre réponse.

Cependant, PenDown(Obj, "false") désactive la trace d'un objet, qui cesse donc d'en laisser une. Comme le fait la commande de menu "Edition/Désactiver les traces".

Mais mon problème concerne l'effacement des traces existantes, comme le fait la commande "Edition/Effacer les traces" (raccourci clavier ctrl-T). Ce n'est pas la même chose...

Cordialement,

felfra
Back to top
View user's profile Send private message
monique31



Joined: 03 Nov 2007
Posts: 306
Location: Toulouse

PostPosted: Thu Feb 09, 2012 9:31 am    Post subject: Re: Traces d'objets - Gestion sous Javascript Reply with quote

felfra wrote:
je n'ai pas trouvé la méthode pour en effacer la trace, ce qui est possible par le menu Edition. Est-ce qu'une telle commande javascript existe ?

Non, il n'existe pas de telle commande. Mais une trace disparait quand on effectue un zoom ou une translation de la figure ... même pendant l'exécution d'un script.
felfra wrote:
je voudrais aussi savoir si, toujours dans javascript, il est possible de passer à CarMetal des raccourcis clavier, ce qui pourrait être une solution à mon problème... et à d'autres Smile .

Non, pas de raccourcis clavier dans javascript.
Back to top
View user's profile Send private message Send e-mail
felfra



Joined: 07 Feb 2012
Posts: 4
Location: Marseille

PostPosted: Fri Feb 10, 2012 8:59 am    Post subject: Reply with quote

Merci Monique,

J'ai tout de même trouvé une une solution à mon problème. Je cherchais en fait, pour bien montrer la construction de figures un peu compliquées, à mettre en évidence la construction des différents éléments. Non seulement leur succession, avec temporisation, mais aussi l'apparition progressive de chacun d'eux.

Par exemple, pour un cercle, au lieu d'utiliser la fonction "circle", je programme l'affichage du centre, puis d'un point du (futur) cercle, et déplace celui sur toute la (future) circonférence, la trace dessinant le cercle complet, en quelques secondes, et enfin j'appelle la fonction "circle" pour créer l'objet cercle dont j'aurai ultérieurement besoin. Mais ensuite, impossible, donc, de supprimer la trace dans le script. Et je ne peux pas la conserver, car les attributs (couleur, épaisseur) de la trace (du point) et du cercle ne doivent pas toujours être identiques.

Finalement, en compliquant un peu la programmation, je n'utilise plus la trace, mais la remplace par un arc défini par le point de départ sur la circonférence, le point que je déplace sur la circonférence, et un troisième point à mi-chemin des deux autres. A chaque déplacement du point, l'arc "suit" dynamiquement.

Evidemment, comme l'opération doit se répéter plusieurs fois dans le script, il vaut mieux créer une fonction à cet effet.

Bonne journée Smile
Back to top
View user's profile Send private message
alain974



Joined: 13 Jun 2009
Posts: 150
Location: Réunion

PostPosted: Sat Feb 25, 2012 6:13 am    Post subject: Reply with quote

Bonjour, pour effacer les traces sur le graphique on peut zoomer un petit coup, ce qui réinitialise l'affichage de la figure (en enlevant les traces). Pour faire la même chose en JavaScript, on peut réinitialiser la figure en JavaScript, avec l'algorithme suivant:

1) On récupère la figure à initialiser, et on la stocke dans une variable ZC (comme Zirkel Canvas);
2) On lui demande poliment de se réinitialiser, ce qu'elle fait avec diligence parce qu'elle a une méthode qui fait ça (et qui est appelée par le zoom).

Ça donne ceci:

Code:
ZC=getZC();
ZC.resetGraphics();


Du coup, ce post aurait dû figurer dans la rubrique "CaRScripts" qui a soif de ce genre de questions...
Back to top
View user's profile Send private message
mohjer



Joined: 10 Jun 2009
Posts: 58
Location: Tunis

PostPosted: Sat Feb 25, 2012 8:39 am    Post subject: Reply with quote

Bonjour Alain,

Super le code pour effacer la trace! Merci Alain; j'étais presque sur qu'il y avait un truc pour effacer contrairement à ce que disait Monique "Non, il n'existe pas de telle commande."
je cherchai depuis deux semaines en vain, finalement on est sauvé;
je l'ai essayé et ça marche;
voici le script auquel j'ai ajouté le petit bout de code fourni :

h=Point("A",3,-2);
h=Point("B",3,1);
for(i=0;i<10;i++){
x=-2+Math.random();
y=-1+Math.random();
Move("A",x,y);
PenDown("A",true);
x=2+Math.random();
y=1+Math.random();
Move("B",x,y);
PenDown("B",true);
Pause(500);
}
ZC=getZC();
ZC.resetGraphics();




Encore merci Alain
Back to top
View user's profile Send private message Send e-mail Visit poster's website
felfra



Joined: 07 Feb 2012
Posts: 4
Location: Marseille

PostPosted: Sat Feb 25, 2012 4:48 pm    Post subject: Reply with quote

Désolé, Alain, je n'ai pas vu arriver votre réponse, je vous en remercie. Et merci Mohjer, pour le complément.

Effectivement, votre solution est simple et efficace. Je la note soigneusement, car elle m'aurait économisé quelques jours d'efforts, passé à créer des fonctions, pour tracer progressivement des cercles ou arcs, simulant des traces, que je pouvais ensuite effacer.
Maintenant, grâce à vous, j'ai bien plus simple Smile .

Encore merci

felfra
Back to top
View user's profile Send private message
alain974



Joined: 13 Jun 2009
Posts: 150
Location: Réunion

PostPosted: Sun Feb 26, 2012 7:07 am    Post subject: Reply with quote

mohjer wrote:
voici le script auquel j'ai ajouté le petit bout de code fourni :


En fait, PenDown imite le comportement de la tortue LOGO, qui a un stylo dans la bouche, et PenDown baisse le stylo pour que les tracés soient visibles. Il n'est donc pas nécessaire de modifier 10 fois cette variable. Je propose la modification suivante:

Code:
h=Point("A",3,-2);
h=Point("B",3,1);
PenDown("A",true);
PenDown("B",true);
for(i=0;i<10;i++){
    x=-2+Math.random();
    y=-1+Math.random();
    Move("A",x,y);
    x=2+Math.random();
    y=1+Math.random();
    Move("B",x,y);
    Pause(500);
}
PenDown("A,B",false);
ZC=getZC();
ZC.resetGraphics();


Pour l'instant le seul moyen de savoir tout ce qu'on peut faire avec ces geekeries est de consulter le code source de CaRMetal. Jusqu'à ce que quelqu'un ait le temps de faire un document à l'usage des développeurs...
Back to top
View user's profile Send private message
mohjer



Joined: 10 Jun 2009
Posts: 58
Location: Tunis

PostPosted: Sun Feb 26, 2012 2:27 pm    Post subject: Reply with quote

Bonjour,

Pour le dernier script d'Alain, deux guillemets manquantes,une petite correction pour éviter une perte de temps:
PenDown("A","B",false); à la place de PenDown("A,B",false);
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Utilisation de CaRMetal All times are GMT
Page 1 of 1

 
  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin