Une simulation physique tenue par la position, pas par la vitesse
Ce tissu n'est qu'un maillage de points reliés par des segments. Ce qui le fait vivre, c'est l'intégration de Verlet : je ne stocke jamais la vitesse d'un point, seulement sa position courante et sa position précédente. La vitesse est implicite — c'est la différence entre les deux. À chaque pas, j'avance le point de ce déplacement, puis j'ajoute la gravité. Une méthode « position-based » que je préfère à un couple position / vitesse classique parce qu'elle est nettement plus stable numériquement.
Des contraintes de distance résolues par relaxation
Chaque segment impose une contrainte simple : deux points voisins doivent rester à leur longueur de repos. Après avoir déplacé tous les points, je parcours les contraintes et je corrige chaque paire — si le segment s'est étiré, je rapproche les deux points ; s'il s'est comprimé, je les écarte, à parts égales quand aucun n'est fixe. Corriger une contrainte en dérègle une autre : c'est pourquoi je répète l'opération plusieurs fois par image. Chaque passe supplémentaire rigidifie le tissu et rapproche l'ensemble d'une solution où toutes les contraintes sont à peu près satisfaites en même temps.
Épingler les points fixes, un cas particulier gratuit
La rangée du haut est épinglée : ces points ne bougent jamais, ni sous la gravité ni sous la relaxation. Je les traite comme immobiles, et la résolution d'une contrainte reportée entièrement sur le point libre voisin. Le point que vous attrapez à la souris devient temporairement fixe lui aussi — c'est le même mécanisme. Aucun code spécial : un point épinglé, un point tenu et un point au repos suivent exactement la même logique, avec un simple poids à zéro.
Un pas de temps fixe pour une stabilité prévisible
La physique tourne sur un pas de temps fixe, découplé du rafraîchissement de l'écran : j'accumule le temps réel écoulé et je consomme des pas constants, avec un garde-fou sur leur nombre pour éviter la « spirale de la mort » quand l'onglet a pris du retard. Résultat : le tissu se comporte à l'identique sur un écran 60, 120 ou 144 Hz, se met en pause dès que l'onglet passe en arrière-plan, et ne « explose » pas au premier à-coup. Vous pouvez glisser un point, couper des contraintes au clic droit, réinitialiser d'une touche.
Pourquoi cette rigueur compte pour vos projets
Une simulation de tissu n'a rien d'anecdotique : c'est un système où de petites imprécisions s'accumulent vite et finissent par tout faire diverger. Le choix d'une méthode stable, d'un pas de temps maîtrisé et de garde-fous explicites est exactement la discipline que j'applique à un back-office critique ou à un moteur de calcul métier. Un code qui reste prévisible et robuste sous la charge, plutôt que spectaculaire jusqu'au jour où il déraille — c'est ce que je livre, et ce dont vous gardez la pleine maîtrise.