বেজিয়ারের উপরিভাগ কীভাবে রাইট্রেস করবেন?


18

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

সুতরাং, রাই / বেজিয়ার-সারফেস ছেদটি বীজগণিতভাবে সমাধান করার আশা করা কি মোট পাইপ স্বপ্ন, এভাবে স্পষ্টভাবে কোডিং করা এবং অতি দ্রুত-অতি-মসৃণতা পাওয়া সম্ভব করে?

এই গণনা সম্পাদনের জন্য দ্রুততম পদ্ধতিটি কী? আপনি কি পুনরাবৃত্ত মহকুমার জন্য একটি আঁটসাঁট বাঁধাই (এবং লক্ষ্য) পেতে "উইগলগুলি সন্ধান করতে পারেন"? যদি আপনাকে একটি সংখ্যাসমূহের রুট-ফাইন্ডার (দীর্ঘশ্বাস) ব্যবহার করতে হয় তবে এর জন্য কোন বৈশিষ্ট্যের প্রয়োজন এবং গতির জন্য এখানে কোনও সেরা পছন্দ আছে?

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


আপনি কি কোনও সাধারণ পদ্ধতি সন্ধান করছেন যা আপনি একটি স্বেচ্ছাসেবী বেজিয়ার পৃষ্ঠে প্রয়োগ করতে পারেন, বা একটি নির্দিষ্ট পৃষ্ঠের জন্য দ্রুত পদ্ধতি প্রস্তুত করার কোনও উপায়? রানটাইমের আগে আপনার পৃষ্ঠের আকৃতি স্থির করা হবে?
ট্রাইকোপল্যাক্স

1
দ্রষ্টব্য যে আপনি বেজিয়ার পৃষ্ঠতলটিকে রেয়েট্র্যাকিংয়ের চেয়ে অনেক সহজ সরল করতে পারেন। আপনি অন্যান্য ধরণের চেয়ে রেয়েট্রেস বা রায়মার্চ অবিচ্ছিন্ন পৃষ্ঠগুলিও অনেক সহজ করতে পারেন! ব্লগ.ডেমোফক্স.আর.সি.সি.সি.
অ্যালান ওল্ফ

উত্তর:


14

প্রথমে, এই কাজিয়া পদ্ধতিটি আমি আপনাকে ভাবছি বলে মনে করি: কাজিয়া, রে ট্র্যাকিং প্যারাম্যাট্রিক প্যাচগুলি , সাইনগ্রাফ ৮২। প্রযুক্তি সংক্রান্ত প্রতিবেদনের সংস্করণটি আরও তথ্যপূর্ণ হতে পারে।

আমি আশা করি আপনি এটি থেকে কী অর্জন করবেন তা হ'ল এটি অসম্ভব নয় এবং যদি আপনি কিছু বীজগণিত জ্যামিতি এবং জটিল সংখ্যার সাহায্যে আপনার হাতকে নোংরা করাতে আপত্তি না করেন তবে এটি ধারণাগতভাবে কঠিন নয়। তবে এটি সরাসরি করা ব্যতীত ব্যয়বহুল।

"রিয়েল" রশ্মির ট্রেসার দুটি জিনিসের সংমিশ্রণ করতে ঝোঁক:

  • সংখ্যার মূল অনুসন্ধানকারীর জন্য একটি ভাল "প্রাথমিক মান" পেতে প্যাচটিতে একটি বাউন্ডিং হায়ারার্কি (যেমন AABBs) স্থাপন করা। আপনি যদি এটি ভালভাবে করেন তবে আপনি "বলি" সমস্যা এড়াতে পারেন।
  • প্যাচটিকে ডিডিজি শেলগুলিতে টেসেলিয়েটিং করা এবং তাদের বহুভুজ জালের মতো ট্রে ট্রে করে নিচ্ছে ।

