FOLD (Flexible Origami List Datastructure)는 주름 패턴, 산골짜기 패턴, 접힌 상태 등 종이 접기 모델을 설명하기 위한 파일 형식(확장자 .fold
포함)입니다. 주로 FOLD 파일은 정점 , 가장자리 , 면이 있는 메시를 저장할 수 있습니다. , 선택적 2D 또는 3D 형상과 기하학적으로 겹치는 면의 토폴로지 스택 순서를 사용하여 이들 간의 링크를 제공합니다. 메시는 추가 사용자 정의 데이터를 쉽게 저장할 수도 있습니다. 하나의 FOLD 파일은 " 프레임 "에 이러한 메시를 여러 개 저장할 수도 있습니다(그러나 이 기능은 아직 어떤 코드에서도 지원되지 않습니다).
이 저장소는 FOLD 형식(아직 초기 단계이므로 정의가 진화하고 있음)을 문서화 하고 FOLD 파일 조작에 도움이 되는 웹 소프트웨어 도구 와 JavaScript 라이브러리를 제공합니다. FOLD는 JSON (JavaScript Object Notation)을 기반으로 구축되었으므로 기본적으로 모든 프로그래밍 언어에서 파서를 사용할 수 있습니다. 일단 구문 분석된 형식은 소프트웨어에서 접기를 표현하려는 일반적인 데이터 구조 역할도 합니다. 우리 라이브러리는 또한 메시 탐색을 위한 유용한 중복 데이터 구조를 구축하는 데 도움이 됩니다.
FOLD는 3D 메시를 저장하기 위한 OBJ 형식(및 기타 유사한 형식)과 유사합니다. 주요 특징은 쉬운 구문 분석 , 쉬운 확장성 , 쌓인 순서로 겹치는 면을 명확하게 하는 기능, 모서리와 모서리 속성(예: 산 계곡 할당) 및 임의의 다면체 복합체를 정의하는 기능입니다. (모서리가 없으면 OBJ는 두 개의 연속 정점을 공유하는 두 면과 모서리를 공유하는 면을 구별할 수 없습니다.) 또한 FOLD는 연결을 지원할 수 있습니다(1D 모서리는 있지만 2D 면은 없음).
다음은 이 프로젝트와 다른 사람들이 구축한 FOLD 형식을 지원하는 소프트웨어입니다.
간단한 웹 앱의 경우 HTML에 <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
태그를 추가하거나 dist/fold.js
의 로컬 복사본을 저장하세요. dist/fold.js
사용하고 이를 사용하세요). 그런 다음 JavaScript/CoffeeScript 코드에 FOLD = require('fold')
추가하면 FOLD.moduleName.functionName
통해 라이브러리에 액세스할 수 있습니다(예: FOLD.filter.collapseNearbyVertices
).
Node 앱의 경우 npm install --save fold
; 그런 다음 JavaScript/CoffeeScript 코드에 FOLD = require('fold')
를 추가하세요. 그런 다음 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를 공통 교환 형식으로 지원하는 것입니다.