Rechercher
Connexion
Chatbox externe
Derniers sujets
Partenaires
TI-Planet | Espace-TI : Forum |
Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)
Les posteurs les plus actifs du mois
Aucun utilisateur |
Un curseur en graphique
3 participants
Tout 82 :: Programmes :: Les Programmes des Internautes (TI-Basic z80) :: Aide à la programmation (TI-Basic z80)
Page 1 sur 1
Un curseur en graphique
En codant un petit machin en cette belle après-midi de vacances, je me suis heurté à un problème qui n'avait pas l'air d'en être un au départ : faire un curseur en graphique.
J'avais d'abord utilisé la méthode des listes pour faire un beau curseur, mais mon réglage de fenêtre buggait, donc je m'étais rabattu sur un Input :
Et bien sûr, ça marche pas...
Mes valeurs X et Y ne sont pas initialisées, sauf dans la fenêtre (Xmin, Ymin, ΔX, ΔY), mais j'ai cru comprendre que Input stockait les coordonnées dans X et Y.
Merci d'avance !
J'avais d'abord utilisé la méthode des listes pour faire un beau curseur, mais mon réglage de fenêtre buggait, donc je m'étais rabattu sur un Input :
- Code:
Repeat K=45
getKey→K
Input
End
Text(Y,X,"O
DispGraph
Et bien sûr, ça marche pas...
Mes valeurs X et Y ne sont pas initialisées, sauf dans la fenêtre (Xmin, Ymin, ΔX, ΔY), mais j'ai cru comprendre que Input stockait les coordonnées dans X et Y.
Merci d'avance !
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Un curseur en graphique
Oui, X et Y sont bien affectées. C'est ton code qui ne va pas: il faut cliquer sur annul entre le moment où on a validé l'input avec entrer et celui où le codeTouche est enregistré... Ce qui est impossible.
D'ailleurs, pourquoi attendre l'appui sur annul??
Ce n'est pas suffisant?
Il faut appuyer sur entrer pour valider la position.
Attention par contre: X et Y sont les coordonnées en fonction du zoom, et Text attend des coordonnées absolues sur l'écran!
D'ailleurs, pourquoi attendre l'appui sur annul??
- Code:
Input
Text(Y,X,"O
DispGraph
Ce n'est pas suffisant?
Il faut appuyer sur entrer pour valider la position.
Attention par contre: X et Y sont les coordonnées en fonction du zoom, et Text attend des coordonnées absolues sur l'écran!
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
Je confirme. Input utilise le repère graphique et Text utilise le repère des pixels.
Tu peux adapter n'importe quel repère avec la proportionnalité et les offsets. Et arrondi car les pixels ne supporte pas de décimaux. Exemple appliqué à un écran de TI83.
round()=arrondi()
Tu peux adapter n'importe quel repère avec la proportionnalité et les offsets. Et arrondi car les pixels ne supporte pas de décimaux. Exemple appliqué à un écran de TI83.
- Code:
Input
round((X-Xmin)*94/(Xmax-Xmin),0)->A
round((Ymax-Y)*62/(Ymax-Ymin),0)->B
Text(B,A,"X
- Code:
Input
round((X-Xmin)/deltaX,0)->A
round((Ymax-Y)/deltaY,0)->B
Text(B,A,"X
round()=arrondi()
Dernière édition par Linkakro le Jeu 3 Juil 2014 - 21:19, édité 1 fois
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
La boucle est le résidu du reste du code. Mais en effet elle est inutile puisque Input gère la pression. La solution de Linkakro m'a l'air d'être très bien, sauf que je ne comprends pas la présence d'arrondis et la différence entre les extrêmes. Le pas est facilement trouvé, puisqu'il correspond aux pixels tel qu'est mon repère non ?
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Un curseur en graphique
J'ai un petit peu plus commenté en éditant.
Je te rappelle que le repère des pixels en TI-Basic ne supporte pas les décimaux. D'où les arrondis.
Calculer le Pas ne suffit pas, il faut orienter correctement et placer les offsets. Par exemple j'ai interverti deux termes justement pour orienter l'ordonnée, et ce n'est pas évident.
Je te rappelle que le repère des pixels en TI-Basic ne supporte pas les décimaux. D'où les arrondis.
Calculer le Pas ne suffit pas, il faut orienter correctement et placer les offsets. Par exemple j'ai interverti deux termes justement pour orienter l'ordonnée, et ce n'est pas évident.
- Spoiler:
- Je me suis obstiné à tout indiquer car je l'ai écrite en simplifiant la formule complète. Je l'ai élaboré moi-même pour le forum mais ce 'est bien sûr pas une exclusivité sur calculatrice. Et personne ne me comprend quand je la décris.
xi: point étudié, repère i
xij: point j de référence, repère i
x11: repère 1 point 1
x12: repère 1 point 2
x21: repère 2 point 1
x22: repère 2 point 2
x1: point converti du repère 1
x2: point converti du repère 2
x21=f(x11)
x22=f(x12)
x2=f(x1)
x2=x21+(x1-x11)*(x22-x21)/(x12-x11)
Et en se rappelant que les choix des points n'est pas forcément une considération de minimum/maximum si un repère est en sens opposé.
Dernière édition par Linkakro le Jeu 3 Juil 2014 - 23:56, édité 2 fois
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
Heu... C'est quoi x11, x1, x12 etc?
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
Commentaire ajouté avec le texte concerné.
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
Ah ok c'est plus clair maintenant merci
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
C'est pour adapter à n'importe quelle fenêtre en fait si je comprends bien.
Le curseur se déplace toujours de pixel en pixel sans tenir compte de l'échelle ou se déplace t-il d'unité en unité (selon l'échelle en fait) ?
Je pose cette question pour savoir si c'était possible d'avoir le curseur de l'Input qui se déplace de plusieurs pixels à la fois, histoire de pas avoir à se taper la traversée de tout l'écran graphique à chaque fois qu'il faut faire un choix.
Le curseur se déplace toujours de pixel en pixel sans tenir compte de l'échelle ou se déplace t-il d'unité en unité (selon l'échelle en fait) ?
Je pose cette question pour savoir si c'était possible d'avoir le curseur de l'Input qui se déplace de plusieurs pixels à la fois, histoire de pas avoir à se taper la traversée de tout l'écran graphique à chaque fois qu'il faut faire un choix.
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Un curseur en graphique
Le déplacement du curseur du système, y compris avec Input, ne permet pas de déplacer autrement que par un pixel, donc d'un pas du graphe. Tu devras réaliser le curseur et son déplacement autrement.
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
Ok merci ! Bon ba alors je pense que je vais voir pour faire un autre curseur avec des listes et une fenêtre mieux réglée, parce que c'est pas super pratique de choisir entre 5985 pixels à chaque fois !
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Un curseur en graphique
Si tu veux des conseils...
Je ne comprends pas vraiment le principe du curseur que tu veux en fait.
Je ne comprends pas vraiment le principe du curseur que tu veux en fait.
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
Ba en gros c'est le code en général pour faire un curseur en graphique que je recherche.
La solution avec Input étant assez peu ergonomique dans un programme où il faut faire un choix sur seulement quelques parties de l'écran, j'y préfère un curseur représenté par un Plot où les points sont reliés entre eux et où leurs coordonnées sont L1 et L2.
Du genre ça :
J'ai pas testé, mais là je pense que si on ajoute une boucle pour gérer le mouvement, on aura un beau curseur carré de 4*4, et on pourra avec le getKey l'incrémenter de plusieurs pixels à la fois, contrairement à l'Input.
Mais comme je l'ai dit, quand j'ai fait ce curseur, ma fenêtre a buggé, donc je sais pas trop comment faire du coup...
La solution avec Input étant assez peu ergonomique dans un programme où il faut faire un choix sur seulement quelques parties de l'écran, j'y préfère un curseur représenté par un Plot où les points sont reliés entre eux et où leurs coordonnées sont L1 et L2.
Du genre ça :
- Code:
{0,4,4,0,0→L1
{0,0,-4,-4,0→L2
Plot1(xyline,L1,L2,.
J'ai pas testé, mais là je pense que si on ajoute une boucle pour gérer le mouvement, on aura un beau curseur carré de 4*4, et on pourra avec le getKey l'incrémenter de plusieurs pixels à la fois, contrairement à l'Input.
Mais comme je l'ai dit, quand j'ai fait ce curseur, ma fenêtre a buggé, donc je sais pas trop comment faire du coup...
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Un curseur en graphique
Que qualifies-tu de bug de la fenêtre ?
Je ne vois pas ce que tu peux manquer.
Tu dois actualiser l'affichage lorsque tu as modifié les listes de statsplot. Rappelle toi que les statsplots sont dans le repère graphique, et que cela peut dépasser de l'écran.
Je ne vois pas ce que tu peux manquer.
Tu dois actualiser l'affichage lorsque tu as modifié les listes de statsplot. Rappelle toi que les statsplots sont dans le repère graphique, et que cela peut dépasser de l'écran.
- Code:
FnOff // évite les courbes
ZStandard // idouane pour mon exemple avec un pas de 1 en graphe.
{1,2->L1
{1,2->L2
Plot1(xyline,L1,L2,.
Repeat K=45
DispGraph // actualise le graphe
Repeat K
getKey->K
End
L1-(K=24)+(K=26->L1
L2+(K=25)-(K=34->L2
End
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Un curseur en graphique
J'ai ce code, mais j'ai ajouté des limites à l'écran pour éviter de plus voir le curseur. Un truc dans ce genre :
Mais ça doit pas être correct car au bout du premier coup il se met à fire n'importe quoi (curseur placé "aléatoirement", de taille variable).
- Code:
L1+(L1<1)-(L1>94->L1
L2+(L2<1)-(L2>64->L2
Mais ça doit pas être correct car au bout du premier coup il se met à fire n'importe quoi (curseur placé "aléatoirement", de taille variable).
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Un curseur en graphique
Tes conditions booléennes sont appliquées à chaque terme de la liste indépendamment les uns des autres. Si un point de la liste est contrôlé par une condition, d'autres points ne le seront pas forcément. Donc le curseur se déforme.
Donc tu dois réaliser des tests en posant des conditions sur L'ENSEMBLE des points.
Cependant écrire des conditions générales sur tous les points me semble excessif, donc je pense intéressant de poser les conditions générales seulement à partir des points extrêmes connus à l'avance.
Utiliser des variables de coordonnées indépendantes des listes est judicieux pour poser les conditions.
Premier cas, les contrôler au même moment que les listes. Cela double les conditions ou le nombre de commande.
Deuxième cas, les listes sont constantes comme des sprites et on y somme les variables de coordonnées. Cela nécessite plus de calcul et mémoire de liste.
Donc tu dois réaliser des tests en posant des conditions sur L'ENSEMBLE des points.
- Code:
// fenêtre déjà préparée
{0,4,4,0,0→L1
{0,0,-4,-4,0→L2
Plot1(xyline,L1,L2,.
Repeat K=45
DispGraph
Repeat K
getKey→K
End
//avertissement : condition valide dès la ti82stats
// une ti82 non-stats nécessite chaque point
If max(L1>0 and L1<94) and max(L1>0 and L1<62)
Then
L1-(K=24)+(K=26→L1
L2+(K=25)-(K=34→L2
End
End
Cependant écrire des conditions générales sur tous les points me semble excessif, donc je pense intéressant de poser les conditions générales seulement à partir des points extrêmes connus à l'avance.
- Code:
// fenêtre déjà préparée
{0,4,4,0,0→L1
{0,0,-4,-4,0→L2
Plot1(xyline,L1,L2,.
Repeat K=45
DispGraph
Repeat K
getKey→K
End
If L1(2)>0 and L1(4)<94 and L2(2)>0 and L2(4)<64
Then
L1-(K=24)+(K=26→L1
L2+(K=25)-(K=34→L2
End
End
Utiliser des variables de coordonnées indépendantes des listes est judicieux pour poser les conditions.
Premier cas, les contrôler au même moment que les listes. Cela double les conditions ou le nombre de commande.
Deuxième cas, les listes sont constantes comme des sprites et on y somme les variables de coordonnées. Cela nécessite plus de calcul et mémoire de liste.
- Code:
// fenêtre déjà préparée
{0,4,4,0,0→L3
{0,0,-4,-4,0→L4
0→A
0→B
Plot1(xyline,L1,L2,.
Repeat K=45
DispGraph
L3+A→L1
L4+B→L2
Repeat K
getKey→K
End
max(0,min(94,A-(K=24)+(K=26→A
max(0,min(94,B+(K=25)-(K=34→B
End
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Tout 82 :: Programmes :: Les Programmes des Internautes (TI-Basic z80) :: Aide à la programmation (TI-Basic z80)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Dim 16 Oct 2022 - 21:11 par Wistaro
» Bonne année 2018!
Ven 2 Nov 2018 - 19:42 par Ti64CLi++
» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026
» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro
» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41
» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro
» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++
» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++
» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++