FOLD (estructura de datos de lista de origami flexible) es un formato de archivo (con extensión .fold
) para describir modelos de origami : patrones de pliegues, patrones de valles de montaña, estados plegados, etc. Principalmente, un archivo FOLD puede almacenar una malla con vértices , aristas y caras. y enlaces entre ellos, con geometría 2D o 3D opcional, además del orden de apilamiento topológico de caras que se superponen geométricamente. Una malla también puede almacenar fácilmente datos adicionales definidos por el usuario. Un archivo FOLD puede incluso almacenar varias mallas de este tipo en " marcos " (pero esta característica aún no es compatible con ningún código).
Este repositorio documenta el formato FOLD (que aún se encuentra en sus primeras etapas, por lo que su definición está evolucionando) y proporciona herramientas de software web y bibliotecas de JavaScript para ayudar en la manipulación de archivos FOLD. FOLD se basa en JSON (notación de objetos JavaScript), por lo que los analizadores están disponibles prácticamente en todos los lenguajes de programación. Una vez analizado, el formato también sirve como la estructura de datos típica que querrás representar en tu software. Nuestras bibliotecas también ayudan a crear estructuras de datos redundantes útiles para navegar por la malla.
FOLD es similar en espíritu al formato OBJ (y otros formatos similares) para almacenar mallas 3D; sus principales características distintivas son la facilidad de análisis , la fácil extensibilidad , la capacidad de eliminar la ambigüedad de las caras superpuestas con el orden de apilamiento y la capacidad de definir aristas y, por tanto, propiedades de las aristas (como asignaciones de montaña-valle) y complejos poliédricos arbitrarios . (Sin aristas, OBJ no puede distinguir entre dos caras que comparten dos vértices consecutivos y caras que comparten una arista). Además, FOLD puede admitir vínculos (con aristas 1D pero sin caras 2D).
Aquí hay un software que admite el formato FOLD, creado tanto dentro de este proyecto como por otras personas:
Para aplicaciones web simples, agregue esta etiqueta a su HTML: <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(o guarde una copia local de dist/fold.js
y usarlo). Luego, si agrega FOLD = require('fold')
a su código JavaScript/CoffeeScript, puede acceder a la biblioteca a través de FOLD.moduleName.functionName
, por ejemplo, FOLD.filter.collapseNearbyVertices
.
Para aplicaciones de Nodo, simplemente npm install --save fold
; luego agregue FOLD = require('fold')
a su código JavaScript/CoffeeScript; luego acceda a la biblioteca a través de FOLD.moduleName.functionName
, por ejemplo, FOLD.filter.collapseNearbyVertices
.
La API de la biblioteca FOLD documenta los módulos y funciones disponibles para manipular objetos FOLD. Si tiene un archivo .fold
, primero analícelo con JSON.parse(fileContents)
para obtener un objeto FOLD.
La biblioteca JavaScript también proporciona una interfaz de línea de comandos llamada fold-convert
. Para usarlo, asegúrese de tener Node.js instalado y luego ejecute npm install -g fold
desde la línea de comando. Entonces puedes utilizar las siguientes funciones:
fold-convert -o .fold *.opx
: convierte archivos ORIPA .opx
a .fold
.fold-convert --flat-fold -o B.fold A.fold
: Patrón de pliegue plano A
en geometría plegada B
El formato FOLD fue inventado por tres personas:
¡Agradecemos sus comentarios y sugerencias! El objetivo es que todo el software de origami computacional admita FOLD como formato de intercambio común.