আমি একজন গেম ডেভেলপার এবং গণিত অধ্যয়ন করি নি। সুতরাং আমি কেবল একটি হাতিয়ার হিসাবে কোয়ার্টারিয়নস ব্যবহার করতে চাই। এবং 3 ডি রোটেশন নিয়ে কাজ করতে সক্ষম হওয়ার জন্য, কোয়ার্টেরিনগুলি (বা ম্যাট্রিক্সেস ব্যবহার করা প্রয়োজন, তবে আসুন আমরা এই প্রশ্নটিতে এখানে কোয়ার্টেরিয়নে থাকি)। আমি মনে করি অনেক বিকাশকারীদের এগুলি ব্যবহার করা গুরুত্বপূর্ণ। এজন্য আমি আমার জ্ঞান ভাগ করে নিতে চাই এবং আশা করি আমার যে গর্ত রয়েছে তা পূরণ করুন। এখন ....
আমি যতদূর বুঝতে পেরেছি:
একটি কোয়ার্টেরিয়ন 2 টি জিনিস বর্ণনা করতে পারে:
- 3 ডি অবজেক্টের বর্তমান ওরিয়েন্টেশন।
- কোনও বস্তু করতে পারে এমন ঘূর্ণন রূপান্তর। (RotationChange)
আপনি একটি কোয়ার্টারিয়ন দিয়ে করতে পারেন:
Multiplications:
Quaternion endOrientation = Quaternion rotationCange * Quaternion currentOrientation;
সুতরাং উদাহরণস্বরূপ: আমার 3D অবজেক্টটি 90 left বামে পরিণত হয় - এবং আমার ঘূর্ণনটি আমি গুণিত করে 180 right থেকে ডানদিকে ঘোরান, শেষ পর্যন্ত আমার 3 ডি অবজেক্ট 90 right ডানে পরিণত হয়।
Quaternion rotationChange = Quaternion endRotation * Quaternion.Inverse (startRotation);
এটির সাহায্যে আপনি একটি রোটেশন চেঞ্জ পাবেন যা অন্য ওরিয়েন্টেশনটিতে প্রয়োগ করা যেতে পারে।
ভেক্টর 3 এন্ডপোশন = কোয়ার্টারিয়ন রোটেশন পরিবর্তন * ভেক্টর 3 কারেন্ট পজিশন;
সুতরাং উদাহরণস্বরূপ: আমার 3D অবজেক্টটি পজিশনে রয়েছে (0,0,0) এবং আমার ঘূর্ণনটি আমি গুণ করি 180 right থেকে ডানদিকে, আমার শেষ অবস্থানটি (0, -50,0) এর মতো। সেই কোয়াটারিয়নের ভিতরে একটি অক্ষ রয়েছে - এবং সেই অক্ষটির চারপাশে একটি ঘূর্ণন রয়েছে। আপনি আপনার অক্ষটি Y অক্ষরের দিকে ঘুরিয়ে দিন।
ভেক্টর 3 আবর্তিতঅফসেটভেক্টর = কোয়ার্টেরিন রোটেশনচেন্জ * ভেক্টর 3 বর্তমানঅফসেটভেক্টর;
উদাহরণস্বরূপ: আমার শুরুর দিকের দিকটি ইউপি - (0,1,0) দেখায়, এবং আমার যে ঘূর্ণনটি আমি গুণ করি 180 180 থেকে ডানদিকে ঘূর্ণন, আমার শেষ দিকটি নীচে দেখানো হচ্ছে। (0, -1,0)
মিশ্রণ (লার্প এবং স্লার্প):
কোয়ার্টারিয়ন কারেন্ট ওরিয়েন্টেশন = কোয়ার্টেরিয়ন.স্লার্প (স্টার্টওরিয়েন্টেশন, এন্ডোরিয়েন্টেশন, ইন্টারপোলটার)
যদি ইন্টারপোলটারটি 1 হয়: কারেন্ট ওরিয়েন্টেশন = শেষ ওরিয়েন্টেশন
যদি ইন্টারপোলটার 0 হয়: কারেন্ট ওরিয়েন্টেশন = স্টার্টওরিয়েন্টেশন
স্লার্প আরও সুনির্দিষ্টভাবে ইন্টারপোলিট করে, লেয়ার্প আরও পারফর্ম্যান্টকে ইন্টারপোলিট করে।
আমার প্রশ্নগুলো):
আমি এখন পর্যন্ত যা কিছু ব্যাখ্যা করেছি তা কি সঠিক?
আপনি কি কোয়ার্টেরিয়ানসের সাথে "সমস্ত" করতে পারেন? (obv। না)
আপনি তাদের সাথে আর কি করতে পারেন?
2 কোয়ার্ট্রিয়নের মধ্যে ডট পণ্য এবং ক্রস পণ্য কী জন্য ভাল?
সম্পাদনা:
কিছু উত্তর সহ আপডেট প্রশ্ন
n
ভিন্ন ভিন্ন দৃষ্টিভঙ্গি (মনোভাব, ভঙ্গি ইত্যাদি) রয়েছে। তারপরে আপনি ওজনগুলি ব্যবহার করে কার্যকরভাবে স্ট্রিল্প / লেয়ারপকে সাধারণীকরণ করতে পারেন। আপনি একটি চৌম্বকটিকে একটি রোটরে রূপান্তর করতে পারেন, যা একটি অনড় দেহে নির্দিষ্ট সময়ের জন্য একটি কৌণিক বেগ প্রয়োগ করার সমতুল্য। সুতরাং আপনি কোয়ার্টেরিয়নের সাথে কৌণিক বেগ সংহতকরণও বর্ণনা করতে পারেন। দুটি প্রাচ্য কতটা পৃথক তা আপনিও অনুমান করতে পারেন (হাইপারস্পিয়ারে দুটি চতুর্ভুজ দ্বারা বিভক্ত তোরণটির দৈর্ঘ্য গণনা করুন)।