FOLD (灵活折纸列表数据结构)是一种用于描述折纸模型的文件格式(扩展名为.fold
):折痕图案、山谷图案、折叠状态等。FOLD 文件主要可以存储带有顶点、边、面的网格,以及它们之间的链接,具有可选的 2D 或 3D 几何形状,以及几何重叠的面的拓扑堆叠顺序。网格还可以轻松存储其他用户定义的数据。一个 FOLD 文件甚至可以在“框架”中存储多个此类网格(但任何代码尚不支持此功能)。
该存储库既记录了FOLD 格式(该格式仍处于早期阶段,因此其定义正在不断发展),并提供 Web软件工具和JavaScript 库来帮助操作 FOLD 文件。 FOLD 基于JSON (JavaScript 对象表示法)构建,因此解析器基本上适用于所有编程语言。解析后,该格式还可用作您想要在软件中表示折叠的典型数据结构。我们的库还帮助构建有用的冗余数据结构以导航网格。
FOLD 在本质上与用于存储 3D 网格的 OBJ 格式(以及其他类似格式)类似;它的主要显着特征是易于解析、易于扩展、能够通过堆叠顺序消除重叠面的歧义,以及定义边缘以及定义边缘属性(例如山谷分配)和任意多面体复合体的能力。 (没有边,OBJ 无法区分共享两个连续顶点的两个面和共享一条边的面。)此外,FOLD 可以支持链接(具有 1D 边,但没有 2D 面)。
这是支持 FOLD 格式的软件,由该项目和其他人构建:
对于简单的 Web 应用程序,请将此标签添加到您的 HTML 中: <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(或保存dist/fold.js
的本地副本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
。
FOLD 库 API 记录了用于操作 FOLD 对象的可用模块和函数。如果您有.fold
文件,请首先使用JSON.parse(fileContents)
解析它以获取 FOLD 对象。
JavaScript 库还提供了一个名为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 作为通用交换格式。