FOLD (بنية بيانات قائمة الأوريغامي المرنة) هو تنسيق ملف (بامتداد .fold
) لوصف نماذج الأوريغامي : أنماط التجعد، وأنماط الوادي الجبلي، والحالات المطوية، وما إلى ذلك. بشكل أساسي، يمكن لملف FOLD تخزين شبكة ذات رؤوس وحواف ووجوه والروابط بينهما، مع هندسة اختيارية ثنائية أو ثلاثية الأبعاد، بالإضافة إلى ترتيب التراص الطوبولوجي للوجوه التي تتداخل هندسيًا. يمكن للشبكة أيضًا تخزين بيانات إضافية يحددها المستخدم بسهولة. يمكن لملف FOLD واحد تخزين العديد من هذه الشبكات في " إطارات " (ولكن هذه الميزة غير مدعومة بعد في أي كود).
يقوم هذا المستودع بتوثيق تنسيق FOLD (الذي لا يزال في المراحل الأولى لذا فإن تعريفه يتطور) ويوفر أدوات برامج الويب ومكتبات JavaScript للمساعدة في معالجة ملفات FOLD. تم بناء FOLD على JSON (JavaScript Object Notation) بحيث يتوفر المحللون في جميع لغات البرمجة بشكل أساسي. بمجرد التحليل، يعمل التنسيق أيضًا بمثابة بنية البيانات النموذجية التي تريد تمثيل الطيات في برنامجك. تساعد مكتباتنا أيضًا في إنشاء هياكل بيانات زائدة ومفيدة للتنقل في الشبكة.
يشبه FOLD في جوهره تنسيق OBJ (والتنسيقات الأخرى المشابهة) لتخزين الشبكات ثلاثية الأبعاد؛ سماته المميزة الرئيسية هي سهولة التحليل ، وسهولة التوسع ، والقدرة على إزالة الغموض عن الوجوه المتداخلة بترتيب التراص، والقدرة على تحديد الحواف وبالتالي خصائص الحافة (مثل تخصيصات الوادي الجبلي) والمجمعات متعددة السطوح التعسفية . (بدون حواف، لا يمكن لـ OBJ التمييز بين وجهين يتقاسمان رأسين متتاليين من وجوه تشترك في حافة.) بالإضافة إلى ذلك، يمكن لـ FOLD دعم الروابط (مع حواف أحادية الأبعاد ولكن بدون وجوه ثنائية الأبعاد).
فيما يلي برنامج يدعم تنسيق 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
.
تقوم واجهة برمجة تطبيقات مكتبة FOLD بتوثيق الوحدات والوظائف المتاحة لمعالجة كائنات 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 كتنسيق تبادل مشترك.