FOLD (Struktur Data Daftar Origami Fleksibel) adalah format file (dengan ekstensi .fold
) untuk mendeskripsikan model origami : pola lipatan, pola lembah gunung, keadaan terlipat, dll. Terutama, file FOLD dapat menyimpan jaring dengan simpul , tepi , wajah , dan tautan di antara keduanya, dengan geometri 2D atau 3D opsional, ditambah urutan susunan topologi permukaan yang tumpang tindih secara geometris. Mesh juga dapat dengan mudah menyimpan data tambahan yang ditentukan pengguna. Satu file FOLD bahkan dapat menyimpan beberapa jerat seperti itu dalam " frame " (tetapi fitur ini belum didukung dalam kode apa pun).
Repositori ini mendokumentasikan format FOLD (yang masih dalam tahap awal sehingga definisinya terus berkembang) dan menyediakan perangkat lunak web dan pustaka JavaScript untuk membantu manipulasi file FOLD. FOLD dibangun di atas JSON (JavaScript Object Notation) sehingga parser pada dasarnya tersedia di semua bahasa pemrograman. Setelah diurai, format tersebut juga berfungsi sebagai struktur data umum yang Anda inginkan untuk mewakili lipatan dalam perangkat lunak Anda. Perpustakaan kami juga membantu membangun struktur data redundan yang berguna untuk menavigasi mesh.
FOLD memiliki semangat yang mirip dengan format OBJ (dan format serupa lainnya) untuk menyimpan jerat 3D; fitur pembeda utamanya adalah penguraian yang mudah , ekstensibilitas yang mudah , kemampuan untuk membedakan permukaan yang tumpang tindih dengan urutan susun, dan kemampuan untuk menentukan tepi dan dengan demikian properti tepi (seperti penugasan lembah gunung) dan kompleks polihedral yang berubah-ubah . (Tanpa tepi, OBJ tidak dapat membedakan antara dua permukaan yang berbagi dua simpul berturut-turut dari permukaan yang berbagi tepi.) Selain itu, FOLD dapat mendukung hubungan (dengan tepi 1D namun tanpa permukaan 2D).
Berikut adalah perangkat lunak yang mendukung format FOLD, yang dibuat dalam proyek ini dan oleh orang lain:
Untuk aplikasi web sederhana, tambahkan tag ini ke HTML Anda: <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(atau simpan salinan lokal dist/fold.js
dan gunakan itu). Kemudian, jika Anda menambahkan FOLD = require('fold')
ke kode JavaScript/CoffeeScript, Anda dapat mengakses perpustakaan melalui FOLD.moduleName.functionName
, misalnya, FOLD.filter.collapseNearbyVertices
.
Untuk aplikasi Node, cukup npm install --save fold
; lalu tambahkan FOLD = require('fold')
ke kode JavaScript/CoffeeScript Anda; lalu akses perpustakaan melalui FOLD.moduleName.functionName
, misalnya FOLD.filter.collapseNearbyVertices
.
API perpustakaan FOLD mendokumentasikan modul dan fungsi yang tersedia untuk memanipulasi objek FOLD. Jika Anda memiliki file .fold
, parsing terlebih dahulu dengan JSON.parse(fileContents)
untuk mendapatkan objek FOLD.
Pustaka JavaScript juga menyediakan antarmuka baris perintah yang disebut fold-convert
. Untuk menggunakannya, pastikan Anda telah menginstal Node.js, lalu jalankan npm install -g fold
dari baris perintah. Kemudian Anda dapat menggunakan fitur-fitur berikut:
fold-convert -o .fold *.opx
: Konversi file ORIPA .opx
menjadi .fold
.fold-convert --flat-fold -o B.fold A.fold
: Pola lipatan datar A
menjadi geometri terlipat B
Format FOLD ditemukan oleh tiga orang:
Kami menyambut masukan dan saran Anda! Tujuannya adalah agar semua perangkat lunak dalam origami komputasi mendukung FOLD sebagai format pertukaran umum.