login.php?sid=687edfa6fe71540e8b717f79715bf6d2 profile.php?mode=register&sid=687edfa6fe71540e8b717f79715bf6d2 faq.php?sid=687edfa6fe71540e8b717f79715bf6d2 memberlist.php?sid=687edfa6fe71540e8b717f79715bf6d2 search.php?sid=687edfa6fe71540e8b717f79715bf6d2 index.php?sid=687edfa6fe71540e8b717f79715bf6d2

CaRScript orienté objet pour des patrons de cube

 
Post new topic   Reply to topic     Forum Index -> Les CaRScripts
View previous topic :: View next topic  
Author Message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Thu Jul 01, 2010 9:32 pm    Post subject: CaRScript orienté objet pour des patrons de cube Reply with quote

Il est un peu frustrant, lorsque l'on passe de CaRMetal à CaRScript, de passer de la manipulation agréable des objets géométriques à de bêtes lignes de code.
Aussi, quand j'ai découvert que JavaScript, et donc CaRScript, était un langage orienté objets, je me suis proposé de réécrire le script Patron de cube en utilisant non plus des tableaux mais des objets. Le code en devient, à mon sens, plus agréable à lire et à taper.

Comme d'habitude le script se trouve dans le fichier CaRMetal qu'il suffit de télécharger.


Last edited by jerome on Thu Jul 01, 2010 10:12 pm; edited 1 time in total
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Thu Jul 01, 2010 9:47 pm    Post subject: Reply with quote

Quelques explications pour passer d'une face à une autre.

Au début la face du bas, et elle seule, est muni d'un "repère". En fait 6 points qui vont permettre de construire les 6 points de la face de gauche, en faisant l'hypothèse que l'utilisateur a cliqué sur l'arête A4.

Pour la face du bas, le repère est la liste (S4, S1, S2, S3, O, P1).
Pour la face de gauche, à construire, ce sera (S1, S4, P2, P5, P3, P4).

Sans entrer dans les détails techniques, P2 a pour coordonnées(cos(ang) ; sin(ang)) dans le repère 2D (S4, vecteur(S3S4), vecteur(OP1)).
Et P4 (sin(ang) ; cos(ang)) dans le repère 2D(P3, S4S3, OP1).
Les autres points ne posent pas de problème.

Remarquer au passage la couleur des quatre arêtes de la face de gauche du cube. A4 est passé de vert à noir car l'utilisateur ne peut plus la choisir. Alors que les trois autres arêtes sont dessinées en vert car on peut désormais continuer le patron à partir de la face de gauche nouvellement créée.


Last edited by jerome on Thu Jul 01, 2010 10:15 pm; edited 1 time in total
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Thu Jul 01, 2010 9:55 pm    Post subject: Reply with quote

Ci-dessous, le patron final, où chaque face est muni d'un repère 3D à 6 points.
En théorie 4 suffiraient.
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Thu Jul 01, 2010 10:10 pm    Post subject: Reply with quote

Pour la programmation objet, j'avais déjà touché auparavant à l'Objective-C (merci la pomme) mais j'ai découvert récemment qu'un CaRScript pouvait être orienté objet grâce à cette page.
Mais ce qui m'a le plus aidé est cette page-ci.

Si d'autres veulent se lancer…
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Fri Jul 02, 2010 6:35 am    Post subject: Reply with quote

Avec ce script, Jérôme inaugure une nouvelle dimension pour la programmation en géométrie dynamique.

Et cela fait vraiment réfléchir le "vieux routard" de la GD que je suis. Est-on entrain de passer de la géométrie dynamique à quelque chose qui relèverait plus de la programmation dynamique ? La programmation objet de JS avec sortie dynamique dans CarMetal serait-elle une opportunité dans certains cours d'info pour des projets dynamiques innovants ? au moins des TP ?

En effet, les CarScripts "de base" apportaient l'aspect "programmation" (au sens des programmes de lycée) aux figures, c'était l'objectif de Eric. Avec les objets, Jérôme nous montre la voie vers des perspectives tout à fait nouvelles : celles de la maîtrise de structures dynamiques en manipulation directe. On le voit sur les patrons mais on pourrait l'utiliser dans des domaines plus ou moins éloignés de la géométrie aussi (en restant limités à mes centres d'intérêts immédiats, je pense à la représentation graphique dynamique des structures affines ou projectives sur des corps finis, ceci n'étant qu'un exemple très restreint).

A priori (pour un temps au moins) cela reste réservé aux vrais amateurs de code objet, mais Jérome a pris le temps de largement documenter son script (+ ses posts d'explication) pour que l'on comprenne la démarche et la syntaxe. La partie "objet pur", (les ajouts de méthodes), c'est quand même assez hard. C'est clair qu'il y a une expertise de programmation pas à la portée de tout un chacun.

Faire de la programmation objet comme cela ne sera pas un exigible pour les profs de maths, cela ne rentrera pas dans les lycées. Mais qui sait, dans certaines universités, selon certains parcours spécifiques - je pense à des mutalisations dans des maquettes Maths/Info - cela pourrait être pratiqué, en TP, en formation initiale dans quelques UE du nouveau master "parcours d'enseignement".

Et puis il va y avoir l'option "science informatique" qui va bientôt arriver dans les programmes de lycée. On sait déjà qu'il n'y aura pas de CAPES et d'Agrégation pour cela, mais plutôt des stages lourds comme ce fut le cas dans les années 80 ... alors qui sait ... il y a aussi des perspectives de TP en stage lourd ... en objet sur CaRMetal ...

Ces quelques réflexions pour signaler que la voie ouverte par Jérôme est peut-être à faire connaitre dans un champ plus large que les enseignants de mathématiques.

Spécial Jérôme : quand on clique sur les premiers segments, on peut toujours déplacer le cube pour mieux voir ce que l'on fait. Par contre je ne comprends pas pourquoi on ne peux pas modifier l'angle en cours de script. Tu utilises directement "ang" donc il ne devrait y avoir aucun problème a priori. Si tu avais une idée, histoire de rentre "la structure dynamique" encore plus "en manipulation directe".
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Fri Jul 02, 2010 8:27 am    Post subject: Reply with quote

yves974 wrote:

Spécial Jérôme : quand on clique sur les premiers segments, on peut toujours déplacer le cube pour mieux voir ce que l'on fait. Par contre je ne comprends pas pourquoi on ne peux pas modifier l'angle en cours de script. Tu utilises directement "ang" donc il ne devrait y avoir aucun problème a priori. Si tu avais une idée, histoire de rentre "la structure dynamique" encore plus "en manipulation directe".


Normalement l'angle est modifiable en utilisant le bouton droit de la souris.
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Fri Jul 02, 2010 8:39 am    Post subject: Reply with quote

Effectivement. Surprenant quand même car on peut modifier l'angle avec le clic principal avant et après le script. Comment se fait-il que PENDANT il faut un clic droit ? J'ai l'impression de n'avoir jamais rencontré ça avant, mais je peux me tromper.

En tout cas c'est super pour l'aspect dynamique du script en cours d'exécution, mais surprenant ...

Si quelqu'un qui passe par là avait une explication ... voire même une piste ...
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Fri Jul 02, 2010 10:16 am    Post subject: Reply with quote

Le script attend une réponse de l'utilisateur, à savoir un clic gauche sur un segment.
Dans la version précédente, on pouvait cliquer gauche sur l'angle, mais le script plantait.
J'ai ajouté la commande try pour éviter le plantage, et j'ai laissé vide le traitement de l'erreur. Peut-être y a t-il quelque-chose à ajouter.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Les CaRScripts 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 cannot download files in this forum


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