π
<-

Comment inverser les coordonées Y

Programmation et implémentation d'algorithmes.

Comment inverser les coordonées Y

Message non lude canomod74 » 01 Fév 2025, 19:19

Bonjour,

Dans un programme ou application sur HP Prime, comment peut-on définir un environnement graphique où le 0, 0 serait en bas à gauche et non pas en haut à gauche :help:

Pour le moment j'ai contourné le problème en créant des fonctions intermédiaires qui inversent le y, mais si je pouvais définir de base un environnement avec le 0, 0 en bas à gauche celà simplifierai mes programmes.

Image

Merci :)
J'ai aussi une SHARP EL-9300 et une HP PRIME G2, et une feu HP 48 GX que j'adorais, mais problème au niveau de l'écran, irréparable 🥲.
Avatar de l’utilisateur
canomod74
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 14
Inscription: 29 Jan 2025, 22:05
Localisation: Haute-Savoie / ANNECY
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Comment inverser les coordonées Y

Message non lude critor » 01 Fév 2025, 19:35

Bonjour.

La HP Prime offre 2 variantes pour chaque fonction de tracé :
  • une variante fonctionnant avec des coordonnées en pixels (origine en haut à gauche, orienté vers la droite et vers le bas)
  • une variante fonctionnant dans un repère orthogonal direct à définir (mais orienté vers la droite et vers le haut)
C'est par exemple la nuance entre les fonctions RECT_P() et RECT().

L'orientation graphique que tu décris me semble correspondre à ce dernier cas, donc il suffit juste de configurer le repère pour que les coordonnées entières correspondent bien aux différents pixels, et de n'utiliser ensuite que les fonctions de tracé qui ne sont pas suffixées d'un _P.

Code: Tout sélectionner
Xmin:=0;
Xmax:=319;
Ymin:=0;
Ymax:=239;
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.4%
 
Messages: 42483
Images: 17331
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Comment inverser les coordonées Y

Message non lude canomod74 » 01 Fév 2025, 21:55

Bonsoir,

Merci pour l'astuce, mais ça ne semble pas fonctionner correctement, je m'explique

Pour un environnement

Code: Tout sélectionner
Xmin := 0;
Xmax := 319;
Ymin := 0;
Ymax := 239;


L'affichage a l'écran ne couvre pas tout l'écran, cela laisse des bordures et tout l'espace d'environ 20 pixel réservé au menu du bas.

Il faut donc tricher pour couvrir tout l'espace mais cela étire l'espace graphique chaque pixel n'est plus représentatif de son emplacement réel.

Ainsi en tâtonnant sur les valeurs, j'arrive à avoir un affichage qui correspond à ce que je veux visuellement, mais c'est d'une part très compliqué d'arriver à placer les pixels où on veux vraiment.
De plus lorsque j'essai de parcourir avec une boucle FOR la plage Xmin -> Xmax et Ymin -> Ymax avec des pixels, il y'a des trous dans la raquette.
Ce qui visuellement donne ça :

Image

avec ce code :

On voit que les coordonnées qui doivent être défini sont décalées (sur pout Ymin).
Si on défini Xmin = 0, Xmax= 319, Ymin = 0, Ymax = 239, alors il y'a un contour qui apparait + le menu du bas

