FOLD (Flexible Origami List Datastructure) é um formato de arquivo (com extensão .fold
) para descrever modelos de origami : padrões de vinco, padrões de vale-montanha, estados dobrados, etc. Principalmente, um arquivo FOLD pode armazenar uma malha com vértices , arestas , faces e links entre eles, com geometria 2D ou 3D opcional, além da ordem de empilhamento topológico de faces que se sobrepõem geometricamente. Uma malha também pode armazenar facilmente dados adicionais definidos pelo usuário. Um arquivo FOLD pode até armazenar várias dessas malhas em " quadros " (mas esse recurso ainda não é suportado em nenhum código).
Este repositório documenta o formato FOLD (que ainda está em estágios iniciais, portanto sua definição está evoluindo) e fornece ferramentas de software web e bibliotecas JavaScript para auxiliar na manipulação de arquivos FOLD. FOLD é construído em JSON (JavaScript Object Notation), portanto, os analisadores estão disponíveis em essencialmente todas as linguagens de programação. Depois de analisado, o formato também serve como a estrutura de dados típica que você deseja representar para dobrar em seu software. Nossas bibliotecas também ajudam a construir estruturas de dados redundantes úteis para navegar na malha.
FOLD é semelhante em espírito ao formato OBJ (e outros formatos semelhantes) para armazenar malhas 3D; suas principais características distintivas são análise fácil , extensibilidade fácil , a capacidade de desambiguar faces sobrepostas com ordem de empilhamento e a capacidade de definir arestas e, portanto, propriedades de arestas (como atribuições de vales de montanha) e complexos poliédricos arbitrários . (Sem arestas, o OBJ não consegue distinguir entre duas faces que compartilham dois vértices consecutivos e faces que compartilham uma aresta.) Além disso, FOLD pode suportar ligações (com arestas 1D, mas sem faces 2D).
Aqui está o software que suporta o formato FOLD, desenvolvido neste projeto e por outras pessoas:
Para aplicativos web simples, adicione esta tag ao seu HTML: <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(ou salve uma cópia local de dist/fold.js
e use isso). Então, se você adicionar FOLD = require('fold')
ao seu código JavaScript/CoffeeScript, poderá acessar a biblioteca via FOLD.moduleName.functionName
, por exemplo, FOLD.filter.collapseNearbyVertices
.
Para aplicativos Node, basta npm install --save fold
; em seguida, adicione FOLD = require('fold')
ao seu código JavaScript/CoffeeScript; em seguida, acesse a biblioteca via FOLD.moduleName.functionName
, por exemplo, FOLD.filter.collapseNearbyVertices
.
A API da biblioteca FOLD documenta os módulos e funções disponíveis para manipulação de objetos FOLD. Se você tiver um arquivo .fold
, primeiro analise-o com JSON.parse(fileContents)
para obter um objeto FOLD.
A biblioteca JavaScript também fornece uma interface de linha de comando chamada fold-convert
. Para usá-lo, certifique-se de ter o Node.js instalado e execute npm install -g fold
na linha de comando. Então você pode usar os seguintes recursos:
fold-convert -o .fold *.opx
: Converta arquivos ORIPA .opx
em .fold
.fold-convert --flat-fold -o B.fold A.fold
: padrão de vinco de dobra plana A
na geometria dobrada B
O formato FOLD foi inventado por três pessoas:
Agradecemos seus comentários e sugestões! O objetivo é que todos os softwares de origami computacional suportem o FOLD como um formato de intercâmbio comum.