TCOs en Processing (1)
. Par : Pierre59
Vous répondez à :
Bonjour
Dans le fichier Pave d’Aide1 se trouve l’instruction suivante
int[] SYMROT={0,3,2,1}; // table pour mes paves
et plus loin dans ce programme on utilise rot et sym
Pouvez vous me donner une explication sur ces variables
Dans votre document il n’en est pas fait référence
Merci
21 Messages
-
TCOs en Processing 5 janvier 2018 16:50, par Christian
Cet article m’a permis de tracer le TCO de mon réseau en moins d’une heure, et celui-ci fait 11 lignes et 21 colonnes. Mon réseau est sur deux niveaux et contient 1 TJD et 7 aiguillages.
Je vous aurais bien montré le résultat mais il ne semble pas y avoir moyen de copier une image ici, donc je le ferai dans le forum.
Pour ceux qui veulent en faire autant, il suffit de modifier le programme que Pierre59 a fourni et :
- changer le nombre de lignes et de colonnes dans le premier onglet
- changer le titre du TCO dans le setup (éventuellement)
- construire ligne par ligne le TCO en modifiant dans l’onglet TCO (cela va plus vite si on utilise le petit programme Aide1 (ouvert en simultané) pour réaliser les copier-coller qui donnent les bons pavés bien orientés).
C’est hyper facile !
-
TCOs en Processing 8 janvier 2018 20:20, par trimarco232
Bonjour,
j’ai essayé l’exemple 1_1
j’obtiens l’erreur "The value of the parameter b is not used"
concernant la ligne :Pave manoeuvrer(boolean b) { return this; } // manoeuvre des aiguilles doubles (TJD TJS triple)
qui veut bien m’aider, merci ?
-
TCOs en Processing 9 janvier 2018 09:00, par Pierre59
Bonjour
Ce n’est pas une erreur, juste un avertissement du compilateur (warning) sur fond orange, les erreurs sont sur fond rouge.
En fait cette méthode sera redéfinie dans les aiguillages et dans certains cas le booléen servira.
Pierre
-
TCOs en Processing 12 janvier 2018 21:58, par trimarco232
Bonjour,
merci Pierre pour ta réponse !en fait je me suis fait abuser car j’ai trouvé l’avertissement dans l’onglet "Erreurs"
l’erreur, la vraie, est indiquée dans l’onglet "console" :
ERROR : transport error 202 : listen failed : Permission denied
ERROR : JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
ERROR : JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197) : No transports initialized [debugInit.c:750]
Using startup command : C :\Users\ // etc.j’ai la même erreur avec un sketch vide ... ce n’est donc pas lié à ton sketch, c’est déjà ça
pour info, je suis sous vista, j’ai essayé avec la version 3.3.5 de processing : pareil ...
je suis en train train de souquer ferme pour trouver la parade
-
-
TCOs en Processing 13 janvier 2018 11:48, par Pierre59
Bonjour
Apparemment c’est un problème de réseau. Processing cherche à se connecter à quelque chose ?
Pierre
-
TCOs en Processing 14 octobre 2018 03:23, par John
Where can I download the TCO editing program ?
-
TCOs en Processing 14 octobre 2018 08:55, par Pierre59
I have no TCOs editor yet, they are "hand coded", but DDEF is working on :
http://forum.locoduino.org/index.ph...
Pierre
-
TCOs en Processing 7 février 2019 17:49, par luchet
Bonjour
Dans le fichier Pave d’Aide1 se trouve l’instruction suivanteint[] SYMROT={0,3,2,1}; // table pour mes paves
et plus loin dans ce programme on utilise rot et symPouvez vous me donner une explication sur ces variables
Dans votre document il n’en est pas fait référence
Merci-
TCOs en Processing 7 février 2019 18:13, par Pierre59
Bonjour
Le tableau SYMROT sert à calculer une forme "canonique" des symétries des rotations.
Sur un pave on peut faire des symétrie et des rotations en nombre quelconque et ordre quelconque, autrement dit on peut mélanger les symétrie et les rotations. Mais c’est deux opérations ne sont pas commutatives : une symétrie puis une rotation ne donne pas dans tous les cas la même chose qu’une rotation puis une symétrie.
C’est pour cela qu’on calcule une forme canonique des transformations sous la forme la plus simple possible, une symétrie éventuelle suivie de rotations éventuelles, c’est cette forme canonique qui est affichée.
Pierre
-
-
TCOs en Processing 23 février 2019 11:14, par Luchet
Bonjour
Dans le fichier Pave d’Aide1 se trouve la méthodevoid simplifier() { rot=rot%2; if (sym && rot==1) { sym=false; rot=0; } } // 2 cas
et aussi dans d’autre Pavé
mais je ne vois pas a quel endroit du programme celle-ci est appelée ??
Pouvez vous m’éclairer a ce sujet
Merci d’avance( j’étudie ligne a ligne vos programmes pour bien les comprendre
-
TCOs en Processing 23 février 2019 17:59, par Pierre59
Bonjour
Tout se passe dans l’onglet Paves.
Si si ! la méthode simplifier() est bien appelée, cela se fait à la ligne 27, qui appelle la méthode simplifier() de la ligne 24, bon c’est un peu plus compliqué. On est en programmation objets, la méthode simplifier() de la ligne 24 est abstraite, ce qui veut dire qu’elle n’est pas définie, mais toutes les classes concrètes qui héritent de la classe Pave doivent implémenter cette méthode, c’est le cas de toutes les classes Pavexxx (PaveDroit, PaveBiais, …). Quand la ligne 27 appelle la méthode simplifier() on appelle en fait la méthode simplifier() de l’objet concerné. Ainsi si l’objet est un PavéDroit c’est sa méthode de la ligne 64 qui est effectivement appelée, si c’est un PaveBiais c’est sa méthode de la ligne 72 qui est effectivement appelée, …
Cela aurait pratiquement le même effet si à la ligne 24 on écrivait :
void simplifier() {}
la méthode est alors implémentée (elle ne fait rien), mais elle est redéfinie dans tous les pavés.On a ici un des mécanismes fondamentaux de la programmation objet.
Cordialement
Pierre59
-
-
TCOs en Processing (1) 20 décembre 2021 19:02, par Sylvain
Bonjour et felicitation pour votre travail,
je viens de realiser le shema de mon reseau avec la methode construire.
Maintenant je souhaite lier l’ action de l’ aiguillage du tco a un arduino mais je n’ arrive pas a retourver la variable correspondant au clic du paves de l aiguillage 1 ou de l’ aiguillage 2 ....ect .Je ne connais pas la programmation "Objet" je pense que cela se passe la dans le 1er onglet :
void mouseClicked() int l,c ; ; Pave p ;
l=(mouseY-BORDURE)/TAILLE_CASE/(int)ZOOM ; // calcul de la ligne
c=(mouseX-BORDURE)/TAILLE_CASE/(int)ZOOM ; // calcul de la colonne
if (l<0 || l>=LIGNES || c<0 || c>=COLONNES) return ; // pas dans tco
p=tco.paves[c][l] ; // obtension du pave
if (p !=null) p.manoeuvrer(mouseButton==RIGHT) ; // manoeuvre des aiguillesmais quand je mets "println(p) ;" une valeur type : essai_tco$PaveAiguilleDroite@31d24cdf
Est la je suis perdu car je ne sais pas comment l’ exploiter ou si il y a moyen de reprendre la variable p d’ une maniere plus simple ou je suis completement en erreurBref un petit coup de pouce serait le bien venu
Merci d’ avance
Sylvain -
TCOs en Processing (1) 20 décembre 2021 20:59, par Sylvain
j’ ai reussi a avoir les coordonnées des paves en modifiant cette partie de code :
void mouseClicked() int x,y ; int l,c ; ; Pave p ;
l=(mouseY-BORDURE)/TAILLE_CASE/(int)ZOOM ; // calcul de la ligne
c=(mouseX-BORDURE)/TAILLE_CASE/(int)ZOOM ; // calcul de la colonne
x=mouseX ; y=mouseY ;
println(x+" "+y+" "+l+" "+c) ;maintenant j ai les coordonnées des paves en pixel et en nb de lignes et colonnes
je progresse tout doucement-
TCOs en Processing (1) 21 décembre 2021 12:52, par Pierre59
J’ai répondu ci dessous !
Pierre
-
-
TCOs en Processing (1) 21 décembre 2021 11:51, par Pierre59
Bonjour
Cet article n’a pas été prévu pour commander effectivement des aiguilles.
Mais avec quelques modifications simples c’est tout à fait possible.
Je vais vous aider, mais avant j’aimerais que vous envoyez une image de votre TCO pour voir quelles sont les aiguilles utilisées et leur nombre.
Codialement
Pierre
-
TCOs en Processing (1) 21 décembre 2021 21:07, par Sylvain
Merci pour votre réponse,
je vous prepare cela demain
Cordialement
Sylvain -
TCOs en Processing (1) 22 décembre 2021 15:32, par Sylvain
Bonjour,
ci joint copie du de l’ image de mon TCOJ’ ai ajouté des symboles de capteurs
class FormeCapteur extends Forme
FormeCapteur() // constructeur
vertex(3,2, 6,2, 6,7, 3,7) ;et
class PaveCapteur extends Pave
int feu ; // couleur du capteur pour le tcoPaveCapteur(int f) // constructeur
super(
new FormeCapteur(),
new FormeDroit()) ;
feu=f ;void dessiner()
formes[0].dessiner(feu) ; // feu
formes[1].dessiner(couleur) ; //voiePave manoeuvrer(boolean b) // pour manoeuvres par clic
switch (feu)
case ORANGE : feu=VIOLET ; break ;
case VIOLET : feu=ORANGE ; break ;
return this ;
Souhaitant réaliser une communication type serie avec un Arduino(4 caracteres comprenant un prefix ) je pense identifier
les elements selectionné a partir de leurs coordonnées l,c à la suite de ces lignes :void mouseClicked() int x,y ; int l,c ; ; Pave p ;
l=(mouseY-BORDURE)/TAILLE_CASE/(int)ZOOM ; // calcul de la ligne
c=(mouseX-BORDURE)/TAILLE_CASE/(int)ZOOM ; // calcul de la colonne
x=mouseX ; y=mouseY ;if (l<0 || l>=LIGNES || c<0 || c>=COLONNES) return ; // pas dans tco
p=tco.paves[c][l] ; // obtension du pave
if (p !=null) p.manoeuvrer(mouseButton==RIGHT) ; // manoeuvre des aiguilles et signauxprintln(x " " y " " l " " c) ;
println(p) ;avec des conditions type : if l==4 && c==4
Je ne sais pas si cette methode est correcte ?
Cordialement
SylvainVoir en ligne : TCO
-
TCOs en Processing (1) 22 décembre 2021 16:01, par Pierre59
Bonjour
J’ai eu un peu de mal à visionner le réseau.
Voici la méthode pour les aiguilles (il faut utiliser la version 1.1) :
- il faut ajouter une variable dans la classe PaveAiguilleSimple pour mémoriser le numéro (ou le nom de l’aiguille, par exemple avec un entier, ajouter un paramètre au constructeur et ajouter une écriture sur la ligne série dans la méthode manoeuvrer(...)
abstract class PaveAiguilleSimple extends Pave
int no ;
PaveAiguilleSimple(int n,Forme... ps) super(ps) ; no=n ; // constructeurPave manoeuvrer(boolean b) Forme f ;
f=formes[0] ; formes[0]=formes[1] ; formes[1]=f ; return this ; // permutation
serial.write(no) ; // A METTRE EN FORME !!!- ajouter un paramètre au constructeur :
class PaveAiguilleDroite extends PaveAiguilleSimple
PaveAiguilleDroite(int n) super(n,new FormeArc45(),new FormeDroit()) ; // constructeur- de même :
class PaveAiguilleBiaise extends PaveAiguilleSimple
PaveAiguilleBiaise(int n) super(n,new FormeArc45().rotation(2),new FormeBiais()) ;- dans le dessin du tco ajouter les bons numéros dans les appels des constructeurs d’aiguilles
Voila c’est tout
Cordialement
Pierre
-
-
TCOs en Processing (1) 23 décembre 2021 12:29, par Sylvain
Bonjour et surtout merci pour aide,
j’ ai repris le code selon votre message, malheureusement j’ ai du loupé quelque chose.
en remplacant le "serial.write(no)" par un "println (no) pour comprendre le fonctionnemnt j’ ai une erreur :
"unexpected token :no"copie de la partie de code :
abstract class PaveAiguilleSimple extends Pave @ // regroupement des aiguilles simples
int no ;
PaveAiguilleSimple(int n,Forme... ps) @ super(ps) ;no=n ; // constructeur
@
Pave manoeuvrer(boolean b) @Forme f ; f=formes[0] ; formes[0]=formes[1] ; formes[1]=f ; return this ;@
// permutation
println (no) ;@
et copie du code coté "construire tco" pour aiguille n°1 :
paves[c++][l]=new PaveAiguilleDroite(1).rotation(2) ;
j’ai forcement faux quelque part, ou je n’ ai pas compris le fonctionnement
lorsque je place mon "println (no) comme cela :
PaveAiguilleSimple(int n,Forme... ps) @ super(ps) ;no=n ; // constructeur
println (no) ;
@j’ ai tous mes n° d’aiguilles qui s’ affiche en fixe mais c’ est pas cela que l’on souhaite c’ est seulement le n° de l’ aiguille manoeuvré si j’ ai bien compris le code
Si part bonheur vous pouviez me consacrer encore un peu de temps.
Ps : les symboles accolades ne s’ affichent pas je les ai remplace par des "@"
Cordialement
Sylvain-
TCOs en Processing (1) 23 décembre 2021 13:06, par Pierre59
Bonjour
C’est une erreur de ma part, il faut mettre le println (no) avant le return this
L’absence d’accolades est très perturbant !
Pierre
-
-
TCOs en Processing (1) 23 décembre 2021 13:14, par Sylvain
Nikel , ca marche
Vous n’ avez pas a vous excuser c’est deja tres gentil de m’ aider
Je vous remercie encore et je vous souhaite de bonnes fêtes de fin d’ année
Cordialement
Sylvain