কোয়ার্টারিয়ন কী?


50

একটি চতুষ্কোণ কী এবং তারা কীভাবে কাজ করে? এছাড়াও, 2 ডি বিমানে আপনি তিনটি পয়েন্ট ব্যবহার করে কী সুবিধা পাবেন? অবশেষে, কখন চতুর্থাংশ ব্যবহার করা ভাল অনুশীলন হিসাবে বিবেচনা করা হয়?



Orতিহাসিকভাবে, আমি মনে করি চতুর্থাংশটি প্রথম এসেছিল, এবং পরে বিন্দু এবং ক্রস পণ্যগুলি কোয়ার্টেরিয়ানগুলি থেকে নেওয়া হয়েছিল।

2
আমি এই অ্যানিমেটেড নিবন্ধটি খুব তথ্যপূর্ণ পেয়েছি: acko.net/blog/animate-your-way-to-glory-pt2/#quaternions
এশেলি

খাঁটি গণিতে আমি বিশ্বাস করি যে চতুর্ভুজগুলি 3 জটিল সংখ্যা যেমন i² = j² = k² =
ijk

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

উত্তর:


43

গাণিতিকভাবে, একটি চৌম্বকটি 4 টি মাত্রা সহ একটি জটিল সংখ্যা। তবে গেম ডেভেলপমেন্টে, কোয়ার্ট্রিনগুলি প্রায়শই 3 ডি স্পেসে আবর্তনকে এনকড করে বর্ণনা করতে ব্যবহৃত হয়:

  1. একটি ঘূর্ণন অক্ষ (ত্রিমাত্রিক ভেক্টরের আকারে)
  2. ax অক্ষটি কতদূর ঘুরবে

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

ঘূর্ণন বর্ণনা করার একটি বিকল্প উপায় হ'ল 3 স্থির অক্ষের x, y এবং z (ওরফে ইউলার অ্যাঙ্গেল) কত ঘুরতে হবে তা বর্ণনা করে যা কেবল 4 এর পরিবর্তে 3 নম্বর প্রয়োজন এবং এটি ব্যবহারের জন্য আরও স্বজ্ঞাত। তবে, ইউলার-অ্যাঙ্গেলগুলি গিম্বল- লক নামক একটি সমস্যার সাপেক্ষে : আপনি যখন একটি অক্ষের চারপাশে 90। ঘোরান, তখন অন্য দুটি অক্ষ সমতুল্য হয়ে যায়। চতুর্দিকে, এই সমস্যাটি ঘটে না।

3 ডি স্পেসে রোটেশন প্রকাশের আর একটি উপায় 4x4 রূপান্তর ম্যাট্রিক্স সহ । তবে রূপান্তর ম্যাট্রিক্সের সাহায্যে আপনি কেবল ঘোরানো যায় না, স্কেল, অনুবাদ এবং স্কিউও করতে পারেন। আপনি যখন কেবল ঘূর্ণন চান , তখন একটি ম্যাট্রিক্স ওভারকিল এবং কোয়াটারিয়েন অনেক দ্রুত এবং সহজ সমাধান হতে পারে।

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


6
জিম্বল লক কোয়ার্ট্রিয়নে কোনও সমস্যা নয় যদি আপনি কোয়ার্ট্রিয়েন থেকে শুরু করে কোয়ার্টেরিয়েন্স দিয়ে শেষ করেন, জিম্বল লক সেট থাকে যখন আপনার একটি পদক্ষেপ থাকে যা ইউলার কোণে বা পিছনে রূপান্তর করে।
ratchet freak

2
কোয়াটেরনিয়ন হয় না অক্ষ + + কোণ, তারা 3 জটিল সংখ্যা এবং স্কেলে হয়।
transistor09

11
@ transistor09 আপনি কি বিশ্বাস করেন যে আপনি দুজনেই ঠিক আছেন? একটি ইউনিট চতুর্ভুজটির 3 উপাদানগুলির কাল্পনিক অংশটি আবর্তনের অক্ষের সাথে একক ভেক্টর হিসাবে ব্যাখ্যা করা যেতে পারে, আবর্তনের অর্ধেক কোণটির সাইন দ্বারা মাপা হয়। ইউনিট চৌম্বকটির আসল অংশটি আবর্তনের অর্ধেক কোণের কোসাইন। সুতরাং আপনি ঠিক বলেছেন যে এটি হুবহু একটি কোণ-অক্ষ বিন্যাস নয়, তবে এটি সত্য যে একটি চৌম্বকীয় উপাদানটিকে অক্ষ এবং একটি অক্ষর হিসাবে ব্যাখ্যা করা যেতে পারে যে কত অক্ষটি ঘুরিবে।
ডিএমগ্রিগরি

