FOLD (Flexible Origami List Datastructure) ist ein Dateiformat (mit der Erweiterung .fold
) zur Beschreibung von Origami-Modellen : Faltmuster, Berg-Tal-Muster, gefaltete Zustände usw. Eine FOLD-Datei kann hauptsächlich ein Netz mit Scheitelpunkten , Kanten und Flächen speichern und Verbindungen zwischen ihnen, mit optionaler 2D- oder 3D-Geometrie sowie der topologischen Stapelreihenfolge von Flächen, die sich geometrisch überlappen. Ein Mesh kann auch problemlos zusätzliche benutzerdefinierte Daten speichern. Eine FOLD-Datei kann sogar mehrere solcher Netze in „ Frames “ speichern (diese Funktion wird jedoch noch in keinem Code unterstützt).
Dieses Repository dokumentiert sowohl das FOLD-Format (das sich noch in einem frühen Stadium befindet, sodass sich seine Definition weiterentwickelt) und stellt Web -Softwaretools und JavaScript-Bibliotheken bereit, die bei der Bearbeitung von FOLD-Dateien helfen. FOLD basiert auf JSON (JavaScript Object Notation), sodass Parser in praktisch allen Programmiersprachen verfügbar sind. Nach der Analyse dient das Format auch als typische Datenstruktur, die Sie in Ihrer Software für die Darstellung von Faltungen verwenden möchten. Unsere Bibliotheken helfen auch beim Aufbau nützlicher redundanter Datenstrukturen für die Navigation im Netz.
FOLD ähnelt im Geiste dem OBJ-Format (und anderen ähnlichen Formaten) zum Speichern von 3D-Netzen. Seine Hauptunterscheidungsmerkmale sind einfaches Parsen , einfache Erweiterbarkeit , die Fähigkeit, überlappende Flächen anhand der Stapelreihenfolge eindeutig zu unterscheiden, und die Fähigkeit, Kanten und damit Kanteneigenschaften (z. B. Berg-Tal-Zuordnungen) und beliebige polyedrische Komplexe zu definieren. (Ohne Kanten kann OBJ nicht zwischen zwei Flächen, die zwei aufeinanderfolgende Scheitelpunkte teilen, und Flächen, die eine Kante teilen, unterscheiden.) Darüber hinaus kann FOLD Verknüpfungen unterstützen (mit 1D-Kanten, aber ohne 2D-Flächen).
Hier ist Software, die das FOLD-Format unterstützt und sowohl im Rahmen dieses Projekts als auch von anderen erstellt wurde:
Fügen Sie für einfache Web-Apps dieses Tag zu Ihrem HTML hinzu: <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(oder speichern Sie eine lokale Kopie von dist/fold.js
und verwenden Sie das). Wenn Sie dann FOLD = require('fold')
zu Ihrem JavaScript-/CoffeeScript-Code hinzufügen, können Sie über FOLD.moduleName.functionName
auf die Bibliothek zugreifen, z. B. FOLD.filter.collapseNearbyVertices
.
Für Node-Apps einfach npm install --save fold
; Fügen Sie dann FOLD = require('fold')
zu Ihrem JavaScript/CoffeeScript-Code hinzu; Greifen Sie dann über FOLD.moduleName.functionName
auf die Bibliothek zu, z. B. FOLD.filter.collapseNearbyVertices
.
Die FOLD-Bibliotheks-API dokumentiert die verfügbaren Module und Funktionen zum Bearbeiten von FOLD-Objekten. Wenn Sie eine .fold
Datei haben, analysieren Sie diese zunächst mit JSON.parse(fileContents)
um ein FOLD-Objekt zu erhalten.
Die JavaScript-Bibliothek bietet außerdem eine Befehlszeilenschnittstelle namens fold-convert
. Um es zu verwenden, stellen Sie sicher, dass Node.js installiert ist, und führen Sie dann npm install -g fold
über die Befehlszeile aus. Dann können Sie die folgenden Funktionen nutzen:
fold-convert -o .fold *.opx
: ORIPA .opx
Dateien in .fold
konvertieren.fold-convert --flat-fold -o B.fold A.fold
: Flaches Falten-Faltenmuster A
in gefaltete Geometrie B
Das FOLD-Format wurde von drei Personen erfunden:
Wir freuen uns über Ihr Feedback und Ihre Vorschläge! Das Ziel besteht darin, dass die gesamte Software im Computer-Origami FOLD als gemeinsames Austauschformat unterstützt.