Composer une image,
une expression à la fois.
Calculapix applique une formule à chaque point d’une image. La pile permet de construire ces formules en notation polonaise inverse : les opérandes d’abord, l’opération ensuite.
Une première image
- Appuyez sur x , puis y : deux expressions s’ajoutent à la pile.
-
Appuyez sur
×
. Le sommet devient
x × y. -
Ouvrez
Fonctions
et appuyez sur
sin
: vous obtenez
sin(x × y). - Choisissez Gris ou Spectre pour explorer le même champ de valeurs.
Un exemple initial est déjà présent. Il reste en dessous de vos nouvelles expressions. Les exemples du panneau « Un point de départ » s’ajoutent eux aussi à la pile.
Manipuler la pile
| Touche | Action |
|---|---|
| Entrer | Empile le nombre saisi ; sans saisie, duplique le sommet. |
| Dupliquer | Ajoute une copie de l’expression au sommet. |
| Éclater |
Conserve la formule, puis ajoute ses composants directs.
a − b
donne, du bas vers le haut :
a − b
,
a
,
b
.
|
| Échanger | Échange les deux expressions au sommet. |
| ↑ Rotation | Les lignes montent : le sommet passe au fond, le deuxième élément devient sommet. |
| ↓ Rotation | Les lignes descendent : le fond passe au sommet. C’est l’opération inverse. |
| Retirer | Supprime le sommet. |
| ↶ / ↷ | Annule ou rétablit une modification (100 états). |
Une opération binaire utilise l’avant-dernier élément comme
a
et le sommet comme
b
. Ainsi, saisir 3, Entrer, 2, puis − produit
3 − 2
.
Coordonnées et constantes
L’axe x va vers la droite et y vers le haut. Le domaine initial est [−1,1] × [−1,1]. Les coordonnées sont prises au centre des pixels. Le rayon r vaut √(x²+y²) ; θ est en radians entre 0 inclus et 2π exclu, avec zéro à droite et le sens trigonométrique. À l’origine, θ vaut 0 par convention.
Les constantes sont π, e, φ (nombre d’or) et ε = 2⁻⁵², la constante
Number.EPSILON
de JavaScript. Les nombres complexes ne sont pas pris en charge. ε n’est pas la précision du GPU.
Valeurs et couleurs
Le minimum et le maximum sont calculés sur tous les pixels finis à la résolution choisie. Ils deviennent respectivement noir et blanc, ou bleu et rouge en mode Spectre. Une image constante est représentée au gris médian. Les valeurs NaN et infinies sont transparentes : le damier les rend visibles.
Changer la résolution peut changer les extrema. Par exemple, avec 2048 pixels sur [−1,1], les valeurs extrêmes de 1/x sont −2048 et +2048. La sonde affiche la valeur numérique du pixel, avant sa conversion en couleur.
Les fonctions suivent les réels de JavaScript :
sqrt(−1)
est invalide,
1/0
est infini et
0⁰ = 1
. Le symbole % calcule le reste signé.
Deux logiques différentes
Booléens : les seize fonctions prennent deux expressions. 0, −0 et NaN sont faux ; les autres nombres sont vrais. La sortie vaut 0 ou 1. Les comparateurs sont dans le même groupe.
16 bits : les expressions réelles ordinaires sont normalisées séparément, puis arrondies sur 0…65535. En revanche, un résultat déjà issu d’une opération 16 bits conserve ses mots entiers exacts : aucune renormalisation entre deux opérations 16 bits. La fonction s’applique aux mots des pixels correspondants. Ces mots sont conservés en mémoire ; leur division par 65535 sert à l’affichage et aux fonctions arithmétiques. Un pixel invalide dans une entrée rend la sortie transparente. Une transformation arithmétique produit de nouveau une expression réelle, qui sera normalisée lors de sa prochaine conversion en 16 bits.
Cette distinction évite, par exemple, de remplacer les valeurs 8 et 9 d’un résultat par 0 et 65535 avant une nouvelle opération. Les futurs imports d’images 16 bits devront conserver les mots bruts, sans correction de couleur, rééchantillonnage ni changement implicite de grille. L’import d’images n’est pas encore disponible.
Les projets de la première version conservent explicitement leur ancienne renormalisation pour reproduire les images sauvegardées ; un message le signale à l’ouverture. Les nouvelles opérations utilisent la conservation des mots.
Les seize fonctions comprennent les constantes, projections, négations, AND, OR, XOR et leurs compléments. Les tables logiques attendent deux opérandes ; les conversions Binaire et normaliser16 ne concernent que le sommet.
Sur téléphone et au clavier
Le panneau s’adapte à la largeur disponible ; « Déplier » montre la pile complète. Maintenez le doigt sur l’image puis déplacez-le pour inspecter les valeurs. Le plein écran permet de pincer pour zoomer, puis de déplacer l’image. La disponibilité du plein écran dépend du navigateur.
Sur ordinateur, survolez l’image. Hors d’un champ de saisie, les chiffres et les signes + − * / ^ % actionnent la calculatrice. Entrée empile ; Ctrl/Cmd Z annule, Ctrl/Cmd Maj Z rétablit. Dans le champ numérique, vous pouvez saisir par exemple
−0,5
(avec un tiret standard) ou
1e-6
.
Nouveautés 0.4
Depuis 0.4.2, l’aperçu conserve le rapport natif et se réduit pour rester visible intégralement. En plein écran, « Tout voir » rétablit l’image entière après un zoom manuel. Les dimensions de calcul et d’export restent inchangées.
L’image reste visible pendant le défilement. En 3D, le bouton ⚙ Paramètres 3D ouvre les onglets Vue, Relief, Matière et Lumière au-dessus de la calculatrice. La molette et le pincement changent la distance de caméra, avec une focale fixe.
Les programmes affectés aux touches sont conservés automatiquement dans le registre local du navigateur. Cela ne remplace pas un export pour changer de machine. Les raccourcis Centrer et Coordonnées pixels préparent les quatre bornes ; Appliquer les valide ensemble.
Sur téléphone, l’appui long tolère les petits mouvements du doigt. Le bouton Sonder propose un mode direct : touchez puis déplacez le doigt sur l’image. Désactivez-le pour faire défiler la page depuis l’image.
Le groupe 16 bits propose désormais décalerGauche, décalerDroite, tournerGauche et tournerDroite : empilez le champ puis le nombre de bits. Les rotations sont circulaires ; les décalages remplissent par zéro.
Photo PNG 3D capture le canevas avec son éclairage. Les grilles fixes vont jusqu’à 2048², soit environ 8,4 millions de triangles ; le mode adaptatif reste préférable pour la fluidité. Ces capacités restent dépendantes de la mémoire et du GPU.
Domaines propres aux opérandes
Chaque expression garde son cadrage. Le sélecteur de domaine permet de modifier le sommet ou les valeurs par défaut des prochaines expressions. Une opération combine les pixels aux mêmes positions relatives en conservant les cadrages de ses enfants. Recadrer ensuite son résultat applique le nouveau domaine à l’ensemble de cette expression.
En programme,
-10 xmin
modifie l’expression sous le nombre, tandis que
-10 xminDéfaut
règle les expressions à venir. Il n’y a pas de modification globale implicite de la pile.
Valeurs réelles et mots binaires
Binaire
transforme directement le sommet en mots de 16 bits : 3 devient
0000000000000011
. La partie décimale est tronquée ; les valeurs hors de 0…65535 deviennent invalides.
normaliser16
est une autre conversion : elle étend le minimum et le maximum sur 0…65535 avant arrondi.
Les opérations bit à bit conservent exactement les mots des images 16 bits et des résultats binaires précédents. Une entrée réelle est normalisée séparément. La sonde affiche le mot et ses bits. Un pixel invalide dans une entrée rend le résultat transparent.
Charger une image
Choisissez une URL ou un fichier local. Les PNG marqués par Calculapix indiquent leur encodage. Pour les autres fichiers, choisissez explicitement Image ordinaire, PNG gris 16 bits ou Cyclonium RGB. Un choix incompatible avec le marquage est refusé.
Les imports gris16 et Cyclonium lisent les échantillons natifs sans conversion Canvas. Les images ordinaires sont converties en luminance. Les images combinées doivent avoir les mêmes dimensions : aucun redimensionnement silencieux. Une formule associée est évaluée sur cette grille.
Les serveurs distants doivent autoriser le chargement CORS. Le JSON conserve URL, dimensions, encodage et empreinte SHA-256, sans pixels. Pour un fichier local, sélectionnez-le de nouveau avant d’ouvrir le JSON lors d’une autre session. Une ressource modifiée est signalée.
Sauvegarder et exporter
Sauvegarder propose le sommet uniquement ou le projet complet. Le format JSON version 4 conserve les expressions, domaines, paramètres et réglages nécessaires ; les versions 1, 2 et 3 restent lisibles. Le projet complet conserve aussi les programmes. Ouvrir remplace l’état et reste annulable. La sauvegarde est manuelle : faites-la avant de fermer l’onglet.
| Export | Contenu |
|---|---|
| PNG visuel | Apparence 2D et palette, 8 bits par canal, transparence. |
| PNG gris 16 bits | Mots natifs pour un champ binaire ; normalisation des valeurs réelles. |
| PNG Cyclonium | Les mêmes 16 bits encodés en RGB, avec marquage et transparence. |
| BMP historique | Encodage Cyclonium RGB 24 bits, sans marquage ni transparence. Refus si pixels invalides. |
L’ordre corrigé des quatre bits faibles du canal bleu est 9, 6, 3, 0 . Ces exports enregistrent le champ 2D à sa résolution de calcul, indépendamment du maillage 3D.
Programmes et métacalculette
Un programme applique une séquence à la pile courante. Enregistrez vos commandes, ou saisissez-les dans l’éditeur, puis affectez-les aux touches A…E et a…e. L’exécution normale est transactionnelle : une erreur annule l’ensemble. « Un pas » permet de suivre chaque instruction ; « Arrêter / annuler » restaure l’état de départ.
-10 xminDéfaut
10 xmaxDéfaut
-10 yminDéfaut
10 ymaxDéfaut
r θ %
spectre
Les chaînes sont entre guillemets doubles ; # commence un commentaire.
"https://exemple.org/relief.png" chargerGris16
charge une ressource.
appel:A
appelle une touche programmée ;
appel:e
appelle la touche e, tandis que
e
reste la constante d’Euler.
« Recette du sommet » reconstruit son expression, ses cadrages, paramètres et références d’images. Le texte peut être exporté puis importé. Les gestes libres de caméra ne sont pas enregistrés en instructions ; leur orientation est sauvegardée dans le JSON. Cette version ne propose ni boucle ni branchement conditionnel.
Paramètres nommés
Définissez une valeur et un nom dans le panneau Paramètres. Cliquer sur ce nom empile une référence : changer sa valeur actualise toutes les expressions qui l’utilisent.
12 "fréquence" définirParamètre
r "fréquence" paramètre * sin
Explorer en 3D
Passez en vue 3D pour représenter le champ en relief. La hauteur peut être normalisée ou brute ; altitude, caméra, lumière ambiante et diffuse, direction d’éclairage, brillance et netteté des reflets sont réglables. La matière utilise la palette ou une couleur unie.
Glissez pour orienter librement. Un relâchement rapide lance une rotation ; un geste lent ou une pause avant de lâcher laisse l’objet en place. Un nouveau contact interrompt l’inertie. L’amortissement règle le freinage ; zéro entretient la rotation. Déplacez avec Maj ou le bouton droit, ou deux doigts ; zoomez avec la molette ou le pincement.
Les curseurs de précision proposent un mode relatif et un mode poursuite, avec saisie numérique. Le maillage automatique est réduit pendant les mouvements et adapté aux temps de rendu. Une grille fixe est également disponible. Cette réduction n’altère ni les valeurs calculées ni les images exportées ; les zones invalides restent des trous.
Moteurs et limites
WebGL 2 accélère les expressions compatibles. JavaScript traite les opérations exigeant la référence numérique et prend le relais si le GPU est indisponible ou si le contrôle ponctuel révèle un écart. Le diagnostic sous le domaine explique le choix.
r % θ
est compatible avec la traduction GPU, mais le reste signé est discontinu et les différences float32/float64 peuvent provoquer un repli. Le contrôle ponctuel ne garantit pas l’égalité de tous les pixels flottants.
31 tests automatiques passent, dont les 65 536 mots de chaque codec de données. Les shaders 3D ont été compilés dans un contexte logiciel. Les gestes, la fluidité et le comportement des navigateurs restent à confirmer sur vos appareils.
Images avec contexte et lecteur indépendant
Les PNG 0.4 comportent l’expression, la recette, le JSON du sommet, les paramètres et les conventions de génération dans un texte UTF-8. L’encodage reste marqué comme avant. Ces données sont lisibles par les destinataires du PNG ; un autre logiciel peut les supprimer lors d’un réenregistrement. Les BMP restent sans contexte.
Ouvrir le lecteur indépendant pour lire les pixels, inspecter les métadonnées, régénérer un champ 2D, inverser les mots 16 bits ou permuter les canaux R/G d’un aperçu RGBA. Un PNG 0.3 reste lisible, mais sa formule absente ne peut pas être reconstruite. Les URL nécessaires à une régénération doivent rester accessibles.
Le lecteur peut extraire le JSON d’une photo 3D pour rouvrir la scène dans Calculapix ; il ne régénère pas lui-même le rendu 3D. La pile principale reste scalaire : une image ordinaire y est convertie en luminance. Une future pile couleur demandera un type RGBA explicite.
Documentation du projet
Le projet contient le README, les décisions, l’architecture, la référence des programmes, les résultats de validation et les tests. Aucun module externe n’est chargé. HTTPS ou localhost est nécessaire ; l’ouverture directe des fichiers HTML ne convient pas aux modules et Workers.