একটি বক্ররেখার সাথে অসংগঠিত পয়েন্টগুলির একটি সেট অর্ডার করা


9

আমার কাছে একটি 3 ডি পয়েন্টের একটি সেট রয়েছে (যা আমি একটি লাইব্রেরি থেকে পুনরুদ্ধার করি যা একটি দৃ body় শরীরের টেসেলেলেশন সম্পাদন করে) যা একটি বক্রের সাথে সম্পর্কিত (অর্থাত্ শক্তির একটি প্রান্ত)। তার মানে যে বক্ররেখা অবশ্যই এই পয়েন্টগুলির প্রতিটি দ্বারা পাস করে।

তবুও, পয়েন্ট সেটটি আনর্ডারড নয় সুতরাং এই বক্ররেখাটি সঠিকভাবে আঁকতে সক্ষম হওয়ার জন্য আমার সেগুলি সাজানোর প্রয়োজন।

এই ধরণের সমস্যার জন্য কি কোনও জ্ঞাত পদ্ধতি রয়েছে?

কিছু অতিরিক্ত তথ্য:

  • কার্ভগুলি সাধারণভাবে প্যারামেট্রিক (স্প্লাইজ / বেজিয়ার, সার্কেল স্লাইস ..)।
  • পয়েন্টগুলি ভাসমান পয়েন্ট স্থানাঙ্ক হিসাবে দেওয়া হয়।
  • পয়েন্টগুলি খুব ঘন প্যাক করা হয় (তবে সেগুলি যতটা ঘন আমি এটি চাই তা হতে পারে)। আপনাকে একটি ধারণা দেওয়ার জন্য, এক্সে 19 টি ইউনিট, এক্সে 10 ইউনিট এবং জেডে 5 ইউনিট দখল করে এমন একটি বক্ররেখার জন্য আমি বক্রাকার একটি বিভাগে পয়েন্টগুলির ক্রমকে উদ্ধৃত করছি: (20.7622, ​​25.8676, 0) (20.6573, 25.856, 0) (20.5529, 25.8444, 0) (20.4489, 25.8329, 0) (20.3454, 25.8213, 0)

এমনকি যদি আমরা জানতে পারি যে বিন্দুগুলির গর্তের সাথে খাপ খায় এমন অসীম সংখ্যক বক্র পর্যন্ত অর্ডার উপস্থিত থাকে। এমনকি যদি আমরা অতিরিক্ত প্রতিবন্ধকতাগুলি যুক্ত করি তবে তার প্রান্তিক দিকটি নির্বিচারে হতে পারে বলে খোলা প্রান্তগুলি সমস্যাযুক্ত। এখানে
joojaa

@ জূজা হ্যাঁ, আপনি ঠিক বলেছেন। তবে যেহেতু পয়েন্টগুলির প্যাকিং খুব ঘন, তাই আমি এটি সঠিক হওয়ার আশা করি না। যদি আমি সঠিক অর্ডার পেতে পারি তবে আমি পয়েন্টের ক্রমটি একটি পললাইন হিসাবে সংযোগ করার পরিকল্পনা করছিলাম।
andrea.al

যে কোডটিতে পয়েন্টগুলি অর্ডার করতে হবে, আপনি কি বক্ররেখার প্যারাম্যাট্রিক ফর্ম সম্পর্কে অবগত আছেন? (যদি তা না হয় তবে আমি আমার প্রথম উত্তরটি মুছে ফেলব, কারণ এটির জন্য আপনাকে প্যারাম্যাট্রিক ফর্মটি জানা দরকার))
মার্টিন এন্ডার

@ মার্টিনব্যাটনার হ্যাঁ, এটির প্রয়োজন হলে আমার কাছে বক্ররেখার প্যারাম্যাট্রিক ফর্মের অ্যাক্সেস আছে।
andrea.al

1
একটি সাধারণ পয়েন্ট সেট দেখান দয়া করে!
ইয়ভেস দাউস্ট

উত্তর:


6

আপনার অসংগঠিত পয়েন্টগুলি থেকে কার্ভ পুনর্গঠন নামে একটি সমস্যার উদাহরণ রয়েছে । এখন আপনি কী কী অনুসন্ধান করবেন তা আপনি জানেন যে আপনি বিভিন্ন পদ্ধতি যেমন ক্রাস্ট, এনএন-ক্রাস্ট ইত্যাদি পাবেন Here এখানে কয়েকটি লিঙ্ক রয়েছে:

যেহেতু আপনি বক্ররেখা নিয়ে কাজ করছেন এবং নমুনাগুলি ঘন, তাই আমি আপনাকে একটি ইউক্লিডিয়ান ন্যূনতম বিস্তৃত গাছ গণনার পরামর্শ দিই।


4

কিছু স্পষ্টতার পরে, সম্ভবত একটি আরও ভাল পদ্ধতির জন্য এমনকি বক্ররেখার প্যারাম্যাট্রিক ফর্ম জানা প্রয়োজন হয় না, এবং সম্ভাব্য সমস্যাযুক্ত সংখ্যাসূচক কমানোর পদক্ষেপ এড়ানো হয়।

