পরিচয়
টেমপ্লেট প্যারামিটারের জন্য একটি HDS বা হাফ-এজ ডেটা স্ট্রাকচার (হালফেজডিএস হিসাবে সংক্ষেপে) একটি প্রান্ত-কেন্দ্রিক ডেটা কাঠামো হিসাবে সংজ্ঞায়িত করা হয় যা শীর্ষবিন্দু, প্রান্ত এবং মুখগুলির ঘটনা তথ্য যেমন প্ল্যানার ম্যাপ, পলিহেড্রা বা অন্যান্য প্রাচ্য, দ্বি-মাত্রিক, রক্ষণাবেক্ষণ করতে সক্ষম। র্যান্ডম মাত্রা এম্বেড করা পৃষ্ঠতল. প্রতিটি প্রান্ত বিপরীত অভিযোজন সহ দুটি অর্ধেক প্রান্তে বিভক্ত। প্রতিটি অর্ধেক প্রান্ত একটি ঘটনার মুখ এবং একটি ঘটনার শীর্ষবিন্দু সঞ্চয় করে। প্রতিটি মুখ এবং প্রতিটি শীর্ষবিন্দুর জন্য একটি ঘটনার অর্ধেক প্রান্ত সংরক্ষণ করা হয়। হাফ-এজ ডেটা স্ট্রাকচারের হ্রাসকৃত রূপগুলি এই তথ্যগুলির কিছু অংশ মুছে ফেলতে পারে, যেমন মুখের হাফ-এজ পয়েন্টার বা একেবারে মুখের স্টোরেজ।
হাফ-এজ ডেটা স্ট্রাকচারকে কম্বিনেটরিয়াল ডাটা স্ট্রাকচার হিসেবে সংজ্ঞায়িত করা হয়, হাফ-এজ ডাটা স্ট্রাকচারের উপরে তৈরি ক্লাস দ্বারা জ্যামিতিক ব্যাখ্যা যোগ করা হয়। এই ক্লাসগুলি হাফ-এজ ডেটা স্ট্রাকচারের চেয়ে সরাসরি প্রয়োগ করার জন্য বেশি পরিচিত হতে পারে, যেহেতু হাফ-এজ ডেটা স্ট্রাকচারকে একটি ইমপ্লিমেন্টেশন লেয়ার হিসাবে বিবেচনা করা হয়।
হাফ-এজ ডেটা স্ট্রাকচারটি কোয়াড-এজ ডেটা স্ট্রাকচারের একটি রূপ হিসাবেও প্রদর্শিত হতে পারে। সাধারণভাবে, নন-ওরিয়েন্টেবল 2-ম্যানিফোল্ডগুলিকে কোয়াড-এজ ডেটা দ্বারা উপস্থাপিত করা যেতে পারে, তবে এখানে বৈকল্পিকটি কেবলমাত্র প্রাচ্যযোগ্য 2-ম্যানিফোল্ডের মধ্যে সীমাবদ্ধ।
উদাহরণ প্রোগ্রাম
ডিফল্ট হাফফেজ ডেটা স্ট্রাকচার
নিম্নলিখিত উদাহরণ প্রোগ্রামটি ডিফল্ট অর্ধেক ডাটা স্ট্রাকচার এবং ডেকোরেটর ক্লাস প্রয়োগ করে। ডিফল্ট অর্ধেক ডাটা কাঠামো একটি তালিকা-ভিত্তিক উপস্থাপনা প্রয়োগ করে। আইটেমগুলির সমস্ত ঘটনা এবং শীর্ষবিন্দুগুলির জন্য একটি বিন্দুর ধরন ব্যাখ্যা করা হয়েছে। তুচ্ছ বৈশিষ্ট্যের শ্রেণী বিন্দুর জন্য প্রয়োগকৃত প্রকার দেয়। প্রোগ্রামটি একটি লুপ তৈরি করে, যার মধ্যে দুটি অর্ধেক প্রান্ত, একটি শীর্ষবিন্দু (Vertex) এবং দুটি মুখ (Face1 এবং Face2) রয়েছে এবং এটির বৈধতা যাচাই করে৷
#include <CGAL/HalfedgeDS_default.h> #include <CGAL/HalfedgeDS_decorator.h> struct Traits { typedefint Point_2; }; typedef CGAL::HalfedgeDS_default<Traits> HDS1; typedef CGAL::HalfedgeDS_decorator<HDS> Decorator1; int main() { HDS1 hds1; Decorator1 decorator(hds1); decorator.create_loop(); CGAL_assertion(decorator.is_valid()); return 0; }