FOLD (Flexible Origami List Datastructure) — это формат файла (с расширением .fold
) для описания моделей оригами : узоры складок, узоры горных долин, сложенные состояния и т. д. В основном файл FOLD может хранить сетку с вершинами , краями , гранями. и связи между ними с дополнительной 2D- или 3D-геометрией, а также топологическим порядком наложения граней, которые геометрически перекрываются. Сетка также может легко хранить дополнительные пользовательские данные. В одном файле FOLD можно даже хранить несколько таких сеток в « фреймах » (но эта возможность пока не поддерживается ни в одном коде).
Этот репозиторий одновременно документирует формат FOLD (который все еще находится на ранней стадии, поэтому его определение развивается) и предоставляет веб -программные инструменты и библиотеки JavaScript для помощи в манипулировании файлами FOLD. FOLD построен на основе JSON (нотация объектов JavaScript), поэтому синтаксические анализаторы доступны практически на всех языках программирования. После анализа формат также служит типичной структурой данных, которую вы захотите представить в своем программном обеспечении. Наши библиотеки также помогают создавать полезные избыточные структуры данных для навигации по сетке.
FOLD по духу похож на формат OBJ (и другие подобные форматы) для хранения 3D-сетей; его основными отличительными особенностями являются легкий синтаксический анализ , легкая расширяемость , способность устранять неоднозначность перекрывающихся граней с помощью порядка наложения, а также способность определять ребра и, следовательно, свойства ребер (например, присвоения гор-долин) и произвольные многогранные комплексы . (Без ребер OBJ не может отличить две грани, имеющие две последовательные вершины, от граней, имеющих общее ребро.) Кроме того, FOLD может поддерживать связи (с 1D-ребрами, но без 2D-граней).
Вот программное обеспечение, поддерживающее формат FOLD, созданное как в рамках этого проекта, так и другими людьми:
Для простых веб-приложений добавьте этот тег в свой HTML: <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(или сохраните локальную копию dist/fold.js
и используйте его). Затем, если вы добавите FOLD = require('fold')
в свой код JavaScript/CoffeeScript, вы сможете получить доступ к библиотеке через FOLD.moduleName.functionName
, например, FOLD.filter.collapseNearbyVertices
.
Для приложений Node просто npm install --save fold
; затем добавьте FOLD = require('fold')
в ваш код JavaScript/CoffeeScript; затем получите доступ к библиотеке через FOLD.moduleName.functionName
, например, FOLD.filter.collapseNearbyVertices
.
API библиотеки FOLD документирует доступные модули и функции для управления объектами FOLD. Если у вас есть файл .fold
, сначала проанализируйте его с помощью JSON.parse(fileContents)
чтобы получить объект FOLD.
Библиотека JavaScript также предоставляет интерфейс командной строки, называемыйfold fold-convert
. Чтобы использовать его, убедитесь, что у вас установлен Node.js, а затем запустите npm install -g fold
из командной строки. Тогда вы можете использовать следующие возможности:
fold-convert -o .fold *.opx
: конвертировать файлы ORIPA .opx
в .fold
.fold-convert --flat-fold -o B.fold A.fold
: Плоский рисунок сгиба A
в сложенную геометрию B
Формат FOLD придумали три человека:
Мы приветствуем ваши отзывы и предложения! Цель состоит в том, чтобы все программное обеспечение для вычислительного оригами поддерживало FOLD как общий формат обмена.