বক্ররেখা নিজেই ছেদ করে না এবং পয়েন্ট পর্যাপ্ত ঘন বক্ররেখা উপর বস্তাবন্দী হয় (এবং যদি আমি বলতে চাচ্ছি যে তারা বক্ররেখা কোন দুই পয়েন্ট তুলনায় কাছাকাছি হতে হবে না একই সেগমেন্ট, যেমন অন্তর্গত বক্ররেখা মোড়কে নিজেই চারদিকে), তারপরে আপনি প্রতিটি নমুনার পূর্ববর্তী এবং পরবর্তী পয়েন্টটি সহজেই নির্ধারণ করতে পারেন:

  • প্রতিটি বিন্দুতে দুটি নিকটতম প্রতিবেশী নির্ধারণ করুন। এটি একটিহে(এনলগএন)অপারেশন
  • শেষ পয়েন্টগুলির জন্য আপনাকে কিছু বিশেষ চিকিত্সা করতে হবে। তাদের দুটি নিকটতম প্রতিবেশী প্রতিটি পাশের পরিবর্তে বক্ররেখার সাথে পরবর্তী দুটি পয়েন্ট হবে। আপনি উভয় প্রতিবেশীর সাথে দূরত্বের অনুপাত কিছু প্রান্তিকের চেয়ে আলাদা হয়ে থাকলে আপনি এই তাত্পর্যপূর্ণভাবে সনাক্ত করতে পারেন (1.5 বলুন, আপনার বক্রের সাবলীলতা এবং পয়েন্টগুলি কতটা ঘনভাবে প্যাক করা হয়েছে তার উপর নির্ভর করে)। অথবা আপনি আপনার নিকটতম-প্রতিবেশী ডেটাটিকে গ্রাফ হিসাবে বিবেচনা করতে পারেন, যাতে আপনি দেখতে পাবেন যে শেষপয়েন্টের দুটি প্রতিবেশী একে অপরের দিকে নির্দেশ করে (যা গ্রাফের অন্য কোথাও না ঘটে)।
  • বাঁক বরাবর পয়েন্টগুলি অতিক্রম করার জন্য এখন আপনি কেবল একটি প্রান্ত পয়েন্ট বাছাই করতে পারেন এবং নিকটবর্তী প্রতিবেশীদের সাথে চলতে পারেন (সর্বদা আপনার পছন্দ নয় এমনটি বেছে নিতে পারেন) the

বিশেষত যদি আপনি পয়েন্টগুলি খুব ঘন করতে পারেন তবে এটি সবচেয়ে নির্ভরযোগ্য বিকল্প হওয়া উচিত যদি না কার্ভটি স্ব-ছেদ না করে। এমনকি সেই ক্ষেত্রেও, এই পদ্ধতির ক্ষতিগ্রস্থ হতে পারে তবে স্ব-ছেদটি যথেষ্ট পরিমাণে যথেষ্ট পরিমাণে বাঁকানো পর্যাপ্ত পরিমাণে থাকে (সেক্ষেত্রে আপনি কিছুটা সীমাবদ্ধতার ভিত্তিতে সঠিক প্রতিবেশী বেছে নিতে পারেন যে ক্রমাগত পদক্ষেপগুলি কোনও প্রান্তিকের চেয়ে বেশি কোণ তৈরি করতে পারে নাθ)।


3

যেহেতু আপনি কেবলমাত্র পয়েন্টগুলির ভাসমান-পয়েন্ট উপস্থাপনা পেয়েছেন, তাই গোলাকার ত্রুটির কারণে এগুলি এখনও বক্ররেখায় ঠিক রয়েছে এমন কোনও গ্যারান্টি নেই। সুতরাং আমি মনে করি যে একমাত্র জেনেরিক পদ্ধতিটি আপনার নমুনার বক্ররেখার নিকটতম বিন্দুটি সন্ধান করে, বক্ররেখাটি কোথায় ছিল তা অনুমান করা to(এক্স,ওয়াই,জেড)। যেমন আপনার প্যারামেট্রিক বক্ররেখা হয়(এক্স(টি),Y(টি),z- র(টি)) তাহলে আপনি কমাতে চেষ্টা করতে পারেন

(এক্স-এক্স(টি))2+ +(ওয়াই-Y(টি))2+ +(জেড-z- র(টি))2

সম্মানের সাথে টি। আপনি যদি জানেন যে আপনি কোন ধরণের কার্ভ নিয়ে কাজ করছেন তার জন্য এটি বিশ্লেষণমূলক সমাধানগুলি হতে পারে, অন্যথায় আপনাকে কিছু সংখ্যক অ্যালগোরিদম অবলম্বন করতে হবে। যেহেতু আপনার পয়েন্টগুলি বক্ররেখার খুব কাছাকাছি হওয়া উচিত, এই পদ্ধতিটি নির্ভরযোগ্য হওয়া উচিত (মিনিমাইজেশন অ্যালগরিদমটি দেওয়া হয়) তবে যদি আপনার কোনও নমুনা না থাকে যেখানে বাঁকটি (প্রায়) নিজেই অতিক্রম করে। সেক্ষেত্রে আপনি সম্ভবত ভাগ্যের বাইরে রয়েছেন, যদিও।

একবার আপনি এটি আছে টি আপনার প্রতিটি পয়েন্টের জন্য, আপনি কেবল সেগুলি অনুসারে বাছাই করতে পারেন টি। অবশ্যই, আপনি কীভাবে পয়েন্টগুলি গ্রহণ করেন তার উপর যদি আপনার কোন নিয়ন্ত্রণ থাকে তবে আপনি ফিরে এসে এই সমস্যার সমস্তটিকেই ছাড়িয়ে নিতে সক্ষম হতে পারেনটি এগুলি উত্পন্ন করার সময় পয়েন্টের স্থানাঙ্কগুলি সঙ্গে সঙ্গে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.