এই শেষ পয়েন্টটি এটি "অতি-মসৃণতা" প্রয়োজনীয়তাটিকে হারাতে পারে বলে মনে হচ্ছে, তবে এটি রশ্মিগত পার্থক্যগুলি ব্যবহার করলে এটি প্রায় খারাপ নয় । রশ্মির "আকার" এর সাথে টেসলেশন স্তরটি মিলিয়ে ত্রুটিটি সুন্দরভাবে সীমাবদ্ধ করে। তদ্ব্যতীত, আপনার সম্ভবত টেক্সচার কোঅর্ডিনেটগুলির জন্য বৈকল্পিক প্রয়োজন, যাতে আপনি পাশাপাশি ছেদ পরীক্ষার যথার্থতাও নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

টেম্পোরাল সুসংহততা অনুসন্ধান করা কোনও খারাপ ধারণা নয়, তবে আপনি ঠিক কীভাবে করবেন তা আপনার দৃশ্যের গ্রাফের উপস্থাপনার উপর নির্ভর করে। আপনি রশ্মির সংহতি দেখতে চাইবেন। আপনার পছন্দসই সার্চ ইঞ্জিনকে রে প্যাকেট ট্রেসিং এবং রে পুনর্নির্মাণ সম্পর্কে জিজ্ঞাসা করুন


9

বীজগণিতভাবে রায় / বেজিয়ার-পৃষ্ঠের ছেদটি সমাধান করার আশা করা কি মোট পাইপ স্বপ্ন

হ্যাঁ, এটি একটি পাইপের স্বপ্ন। একটি বিকিউবিক বেজিয়ার প্যাচটি 18 ডিগ্রির একটি বীজগণিতীয় পৃষ্ঠ। । আসলে গাণিতিক ফলাফল রয়েছে ( আবেল-রুফিনি উপপাদ্য ) আমাদের বলছেন যে ডিগ্রি ছাড়িয়েও সমীকরণের মূলসূত্রগুলির জন্য কোনও সূত্র কখনও থাকতে পারে না The গণিতটি কেবল এটি বলে না যে সূত্রগুলি এখনও পাওয়া যায় নি; এটি বলে যে তাদের কখনই পাওয়া যাবে না, কারণ তাদের অস্তিত্ব নেই can't

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


5

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

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

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


1

সামঞ্জস্যতার ক্ষেত্রে https://www.shadertoy.com/results?query=bezier বয়স অনুসারে বাছাই করুন:

, ... অনেকগুলি স্প্লাইন-সাবসেটের অনেকগুলি সমাধান দেখায়, হয় 2 ডি স্প্লিনে দূরত্ব ফিরিয়ে দেয়, বা 3 ডি প্যাচ সন্ধান করে। স্প্লাইচস এবং প্যাচগুলি বিভিন্ন রূপে আসে। স্বর্গীয় বেইন্ড সিম্পল, বেজিয়ার সহজ সরল, নুরব অতি মাত্রায় জটিল। আপনার স্প্লাইনে যোগ করার জন্য যত বেশি বাধা যুক্ত হবে তত সহজ। এনআরবিএস হ'ল এক্সটেনশন ওভারকিল; - এর ভারসাম্যের অ-অভিন্ন-নেস ("এনইউ") আরও প্রতিসাম্যযুক্ত স্প্লিনের তুলনায় দক্ষতা হ্রাস করে - এর রেশন-আল-নেস (আর) আরও কিছু জটিলতা যুক্ত করে, বিভাগগুলি (রেশনিং) এবং নিকটবর্তী বিভাগগুলির সাথে মিশ্রণের জন্য (পুনরাবৃত্তি সমাধান করা)।

