Upsilon : firmware successeur d'Omega par sa communauté !
29 posts
• Page 3 of 3 • 1, 2, 3
Re: Upsilon : firmware successeur d'Omega par sa communauté
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...
-
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)- Posts: 5
- Joined: 12 Jan 2022, 22:15
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: 1ère
- GitHub: Lauryy06
Re: Upsilon : firmware successeur d'Omega par sa communauté
Lauryy06 wrote:J'ai résolu le problème des lignes blanches avec fill_polygon (qui n'est plus limité à 32 points maintenant) :
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?
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3638
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Upsilon : firmware successeur d'Omega par sa communauté
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 ?
-
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)- Posts: 5
- Joined: 12 Jan 2022, 22:15
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: 1ère
- GitHub: Lauryy06
Re: Upsilon : firmware successeur d'Omega par sa communauté
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
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;
}
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3638
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Upsilon : firmware successeur d'Omega par sa communauté
Effectivement. Je pense que je vais ajouter ça par acquis de conscience.
-
Lauryy06Premium
Niveau 2: MI2 (Membre Initié)- Posts: 5
- Joined: 12 Jan 2022, 22:15
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: 1ère
- GitHub: Lauryy06
Re: Upsilon : firmware successeur d'Omega par sa communauté
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.
Le precalcul des pentes peut etre interessant par contre.
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3638
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Upsilon : firmware successeur d'Omega par sa communauté
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.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
-
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6863
- Joined: 23 Dec 2009, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: -
- GitHub: debrouxl
Re: Upsilon : firmware successeur d'Omega par sa communauté
Bonsoir, je viens de découvrir Upsilon.
Bravo!
petite question, comment mettre des textes sur la liseuse?
Cordialement,
Aymeric
Bravo!
petite question, comment mettre des textes sur la liseuse?
Cordialement,
Aymeric
-
aybg45
Niveau 3: MH (Membre Habitué)- Posts: 11
- Joined: 03 Oct 2021, 13:23
- Location: Orléans
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Terminale
- YouTube: M'rick
- GitHub: aybg
Re: Upsilon : firmware successeur d'Omega par sa communauté
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.
https://lauryy06.github.io/Upsilon-External/
Il suffit de cliquer sur le bouton pour ajouter ses propres fichiers.
-
critorAdmin
Niveau 19: CU (Créateur Universel)- Posts: 41934
- Images: 15609
- Joined: 25 Oct 2008, 00:00
- Location: Montpellier
- Gender:
- Calculator(s):→ MyCalcs profile
- YouTube: critor3000
- Twitter: critor2000
- GitHub: critor
29 posts
• Page 3 of 3 • 1, 2, 3
Who is online
Users browsing this forum: ClaudeBot [spider] and 4 guests