FOLD (Flexible Origami List Datastructure) est un format de fichier (avec extension .fold
) permettant de décrire des modèles d'origami : motifs de plis, motifs de montagnes et de vallées, états pliés, etc. Principalement, un fichier FOLD peut stocker un maillage avec des sommets , des arêtes , des faces. , et des liens entre eux, avec une géométrie 2D ou 3D facultative, ainsi que l' ordre d'empilement topologique des faces qui se chevauchent géométriquement. Un maillage peut également facilement stocker des données supplémentaires définies par l'utilisateur. Un fichier FOLD peut même stocker plusieurs de ces maillages dans des " frames " (mais cette fonctionnalité n'est encore prise en charge dans aucun code).
Ce référentiel documente à la fois le format FOLD (qui en est encore à ses débuts donc sa définition évolue) et fournit des outils logiciels Web et des bibliothèques JavaScript pour faciliter la manipulation des fichiers FOLD. FOLD est construit sur JSON (JavaScript Object Notation), les analyseurs sont donc disponibles dans pratiquement tous les langages de programmation. Une fois analysé, le format sert également de structure de données typique que vous souhaiterez représenter dans votre logiciel. Nos bibliothèques aident également à créer des structures de données redondantes utiles pour naviguer dans le maillage.
FOLD est similaire dans son esprit au format OBJ (et autres formats similaires) pour stocker des maillages 3D ; ses principales caractéristiques distinctives sont une analyse facile , une extensibilité facile , la capacité de lever l'ambiguïté des faces qui se chevauchent avec l'ordre d'empilement et la capacité de définir des arêtes et donc des propriétés d'arête (telles que les affectations montagne-vallée) et des complexes polyédriques arbitraires . (Sans arêtes, OBJ ne peut pas faire la distinction entre deux faces partageant deux sommets consécutifs et des faces partageant une arête.) De plus, FOLD peut prendre en charge les liens (avec des arêtes 1D mais pas de faces 2D).
Voici un logiciel supportant le format FOLD, construit à la fois dans le cadre de ce projet et par d'autres personnes :
Pour les applications Web simples, ajoutez cette balise à votre HTML : <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(ou enregistrez une copie locale de dist/fold.js
et utilisez-le). Ensuite, si vous ajoutez FOLD = require('fold')
à votre code JavaScript/CoffeeScript, vous pouvez accéder à la bibliothèque via FOLD.moduleName.functionName
, par exemple FOLD.filter.collapseNearbyVertices
.
Pour les applications Node, npm install --save fold
; puis ajoutez FOLD = require('fold')
à votre code JavaScript/CoffeeScript ; puis accédez à la bibliothèque via FOLD.moduleName.functionName
, par exemple FOLD.filter.collapseNearbyVertices
.
L'API de la bibliothèque FOLD documente les modules et fonctions disponibles pour manipuler les objets FOLD. Si vous avez un fichier .fold
, analysez-le d'abord avec JSON.parse(fileContents)
pour obtenir un objet FOLD.
La bibliothèque JavaScript fournit également une interface de ligne de commande appeléefold fold-convert
. Pour l'utiliser, assurez-vous que Node.js est installé, puis exécutez npm install -g fold
à partir de la ligne de commande. Ensuite, vous pouvez utiliser les fonctionnalités suivantes :
fold-convert -o .fold *.opx
: Convertissez les fichiers ORIPA .opx
en .fold
.fold-convert --flat-fold -o B.fold A.fold
: motif de pli plat A
en géométrie pliée B
Le format FOLD a été inventé par trois personnes :
Nous apprécions vos commentaires et suggestions! L'objectif est que tous les logiciels d'origami informatique prennent en charge FOLD comme format d'échange commun.