π
<-

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

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

Unread postby 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...
User avatar
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 6.7%
 
Posts: 5
Joined: 12 Jan 2022, 22:15
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: 1ère
GitHub: Lauryy06

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

Unread postby parisse » 15 Jan 2022, 17:27

Lauryy06 wrote: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?
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 84.8%
 
Posts: 3638
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby 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: Select all
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: Select all
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: Select all
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 ?
User avatar
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 6.7%
 
Posts: 5
Joined: 12 Jan 2022, 22:15
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: 1ère
GitHub: Lauryy06

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

Unread postby 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: Select all
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;
    }
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 84.8%
 
Posts: 3638
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby Lauryy06 » 15 Jan 2022, 19:39

Effectivement. Je pense que je vais ajouter ça par acquis de conscience.
User avatar
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 6.7%
 
Posts: 5
Joined: 12 Jan 2022, 22:15
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: 1ère
GitHub: Lauryy06

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

Unread postby 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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 84.8%
 
Posts: 3638
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby 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.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6863
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

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

Unread postby 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
User avatar
aybg45
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 48%
 
Posts: 11
Joined: 03 Oct 2021, 13:23
Location: Orléans
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale
YouTube: M'rick
GitHub: aybg

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

Unread postby 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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47%
 
Posts: 41934
Images: 15609
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Previous

Return to News NumWorks

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
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 !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
811 utilisateurs:
>786 invités
>16 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)