বেজিয়ার-প্যাচ-ট্রেসিং হ'ল মূল-সমাধান এবং সেই সাথে যথার্থতার উপর প্রাসঙ্গিক অগ্রাধিকার আসে; চতুর্ভুজ সমীকরণটি সমাধান করার জন্য। এটি ঘনক্ষেত্রের চেয়ে উচ্চ ক্ষয়কারীদের উপর অযৌক্তিক হয়ে ওঠে, তাত্পর্যপূর্ণ জটিলতা এবং নির্ভুল ক্ষতির কারণে।

রে-মার্চিং == গোলক-ট্র্যাকিং হ'ল মূল-সমাধানের সহজতর হিউরিস্টিক পদ্ধতি, যা বেশিরভাগ স্প্ল্যাচ প্যাচগুলি রেন্ডারিংয়ের সহজ এবং সবচেয়ে কার্যকর সমাধান বলে মনে হয়।

ল্যাংরেঞ্জ-উপস্থাপনাটি ট্রেসিং / মার্চিংকে সহজতর করে (এল-পয়েন্টগুলি স্প্লাইনে থাকে যখন কন্ট্রোলভেক্টর-পয়েন্টগুলি (ঠিক একই স্প্লাইনটির) স্প্লাইনে খুব কমই থাকে)

স্বর্গীয়-স্প্লাইনের বিশেষ কেস, যেখানে স্ট্যাট এবং শেষের প্রথম উপকরণগুলি == 0 হয়। ধারাবাহিকতা সহজতর করে এবং কম ডিফারেনশিয়াল (কম বিয়োগ) জড়িত। একটি সিভেল পাসে একটি স্বর্গীয় প্যাচ দক্ষতার সাথে সনাক্ত করা যেতে পারে: https://www.shadertoy.com/view/4djfW3 অন্য ঘনক্ষেত্র (বা উচ্চতর) স্প্লাইজগুলি হিউরিস্টিক গোলক-ট্র্যাকিং / রে-মার্চিং পদ্ধতিকে আরও দক্ষ করে তোলে (এবং " ক্ষুদ্রতম ধনাত্মক মূল (প্রতিটি শেকড়ের জন্য তাত্পর্যপূর্ণভাবে জমা হওয়া নির্ভুলতা ত্রুটি সহ) ধরে রাখার জন্য সমস্ত মূলকে বিশ্লেষণ করে গণনা করার সাহসের চেয়ে যথেষ্ট "সুনির্দিষ্ট"।


কম্পিউটার গ্রাফিক্সে, স্প্লাইনস এবং প্যাচগুলি 2006-এর মধ্যে জেড-ব্রাশিং দ্বারা প্রায় সম্পূর্ণ প্রতিস্থাপন করা হয়েছে। জেড-ব্রাশিং একজাতীয় স্থানাঙ্কের সাথে স্থানচালিত মানচিত্র ব্যবহার করে, বা এমন একটি "প্রকার" ব্যবহার করে যা আমাদের গোলক এবং লিনিগমেন্টগুলির একটি ইউনিয়ন (লিনিগমেন্টগুলির ব্যাসার্ধ থাকে) 0, গোলকের দৈর্ঘ্য 0, একটি ইউনিয়ন সহজ এবং দরকারী)। অপেক্ষাকৃত কম মেমরির দামের তুলনায় অপেক্ষাকৃত কম মেমরির ব্যয়ে পারফরম্যান্সে বড় লাভের জন্য যথাযথ ক্ষতির জন্য, এটি একটি জিপিইউতে সহজেই গতিশীল হয়ে উঠেছে।


কিছু মনে করো না. সমস্ত 3 ডি প্যাচ সমাধান গোলক ট্র্যাকিং দ্বারা সম্পন্ন হয়।
olj

যখন প্যাচটি সহজ হয় তখন এটি পারফরম্যান্স এবং নির্ভুলতা উল্লেখযোগ্যভাবে বৃদ্ধি করে। এমন এক বিন্দুতে যেখানে কয়েকগুণে সমুদ্রের স্বর্গের এক প্যাচ আপনাকে অনেক দূরে নিয়ে যায়:
অলগ

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