![](https://i.imgur.com/iF9ANAyt.png)
![](https://i.imgur.com/JekQrr4t.png)
Difficile de tout citer ici mais voici déjà par exemple un des fantastiques ajouts d'Omega. La NumWorks travaille en interne sur des arbres de calcul, mais n'accepte que des valeurs numériques. Omega étendait ces arbres en autorisant également des lettres / inconnues, ce qui nous donnait ainsi un moteur de calcul littéral. De quoi même dériver, du jamais vu à seulement 80€ !
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
Il y avait aussi un tableau périodique des éléments, ou encore 100K de mémoire heap pour tes projets Python au lieu de 32K !
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
![:D :D](./images/smilies/grin.png)
- KhiCAS, une formidable application intégrée de Mathématiques et de Sciences par Bernard Parisse, enseignant-chercheur à l'Université de Grenoble, qui étendait gratuitement les capacités de ta calculatrice au niveau d'une HP Prime. L'application intégrait le moteur de calcul formel GIAC développé pour le logiciel Xcas du même auteur pour des possibilités en calcul encore plus étendues. Étaient également inclus un tableur, une bibliothèque de constantes physiques, un convertisseur d'unités, un tableau périodique des éléments et bien d'autres choses encore. Le tout était en prime programmable en Python, avec une collection de modules importables bien plus étoffée que celle de l'application Python officielle, et surtout ici de façon intégrée, tes scripts Python pouvant en effet faire appel au moteur de calcul formel GIAC par l'intermédiaire du module cas.
- Nofrendo, un émulateur de console de jeux Nintendo NES par zardam
- Peanut-GB, un émulateur de console de jeux Nintendo GameBoy par M4x1m3
- Periodic, un tableau périodique des éléments par M4x1m3
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
Hélas pour cette rentrée 2021, NumWorks a brutalement pris un virage ultra-sécuritaire. Toute mise à jour en version 16.3.0 ou supérieure verrouille définitivement ta calculatrice NumWorks N0110 contre l'installation de tout code tiers, et ce sans même que tu en sois prévenu(e) sur la page concernée. ![Pas bien! :mj:](./images/smilies/sg3agmjg3ag.gif)
En conséquence, nous t'annoncions il y a quelques semaines le cœur serré l'abandon officiel du projet Omega.![:'( :'(](./images/smilies/crying.png)
![Pas bien! :mj:](./images/smilies/sg3agmjg3ag.gif)
En conséquence, nous t'annoncions il y a quelques semaines le cœur serré l'abandon officiel du projet Omega.
![:'( :'(](./images/smilies/crying.png)
Construit à partir du code source de la dernière version d'Omega, Khi reprenait l'intégralité des avantages de ce dernier !
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
Toutefois hors fonctionnalités, Khi apportait divers changements clivants qui n'ont pas été du goût de nombre d'utilisateurs et contributeurs historiques de la communauté Omega :
Le firmware Khi semble ne pas avoir bénéficié d'une ambition autre que celle d'être un moyen de lancer l'application KhiCAS.
Ce n'est pas un problème en soit, c'est un choix qui se défend, mais nombre d'utilisateurs et contributeurs Omega se sont ainsi sentis mis de côté.
- abandon du support du modèle intial NumWorks N0100 de la rentrée 2017
- une interface d'installation en ligne n'ayant absolument rien à voir avec celle qu'Omega proposait
- pas de simulateur en ligne
- pas d'interface en ligne pour choisir les applications à installer ainsi que les fichiers ROMs pour accompagner les applications d'émulation
- et surtout à la différence, pas de disponibilité du projet Khi sur la plateforme GitHub, cassant ainsi les habitudes des nos jeunes contributeurs, notamment le caractère public des contributions ainsi que des suites leur étant apportées ou pas
Le firmware Khi semble ne pas avoir bénéficié d'une ambition autre que celle d'être un moyen de lancer l'application KhiCAS.
Ce n'est pas un problème en soit, c'est un choix qui se défend, mais nombre d'utilisateurs et contributeurs Omega se sont ainsi sentis mis de côté.
![](https://i.imgur.com/RK4Lgq8t.png)
Upsilon qui nous sort donc aujourd'hui en version 1.0 :
- est basé sur le code du firmware Espilon officiel dans sa version 15.5.0 ; toutes les nouveautés annoncées depuis ne pouvant être incluses suite au changement de licence
- apporte bien évidemment entre autres toutes les nouveautés et ajouts développés dans le cadre d'Omega jusqu'à l'arrêt du projet
Mais Upsilon ne se contente absolument pas de cela loin de là ; découvrons ensemble les nouveautés.
Sommaire
1) Nouveautés application Paramètres
Go to top![](https://i.imgur.com/jdZMn8j.png)
![](https://i.imgur.com/GZxmhs6t.png)
![](https://i.imgur.com/DXF5khUt.png)
Outre la taille de police, il permet de désactiver deux choses disponibles par défaut :
- l'auto-complétion qui selon les habitudes de chacun peut perturber la saisie
- la coloration syntaxique qui n'arrange pas forcément tout-le-monde
OK.
![](https://i.imgur.com/Ih5PVHht.png)
![](https://i.imgur.com/WtYC4Qut.png)
Lorsque activé, ce paramètre empêche toute installation d'un firmware officiel Epsilon et donc tout verrouillage définitif de ta calculatrice, enfin !
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
(à noter toutefois que la protection ne fonctionne que si le firmware Upsilon est en fonctionnement ; elle n'est pas active si tu passes par le mode de récupération de la machine)
Toute tentative d'installation d'un firmware non souhaité entraînera une déconnexion immédiate de la calculatrice.
![](https://i.imgur.com/uV7Zwvyt.png)
- autoriser la seule installation de firmwares basés sur Upsilon
- autoriser la seule installation de firmwares basés sur Omega (ce qui inclut Khi selon nos tests)
- n'autoriser aucune installation de firmware
2) Nouveautés application Python
Go to top![](https://i.imgur.com/Df56ltT.png)
![;) ;)](./images/smilies/wink.png)
Déjà avant toute chose. Jusqu'à présent les firmwares disponibles pour ta NumWorks n'offrait que 32K de stockage pour les scripts Python de l'application.
Ce n'est franchement pas beaucoup ; on se sent rapidement à l'étroit notamment lorsque l'on commence à vouloir inclure des images dans ses scripts.
Ce n'est franchement pas beaucoup ; on se sent rapidement à l'étroit notamment lorsque l'on commence à vouloir inclure des images dans ses scripts.
![](https://i.imgur.com/DEVYnyft.png)
.set_pixel(x, y, couleur)
pour allumer un pixel.fill_rect(x, y, largeur, hauteur, couleur)
pour remplir un rectangle.draw_string(..., x, y)
pour écrire
.draw_line(x1, y1, x2, y2, couleur)
pour tracer un segment.Mais c'était bien peu. La réalisation de projets graphiques nécessitait souvent bien d'autres primitives. Tu avais le choix entre :
- Utiliser des scripts Python codant des bibliothèques graphiques les fournissant
- Les écrire toi-même.
Ce n'est pas forcément une mauvaise chose, mais selon le niveau cela pouvait nécessiter une étude mathématique préalable (trigonométrie pour le tracé de cercles, triangulation pour le remplissage de formes...), chose qui pouvait être décourageante.
Et dans tous les cas, la NumWorks souffra par rapport à la plupart de la concurrence d'une mémoire de tas (heap) à l'exécution relativement faible en Python, et un codage non optimal de ces ajouts amputant d'autant la capacité restant pour exécuter le reste du code de ton projet.
![](https://i.imgur.com/ud0geyqt.png)
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
La bibliothèque graphique kandinsky nous rajoute en natif plusieurs méthodes essentielles, et donc sans consommation supplémentaire de heap. Nous avons déjà autour des cercles :
.draw_circle(x, y, rayon, couleur)
pour tracer un cercle.fill_circle(x, y, rayon, couleur)
pour remplir un disque
![](https://i.imgur.com/OVJqmPbt.png)
- Code: Select all
from kandinsky import *
SCREEN_W, SCREEN_H = 320, 222
r = min(SCREEN_W, SCREEN_H) // 2
fill_circle(SCREEN_W - r, r, r, (0, 0, 255))
draw_circle(r, r, r, (255, 0, 0))
![](https://i.imgur.com/bNlkK8nt.png)
.fill_polygon(..., couleur)
.Outre le paramètre de couleur, cette méthode attend une liste de coordonnées :
- Code: Select all
from math import ceil
from kandinsky import *
SCREEN_W, SCREEN_H = 320, 222
def mod(l):
x_min, y_min = l[0]
x_max, y_max = 0, 0
for k in range(len(l)):
x_min = min(x_min, l[k][0])
y_min = min(y_min, l[k][1])
x_max = max(x_max, l[k][0])
y_max = max(y_max, l[k][1])
fx = max(1, (x_max-x_min)/SCREEN_W)
fy = max(1, (y_max-y_min)/SCREEN_H)
for k in range(len(l)):
l[k][0] = ceil((l[k][0]-x_min)/fx)
l[k][1] = ceil((l[k][1]-y_min)/fy)
l = [
[0,200],
[400,200],
[400,250],
[450,150],
[0,200],
[2,62],
[223,236],
[253,222],
[274,236],
[350,184],
[121,2],
[2,62]
]
mod(l)
fill_polygon(l, (255, 0, 0)
![](https://i.imgur.com/i6gNZ6mt.png)
Comparons, il ne semble pas y avoir ce problème avec les méthodes natives équivalentes sur la concurrence TI-83 Premium CE Edition Python ou TI-Nspire CX II :
Voici ci-contre un simple morceau du logo Texas Instruments à cause de cette limitation, avec les écarts de remplissage qui empirent, non seulement des lignes horizontales laissées en blanc mais également plusieurs lignes horizontales tracées hors de la forme.
Mais pire que cela, le tracé ci-contre bloque la calculatrice et force alors à effectuer un reset.
![](https://i.imgur.com/Df2d2Dwt.png)
.palette()
te retournant un dictionnaire avec les différentes couleurs des éléments de l'interface utilisateur Upsilon.Tu as donc de quoi créer des scripts graphiques dont l'affichage s'adaptera automatiquement au thème graphique, notamment pour les utilisateurs qui choisissent d'installer Upsilon avec un thème autre que celui par défaut.
Enfin la bibliothèque ion t'offrait de quoi tester si une touche est enfoncée via sa méthode
C'était quand même bien embêtant dans le cas de projets s'attendant à des appuis sur un large éventail de touches : jeux, menus, ou encore pire éditeur de texte.
Tu te devais donc d'interroger une par une l'intégralité des touches clavier via une bouche, ce qui n'est pas négligeable en temps, et pouvait ainsi te faire rater quelques appuis bref ou quelques subtilités comme des appuis simultanés sur plusieurs touches.
.keydown(code_touche)
.C'était quand même bien embêtant dans le cas de projets s'attendant à des appuis sur un large éventail de touches : jeux, menus, ou encore pire éditeur de texte.
Tu te devais donc d'interroger une par une l'intégralité des touches clavier via une bouche, ce qui n'est pas négligeable en temps, et pouvait ainsi te faire rater quelques appuis bref ou quelques subtilités comme des appuis simultanés sur plusieurs touches.
![](https://i.imgur.com/gXrMLyvt.png)
.get_keys()
qui te retourne la liste de l'ensemble des touches actuellement pressées.![](https://i.imgur.com/QB0pv6Ot.png)
Nous y trouvons plusieurs nouvelles méthodes permettant d'interroger l'état de la batterie directement depuis tes scripts :
.battery()
pour connaître le voltage de la batterie.battery_level()
pour avoir le niveau de la batterie, soit le nombre d'éléments de charge à dessiner dans l'icône en haut à droit de l'écran (de 0 pour l'état critique à 4 pour une batterie chargée).battery_charging()
pour savoir si la batterie est en cours de recharge
Toutefois, même dans le cadre du firmware Khi, ces ajouts n'avaient malheureusement pas été dupliqués pour l'application Python intégrée.
L'application Python intégrée a pourtant un net avantage pour les projets les plus gourmands, avec un heap de 100K lorsque tu utilises les firmware Upsilon, Khi ou Omega, contre seulement 64K via l'application KhiCAS (et pour référence seulement 32K avec le firmware Epsilon officiel).
![](https://i.imgur.com/loH3EBft.png)
![](https://i.imgur.com/sTaoBB2t.png)
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
![](https://i.imgur.com/J9cR9dct.png)
![](https://i.imgur.com/NLqzcVtt.png)
![](https://i.imgur.com/GeNIO4nt.png)
![](https://i.imgur.com/tuxR05Dt.png)
![](https://i.imgur.com/PppqLdAt.png)
- linalg : algèbre linéaire
- optimize : optimisation de fonctions (recherche d'extrema ou points d'inflexion)
- signal : traitement de signal
- special
3) Nouvelle application Liseuse
Go to top![](https://i.imgur.com/TGXDuset.png)
![](https://i.imgur.com/TBbc6xQ.png)
Tu va pouvoir lire tous les romans que tu souhaites sur ta calculatrice.
![](https://i.imgur.com/0fccF5Gt.png)
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
- Code: Select all
Ce fichier est un test pour %r%LaTeX%\r%
$\frac{1}{12}+\sqrt[7]{4}-\floor{n+1}+\ceil{n-1}$
$u_{\phi(n)} = u_{2n+1} = (-1)^{2n+1} = -1$
$\times\forall\pm\partial\exists\div\infty\approx\neq\equiv\leq\geq$
$\leftarrow\uparrow\rightarrow\downarrow\leftrightarrow\updownarrow\Leftarrow\Uparrow\Rightarrow\Downarrow$
$\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi$
$o\pi\rho\sigma\tau\upsilon\phi\chi\psi\omega$
$\Alpha\Beta\Gamma\Delta\Epsilon\Zeta\Eta\Theta\Iota\Kappa\Lambda\Mu\Nu\Xi$
$\Omicron\Pi\Rho\Sigma\Tau\Upsilon\Phi\Chi\Psi\Omega$
La porte est donc maintenant également grande ouverte à tes fichiers de documents scientifiques : formulaires, cours, exercices corrigés, annales et bien d'autres !
![:D :D](./images/smilies/grin.png)
Conclusion
Go to topAvec Upsilon l'esprit du projet Omega est clairement de retour.
Nous sommes heureux de retrouver un bouillonnement d'idées et formidables nouveautés comparable à ce dont a bénéficié Omega !![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
Un grand merci et bravo à Lauryy06, lolocomotive, ainsi qu'à tous les contributeurs et testeurs, entre autres :![Favorite :favorite:](./images/smilies/favorite.png)
Nous sommes heureux de retrouver un bouillonnement d'idées et formidables nouveautés comparable à ce dont a bénéficié Omega !
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
Un grand merci et bravo à Lauryy06, lolocomotive, ainsi qu'à tous les contributeurs et testeurs, entre autres :
![Favorite :favorite:](./images/smilies/favorite.png)
- @Yaya.Cout (1er contributeur + divers fix assez importants)
- @dl11 (protection usb)
- @Mino#1289 (co-auteur de la liseuse)