← Tous les projets

Systèmes

Bibliothèque C de maillages

Lecture et écriture OBJ/PLY, CLI, compilée en WebAssembly pour une démo dans le navigateur.

Terminé Sprint S2-S6+S42 · 10 points
En bref, sans jargon pour les non-informaticiensLire le résuméRefermer
Ce que c'est
Une brique de base qui lit les fichiers 3D les plus courants, ceux des logiciels de modélisation et des imprimantes 3D, et en calcule les caractéristiques.
À quoi ça sert
Plusieurs autres projets du portfolio s'appuient dessus : elle doit être rapide et ne jamais planter, même sur un fichier abîmé.
Ce que ça montre
La rigueur sur du code proche de la machine, en langage C : des millions de fichiers abîmés essayés, aucune fuite de mémoire, le même résultat sous Windows, macOS et Linux.

Enseigné en L3 (programmation avancée en C)

Code source

Comment les morceaux tiennent ensemble

Schéma : Fichiers → Lecteurs (lus ligne à ligne) ; libFuzzer → Lecteurs (entrées aléatoires) ; Lecteurs → Maillage (construisent) ; Maillage → meshinfo ; Lecteurs → WebAssembly (compilés par Emscripten). lus ligne à ligne entrées aléatoires construisent compilés par Emscripten Fichiers OBJ, PLY, STL Lecteurs C11, sans dépendance Maillage sommets, triangles, arêtes libFuzzer ASan, UBSan meshinfo ligne de commande WebAssembly démo de la fiche

Essayer lib-c dans le navigateur

Le fichier est lu par la bibliothèque C compilée en WebAssembly : il ne quitte pas votre navigateur.

ou le déposer ici
Exemples :

Technologies

  • C
  • CMake
  • Emscripten
  • Unity
  • Valgrind
  • libFuzzer

Qui fait quoi

C
Les lecteurs OBJ, PLY et STL et la topologie de base (arêtes, bords, χ), en C11, avec des erreurs typées et leur numéro de ligne.
CMake
La compilation et les tests sous GCC, Clang et MSVC ; le même lecteur est repris par les projets topologie, parallèle, Qt et lancer de rayons.
Emscripten
Compile la bibliothèque en WebAssembly pour la démo de la fiche : le fichier ne quitte pas le navigateur.
Unity
Les tests unitaires en C : chaque format, chaque erreur et sa ligne.
Valgrind
Vérifie l'absence de fuite et d'accès mémoire invalide sur les tests et la commande meshinfo.
libFuzzer
Envoie des millions d'entrées aléatoires aux lecteurs, avec ASan et UBSan, à chaque push en CI.

Definition of Done

  • Code relu, diff par diff
  • Tests unitaires et d'intégration verts
  • CI verte sur Linux, Windows et macOS si compilé
  • README, REVIEW.md et DECISIONS.md à jour
  • Textes en français et en anglais
  • Démo déployée et testée sur mobile