Code: Tout sélectionner
EXPORT Demo_RECT()
BEGIN
LOCAL i, j, k;
Xmin:=1; 
Xmax:=318; 
Ymin:=21; 
Ymax:=239;
DIMGROB(G1,319,239);
RECT(G1,#FFFFFF);
RECT(G1,0,1,10,11,RGB(0,255,0),RGB(255,0,0));
RECT(G1,0,239,9,230,RGB(255,0,0),RGB(0,255,0));
RECT(G1,308,229,318,239,RGB(255,0,0),RGB(0,0,255));
RECT(G1,308,1,318,11,RGB(255,0,0),RGB(128,0,128));
LINE(G1, 0, 1, 319, 239, RGB(55,55,55));
FOR k FROM 10 TO Ymax/2 STEP 20 DO
ARC(G1, Xmax/2, Ymax/2, k, {#CCCCCC});
END;
FOR i FROM 0 TO 318 STEP 1 DO
PIXON(G1, i, FLOOR(Ymax/1.5), #FF0000);
PIXON(G1, i, Ymax/2, #FF0000);
PIXON(G1, i, Ymax/3, #FF0000);
END;
FOR j FROM 0 TO 319 STEP 1 DO
PIXON(G1, FLOOR(Xmax/1.5), j, #000FF);
PIXON(G1, Xmax/2, j, #000FF);
PIXON(G1, Xmax/3, j, #000FF);
END;
BLIT(G0, G1);
WAIT();
END;



A moins que je me sois trompé, j'ai l'impression que les fonction sans le _P ne sont pas fiable pour travaillé au pixel près.
Dernière édition par canomod74 le 01 Fév 2025, 23:01, édité 3 fois.
J'ai aussi une SHARP EL-9300 et une HP PRIME G2, et une feu HP 48 GX que j'adorais, mais problème au niveau de l'écran, irréparable 🥲.
Avatar de l’utilisateur
canomod74
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 14
Inscription: 29 Jan 2025, 22:05
Localisation: Haute-Savoie / ANNECY
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Comment inverser les coordonées Y

Message non lude critor » 01 Fév 2025, 22:13

canomod74 a écrit:Merci pour l'astuce, mais ça ne semble pas fonctionner correctement, je m'explique

Pour un environnement

Code: Tout sélectionner
Xmin := 0;
Xmax := 319;
Ymin := 0;
Ymax := 239;


L'affichage a l'écran ne couvre pas tout l'écran, cela laisse des bordures et tout l'espace d'environ 20 pixel réservé au menu du bas.

ça devrait pourtant ; l'écran HP Prime fait très exactement 320*240 pixels, intégralement couverts par la fenêtre graphique.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.4%
 
Messages: 42483
Images: 17331
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Comment inverser les coordonées Y

Message non lude critor » 01 Fév 2025, 22:22

Effectivement, si on peut bien dessiner sur tout l'écran, les bornes Xmin/Xmax/Ymin/Ymax semblent être liées à une zone plus restreinte de l'écran (moins des marges de 1 pixel à gauche et à droite ainsi que la hauteur du menu de bas d'écran).
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.4%
 
Messages: 42483
Images: 17331
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Comment inverser les coordonées Y

Message non lude critor » 01 Fév 2025, 22:47

Il y a donc une bizarrerie sur les bornes du repère, mais à part cela ça me semble être utilisable.

On définit les dimensions de l'écran :
Code: Tout sélectionner
LOCAL ecran_l, ecran_h;
ecran_l:=320;
ecran_h:=240;


Puis on configure les bornes du repère (avec Xmax=319 et non 318 selon mes tests) :
Code: Tout sélectionner
Xmin:=1; 
Xmax:=ecran_l-1; 
Ymin:=21; 
Ymax:=ecran_h-1;


Et maintenant, astuce, on se définit les bornes de l'écran, seules bornes qui seront utilisées par la suite (et surtout pas celles du repère) :
Code: Tout sélectionner
LOCAL xmin, xmax, ymin, ymax;
xmin:=0;
xmax:=ecran_l-1;
ymin:=0;
ymax:=ecran_h-1;


Cela me semble fonctionner :
Image

Et voici le code complet associé :
Code: Tout sélectionner
EXPORT Demo_RECT()
BEGIN
LOCAL ecran_l, ecran_h;
ecran_l:=320;
ecran_h:=240;

Xmin:=1; 
Xmax:=ecran_l-1; 
Ymin:=21; 
Ymax:=ecran_h-1;

LOCAL xmin, xmax, ymin, ymax;
xmin:=0;
xmax:=ecran_l-1;
ymin:=0;
ymax:=ecran_h-1;

LOCAL l;
l:=10;

LOCAL i, j, k;

DIMGROB(G1,ecran_l,ecran_h);
RECT_P(G1,#FFFFFF);
RECT(G1,xmin,ymin,xmin+l,ymin+l,RGB(0,255,0),RGB(255,0,0));
RECT(G1,xmin,ymax,xmin+l,ymax-l,RGB(255,0,0),RGB(0,255,0));
RECT(G1,xmax-l,ymax-l,xmax,ymax,RGB(255,0,0),RGB(0,0,255));
RECT(G1,xmax-l,ymin,xmax,l,RGB(255,0,0),RGB(128,0,128));
LINE(G1, xmin, ymin, xmax, ymax, RGB(55,55,55));
FOR k FROM l TO ymax/2 STEP 2*l DO
ARC(G1, xmax/2, ymax/2, k, {#CCCCCC});
END;
FOR i FROM xmin TO xmax STEP 1 DO
PIXON(G1, i, FLOOR(ymax/1.5), #FF0000);
PIXON(G1, i, ymax/2, #FF0000);
PIXON(G1, i, ymax/3, #FF0000);
END;
FOR j FROM ymin TO ymax STEP 1 DO
PIXON(G1, FLOOR(xmax/1.5), j, #000FF);
PIXON(G1, xmax/2, j, #000FF);
PIXON(G1, xmax/3, j, #000FF);
END;
BLIT(G0, G1);
WAIT();
END;
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.4%
 
Messages: 42483
Images: 17331
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Comment inverser les coordonées Y

Message non lude canomod74 » 01 Fév 2025, 23:19

Ah oui effectivement avec ton code ça fonctionne, du moins sur la calculatrice physique,
car sur l'émulateur, j'ai toujours un trou sur les lignes verticales et les bords des carrés du bas sont hors écran.

Si je met Ymin:=20; sur l'émulateur c'est à présent ok, mais sur la calculatrice j'ai une rangée de 1 pixel qui laisse apparaitre le menu :#fou#:

Peut-être de légères différences entre les versions logicielles et physique. Peut-être différences aussi entre les versions G1 et G2 de la calculatrice.

Image
J'ai aussi une SHARP EL-9300 et une HP PRIME G2, et une feu HP 48 GX que j'adorais, mais problème au niveau de l'écran, irréparable 🥲.
Avatar de l’utilisateur
canomod74
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 14
Inscription: 29 Jan 2025, 22:05
Localisation: Haute-Savoie / ANNECY
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Comment inverser les coordonées Y

Message non lude critor » 02 Fév 2025, 08:55

Il vaut mieux opter pour la configuration qui marche sur toute calculatrice physique.

Mon code précédent ne semble pas avoir de problème d'affichage sur émulateur ici :
Image

J'utilise le dernier émulateur 2.3.15247 sorti le 23 janvier 2025 et téléchargeable ici :
archives_voir.php?id=4478265
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.4%
 
Messages: 42483
Images: 17331
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Comment inverser les coordonées Y

Message non lude canomod74 » 02 Fév 2025, 13:49

Merci pour le logiciel.

En fait j'utilisais la version du Microsoft Store. La version Pro en plus que j'ai payé 19,99€ et qui semble être en plus une très vieille version. :~o :~o :~o
J'ai aussi une SHARP EL-9300 et une HP PRIME G2, et une feu HP 48 GX que j'adorais, mais problème au niveau de l'écran, irréparable 🥲.
Avatar de l’utilisateur
canomod74
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 80%
 
Messages: 14
Inscription: 29 Jan 2025, 22:05
Localisation: Haute-Savoie / ANNECY
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Comment inverser les coordonées Y

Message non lude critor » 02 Fév 2025, 13:58

Les applications HP Prime, même les éditions pro payantes (que ce soit pour Windows, Android ou iOS) ne semblent malheureusement plus maintenues correctement depuis la rachat de la branche HP Calculatrices par Moravia à la rentrée 2021.
Il vaut mieux opter pour les logiciels HP Prime gratuits, et uniquement pour Windows (car pour Mac ou Linux même problème, ce n'est plus à jour depuis des années).
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.4%
 
Messages: 42483
Images: 17331
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Suivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 37 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
8391 utilisateurs:
>8366 invités
>17 membres
>8 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)