2
ঘূর্ণন ম্যাট্রিক্সের উপরে কোয়ার্টার্নান্সের কী কী সুবিধা রয়েছে তা আপনি উল্লেখ করতে পারেন: তারা একত্রিত করার জন্য আরও দ্রুত। ঘূর্ণনগুলির সমন্বয় করার সময়, দুটি চতুর্থাংশকে গুণিত করার জন্য ম্যাট্রিক্সগুলি গুণানোর চেয়ে কম অপারেশন প্রয়োজন।
মনিকা

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

13

এটি @ ফিলিপ এর উত্তর যোগ করা হয়।

এছাড়াও, 2 ডি বিমানে আপনি তিনটি পয়েন্ট ব্যবহার করে কী সুবিধা পাবেন?

আপনি সত্যিই কোয়াটেরনিয়ন প্রয়োজন হবে না যদি সব আপনি আগ্রহী আবর্তিত হয় উপর সমতল, অর্থাত্ সম্পর্কে Z অক্ষের। এই ক্ষেত্রে, আপনার যা দরকার তা হ'ল ইয়া কোণ এবং আপনি z অক্ষের যাত্রা সম্পর্কে ক্রমাগত ঘূর্ণন এই সত্যটি কাজে লাগাতে পারেন। সুতরাং আপনি আপনার আবর্তন আপনার যে কোনও ক্রম প্রয়োগ করতে পারেন।

আপনি যদি এক্সওয়াই প্লেন নয় এমন কোনও বিমানে ঘুরছেন তবে পরিস্থিতি আলাদা। এই ঘূর্ণনটি একটি স্বেচ্ছাসেবী 3D অক্ষকে ঘোরানোর সমতুল্য। এখন, আপনার দুটি পছন্দ আছে:

  • আপনার প্লেনটি 3 ডি তে ঘোরান যাতে এটি XY বিমানের সাথে মিলে যায় এবং তারপরে ইয়াও হয়ে যায় এবং ফিরে রূপান্তর করতে পারে, বা

  • আপনার ঘূর্ণনটি 3 ডি হিসাবে শুরু হওয়ার সাথে ভাবুন।

দ্বিতীয় পছন্দটি কোড করা সহজ। @ ফিলিপিস যেমন বলেছিল, চতুর্ভুজগুলি জিম্বল লক এড়িয়ে চলে (আপনি যদি মাঝারি আরপিওয়াই বা অক্ষ / কোণ রূপান্তর এড়ান)।

অবশেষে, কখন চতুর্থাংশ ব্যবহার করা ভাল অনুশীলন হিসাবে বিবেচনা করা হয়?

যখনই 3 ডি ঘূর্ণন হয়, কোয়ার্টারিয়ন ব্যবহার করা ভাল অনুশীলন।

উদাহরণ:

  • ইন করা Qt । কোয়াটস্ স্টার্প ফাংশনের মতো ঘূর্ণনগুলির মধ্যে গলা ফেলা সহজ করে তোলে

  • আরওএস রোবট ভঙ্গিকে রূপান্তর করতে তাদের ব্যবহার করে।

  • ইন বুলেট গতিবিদ্যা ইঞ্জিন

  • খুব পরিশীলিত অ্যাপ্লিকেশনের জন্য, ক্লাসিকাল 3 ডি মেকানিকগুলিতে তাদের ব্যবহারের জন্য এখানে দেখুন ।


" যখনই 3 ডি ঘূর্ণন হয়, কোয়ার্টারিয়ন ব্যবহার করা ভাল অনুশীলন" " ঠিক হয় সামান্য বেশী শক্তিশালী। প্রায় সর্বদা ভাল; এমন পরিস্থিতিতে আছে যেখানে বিকল্পগুলি উপযুক্ত। (একটি অপূর্ণতার উদাহরণ হিসাবে, একটি কোয়ার্টেরিয়নের
নবম মূলটি

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