π
<-
Chat plein-écran
[^]

Upsilon : firmware successeur d'Omega par sa communauté !

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude Lauryy06 » 13 Jan 2022, 18:56

En théorie le fix est déjà disponible sur Github, mais pour ce qui est du site web, on n'a pas encore tout automatisé donc il y a pas vraiment de date...
Avatar de l’utilisateur
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 6.7%
 
Messages: 5
Inscription: 12 Jan 2022, 22:15
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: 1ère
GitHub: Lauryy06

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude parisse » 15 Jan 2022, 17:27

Lauryy06 a écrit:J'ai résolu le problème des lignes blanches avec fill_polygon (qui n'est plus limité à 32 points maintenant) :
Image
Serait-il possible d'avoir le script du logo de TI qui cause le reset de la calculatrice pendant le dessin ? Ca m'aiderait à débugger.

J'ai regarde votre code source pour comparer au mien et voir si je peux ameliorer le mien. Il y a un truc evident a ameliorer chez moi pour le portage Numworks, c'est l'utilisation de l'instruction de remplissage de rectangles pour chaque petite segment de pixels horizontal dans le scanline. Chez vous, il y a le tri qui est en O(n^2) mais evidemment c'est plus difficile a ameliorer car pas de vraie libc chez Epsilon, donc pas de qsort. Il y a d'autres optimisations chez moi pour minimiser le temps de calcul des abscisses des aretes qui traversent la ligne courante, mais ca ne doit pas trop se voir si n est petit (mon objectif etait n==384 qui est a peu pres ce qu'on obtient si on trace l'aire sous la courbe par un polygone rempli sur la Casio).
Est-ce que vous gerez le cas ou les coordonnees passees en argument sont en-dehors des limites de clipping?
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3499
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude Lauryy06 » 15 Jan 2022, 19:03

Est-ce que vous gerez le cas ou les coordonnees passees en argument sont en-dehors des limites de clipping?


Oui, au début du code je change si besoin la hauteur de départ et d'arrivée pour ne parcourir que les lignes à l'écran :
Code: Tout sélectionner
if (top < 0) {
  top = 0;
}
if (bottom > m_clippingRect.height()) {
  bottom = m_clippingRect.height();
}

Puis dans chaque ligne, si le "switch" est à gauche de l'écran, je ne remplis pas le rectangle
Code: Tout sélectionner
if (switchesX[i+1]>left) {
   fillRect( KDRect(switchesX[ i ], y, switchesX[ i+1 ] - switchesX[ i ], 1 ), color ) ;
}

et s'il est à droite, j'interromps la boucle et je passe à la ligne suivante.
Code: Tout sélectionner
if (switchesX[i]>=right) {
   break;
}



Chez vous, il y a le tri qui est en O(n^2) mais evidemment c'est plus difficile a ameliorer car pas de vraie libc chez Epsilon, donc pas de qsort

Effectivement, le bubble sort était le plus simple à implémenter, et je ne vise pas un trop grand nombre d'arrêtes traversant chaque ligne, mais si quelqu'un me signal des ralentissements sur la méthode, je pourrais toujours la passer en quick sort.


Il y a d'autres optimisations chez moi pour minimiser le temps de calcul des abscisses des aretes qui traversent la ligne courante

Ce n'est pas juste une simple "moyenne" des deux points ?
Avatar de l’utilisateur
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 6.7%
 
Messages: 5
Inscription: 12 Jan 2022, 22:15
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: 1ère
GitHub: Lauryy06

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude parisse » 15 Jan 2022, 19:25

Je commence par trier les segments par ymin une seule fois.
J'ai une liste de segments secants. Quand je passe d'un y au y+1, je regarde si les segments precedents sont encore secants (si oui on rajoute la pente inverse pour trouver les abscisses, la liste des pentes inverses est stockee au debut), et je rajoute si necessaire de nouveaux segments qui deviennent secants (c'est rapide parce que les segments sont tries). Ca permet d'accelerer par rapport a votre boucle
Code: Tout sélectionner
for (int i=0; i<numberOfPoints; i++) {
      if (((pointsY[i]<y && pointsY[lastPointIndex]>=y) || (pointsY[lastPointIndex]<y && pointsY[i]>=y)) &&
          pointsY[i] != pointsY[lastPointIndex]) {
        switchesX[switches++] = (int) round(pointsX[i]+1.0*(y-pointsY[i])/(pointsY[lastPointIndex]-pointsY[i])*(pointsX[lastPointIndex]-pointsX[i]));
      }
      lastPointIndex=i;
    }
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3499
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude Lauryy06 » 15 Jan 2022, 19:39

Effectivement. Je pense que je vais ajouter ça par acquis de conscience.
Avatar de l’utilisateur
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 6.7%
 
Messages: 5
Inscription: 12 Jan 2022, 22:15
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: 1ère
GitHub: Lauryy06

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude parisse » 15 Jan 2022, 20:01

Pas sur que ca vaille le coup avec un tri en O(n^2), car le tri initial aura n aretes. Et puis ca rend le code plus complexe (et ca mange temporairement de la RAM). Votre code a l'avantage d'etre simple et je pense qu'il doit etre suffisamment rapide au moins jusque n=100, probablement plus car il n'est pas frequent qu'on rencontre plusieurs dizaines d'aretes.
Le precalcul des pentes peut etre interessant par contre.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3499
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude Lionel Debroux » 15 Jan 2022, 21:17

Pour des tailles intermédiaires, un shell sort est souvent un bon compromis entre le bubble sort et le quicksort.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude aybg45 » 16 Jan 2022, 20:58

Bonsoir, je viens de découvrir Upsilon.
Bravo!
petite question, comment mettre des textes sur la liseuse?
Cordialement,
Aymeric
Avatar de l’utilisateur
aybg45
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 48%
 
Messages: 11
Inscription: 03 Oct 2021, 13:23
Localisation: Orléans
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale
YouTube: M'rick
GitHub: aybg

Re: Upsilon : firmware successeur d'Omega par sa communauté

Message non lude critor » 16 Jan 2022, 21:59

Comme pour tous les fichiers d'applications (ROMs d'émulateurs), ça se passe sur la page d'installation d'applications :
https://lauryy06.github.io/Upsilon-External/

Il suffit de cliquer sur le bouton pour ajouter ses propres fichiers.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Précédente

Retourner vers News NumWorks

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 17 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
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.
1624 utilisateurs:
>1609 invités
>10 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
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)