একটি ম্যাট্রিক্স কী উপস্থাপন করে?


19

আমি সম্প্রতি ওপেনজিএল শিখতে শুরু করেছি এবং ম্যাট্রিকগুলি কী এবং কম্পিউটার গ্রাফিক্সে তাদের ভূমিকা ভিজ্যুয়ালাইজ করতে সমস্যা হচ্ছে problems এই জাতীয় 4x4 ম্যাট্রিক্সের টেম্পলেটটি দেওয়া হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

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

তবে সেখানে ক Xx, ক Xyএবং ক কেন Xz? আমি পড়েছি যে এটির একটি পৃথক অক্ষ (উপরে, বাম, এগিয়ে) তবে তবুও মাথা বা তাত্পর্যটি তাত্পর্যপূর্ণ করতে পারে না।

উত্তর:


19

কম্পিউটার গ্রাফিক্সের ম্যাট্রিকগুলি হ'ল মডেলের প্রতিটি সমন্বয়কে দেওয়া রূপান্তর। প্রতিটি ম্যাট্রিক্স একটি স্থানাঙ্ক (3 স্পেসের একটি বিন্দু) এ প্রয়োগ করতে একাধিক রূপান্তরগুলির সংমিশ্রণ।

ট্রান্সফর্মেশন তৈরি করা তিনটি রূপান্তর ধরণের যেকোন একটি থেকে ভিত্তি করে: অনুবাদ করুন, ঘোরান এবং স্কেল করুন।

একটি অনুবাদ ম্যাট্রিক্স হ'ল কিছু:

একটি অনুবাদ ম্যাট্রিক্স

এবং একটি স্কেল ম্যাট্রিক্স: স্কেল ম্যাট্রিক্স

ঘূর্ণন ম্যাট্রিকগুলি দেখতে দেখতে:

এখানে চিত্র বর্ণনা লিখুন

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


4
হে তাই ম্যাট্রিকগুলি পয়েন্টগুলি উপস্থাপন করে না। আমি এখন বিব্রত হয়েছি
স্যাড

পুরোপুরি কোনও বস্তু বা ভিউপোর্টে এগুলি প্রয়োগ করা হয় (আপনি কীভাবে আপনার অর্থো বনামের দৃষ্টিভঙ্গি দেখেন তা নির্ধারণ করে)
অ্যালেক্স শেপার্ড

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

আপনার সমন্বয় একটি 3-tuple। কেন ম্যাট্রিক্স 3 বার 3 নয়? মনে করুন তিনটি ধরণের রূপান্তরকে একক ম্যাট্রিক্সে একত্রিত করতে সক্ষম হওয়ার জন্য এবং এখনও পর্যাপ্ত স্থান রয়েছে তবে নীচের অংশে ডান কোণটি কী করছে, দেখে মনে হচ্ছে এটি সবসময় 1?
n611x007

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

10

কম্পিউটার গ্রাফিক্সে, আমরা রূপান্তরগুলি এনকোড করতে ম্যাট্রিক ব্যবহার করি ।

কেবলমাত্র অনুবাদ, রোটেশন বা স্কেলিং ট্রান্সফর্মগুলি সমন্বিত ম্যাট্রিকগুলিতে একটি সাধারণ-শোষিত ব্যাখ্যা থাকে: ম্যাট্রিক্সের উপরের-বাম 3x3 এ কেবল ঘূর্ণন বা স্কেল ডেটা থাকে, নীচের সারি বা ডান কলামে অনুবাদ ডেটা থাকে। এই না একটি সাধারণত্ব, কিন্তু প্রায়ই কম্পিউটার গ্রাফিক্স মধ্যে প্রতিনিধিত্ব রূপান্তরের উপসেট জন্যে যথেষ্ট নয় যে মানুষ এটা ব্যবহার করতে সত্য।

একইভাবে, ম্যাট্রিক্সের মানগুলির সাথে সম্পর্কিত মেট্রিক্স প্রতিনিধিত্ব করে (যা সর্বদা "বিশ্ব স্থান," আমার নোট করা উচিত নয়) সম্পর্কিত মান সমন্বয়ের ফ্রেমের মধ্যে একটি সম্পর্ক রয়েছে। উপরের বাম 3x3 কলাম (বা সারি) স্থানাঙ্ক ফ্রেমের X, Y এবং Z অক্ষকে উপস্থাপন করে।

থাকুক বা না থাকুক সারি অক্ষ প্রতিনিধিত্ব বা কলাম আপনি যেমন গুন কনভেনশন ব্যবহার করছেন কিনা উপর নির্ভর করে row vector * matrixবা matrix * column vector। ম্যাট্রিক্স গুণনের সময়, দুটি ম্যাট্রিকের অভ্যন্তরীণ মাত্রাগুলি অবশ্যই একমত হতে পারে এবং তাই আপনি সারি ম্যাট্রিক বা কলামের ম্যাট্রিক্সের প্রভাব হিসাবে ভেক্টরগুলিকে প্রতিনিধিত্ব করছেন কিনা (ওপেনজিএল এবং ট্র্যাডিশনাল ম্যাথ কলাম ভেক্টরকে পছন্দ করে)।

আমি লিনিয়ার বীজগণিত সম্পর্কে একটি ভাল বই পেতে বা কমপক্ষে ম্যাট্রিক্স এবং কোয়ার্টেরিয়ান এফএকিউ এবং ডাইরেক্টএক্স এবং ওপেনগিএলে ম্যাট্রিক্স লেআউটে এই পোস্টটি দেখার পরামর্শ দিচ্ছি ।


রৈখিক বীজগণিতের জন্য প্রচুর "ভাল" বই রয়েছে যার কয়েকটি আমি এমনকি পড়েছি এবং বুঝতে পেরেছি। জিনিসটি এটি কিছুটা সাহায্য করে না, আমার কাছে সেগুলিও নয় যে আমি এটি বুঝতে পারি না। আপনার শেষ পরামর্শটি ভুল অনুমানের উত্তর দিচ্ছে বলে আমার অনুভূতি রয়েছে।
n611x007

9

ম্যাট্রিক্স কী?

mকলাম এবং nসারি সহ একটি ম্যাট্রিক্স একটি ফাংশন প্রতিনিধিত্ব করে যা উপাদানগুলি (বা স্থানাঙ্ক) সহ একটি ভেক্টর * গ্রহন mকরে এবং nউপাদানগুলির সাথে একটি ভেক্টর তৈরি করে।

এ থেকে আপনি পর্যবেক্ষণ করতে পারবেন যে যদি এবং শুধুমাত্র কোনও ম্যাট্রিক্স বর্গক্ষেত্র হয় তবে ভেক্টরের মাত্রা পরিবর্তন হবে না। যেমন। আপনি একটি 3D ভেক্টর, 2D থেকে 2D ইত্যাদি রূপান্তর করে একটি 3D ভেক্টর পান

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

ম্যাট্রিক্স দিয়ে গুণনের অর্থ কী?

সুতরাং যদি ম্যাট্রিক্স একটি ফাংশন হয় তবে কোন ধরণের ফাংশন ? ফাংশনটি কী করে? এটির জন্য রেসিপিটি ম্যাট্রিক্সের উপাদানগুলির দ্বারা সংজ্ঞায়িত করা হয়। আসুন ইনপুট u, আউটপুট v, ম্যাট্রিক্সকে কল করুন M(গুণটি M*u=vতখন একই হিসাবে হয় f(u)=v) এবং u(i)এর iতম উপাদান দেয় u(উদাহরণস্বরূপ 2 য় উপাদানটি হ'ল স্থানাঙ্ক,)। ম্যাট্রিক্সের জন্য, M(i,j)অর্থ সারি i, কলাম j

উপাদানের নির্মাণ v(1), ফলাফলের প্রথমটি ম্যাট্রিক্সের প্রথম সারিতে বর্ণিত হয়। u(1)বার M(1,1), আরও u(2)সময় M(1,2), ... আরও u(i)বার M(1,i)। একটি ম্যাট্রিক্স একটি খুব সাধারণ প্রোগ্রামিং ভাষার মতো, এটি কেবল প্রোগ্রামিং ফাংশনগুলির পক্ষে ভাল যা ইনপুটগুলির চারপাশে এলোমেলো করে, তাদের নিজের মধ্যে যুক্ত করে ইত্যাদি কাজ করে **

আপনি একবারে আউটপুটের একটি উপাদান নিয়ে কাজ করছেন তা কল্পনা করা সহায়ক, অতএব, আপনি একবারে ম্যাট্রিক্সের কেবল একটি সারি ব্যবহার করছেন। আপনি uঅনুভূমিকভাবে লিখুন । আপনি Mএটি নীচে ith সারি লিখুন । আপনি প্রতিটি উপরের / নীচের জোড়াকে গুণিত করুন এবং নীচের পণ্যগুলি লিখুন, তারপরে পণ্যগুলি যুক্ত করুন। প্রতিটি উপাদান পেতে প্রতিটি সারিতে পুনরাবৃত্তি করুন v। (এখন আপনি দেখতে কেন একটি mদ্বারা nম্যাট্রিক্স একটি অন কাজ করতে হবে mভেক্টর এবং উত্পাদন nভেক্টর।)

এ সম্পর্কে চিন্তা করার আরেকটি উপায় - আসুন আমরা বলি যে আমরা একটি 3 ডি থেকে 3 ডি রূপান্তর করছি, সুতরাং একটি 3x3 ম্যাট্রিক্স (বা 3 ডি রূপান্তর হিসাবে তারা প্রায়শই বলা হয় কারণ আপনি এই "ফাংশন" ভঙ্গ করতে পারেন 3D পয়েন্ট, যদিও এটি সত্যই এটি শুধু সংখ্যাগুলি পরিবর্তন করা)। প্রথম সারির কথাটি বলা যাক [1 2 0]। এর অর্থ, ফলাফলের এক্স পেতে, ইনপুট এর এক্স এর 1, ইনপুট এর y এর 2 এবং ইনপুট এর z এর 0 পান। সুতরাং এটি সত্যিই একটি রেসিপি।

** : ম্যাট্রিক্স যদি প্রোগ্রামিং ভাষা হয় তবে তাও টুরিং সম্পূর্ণ নয়।

দুটি ম্যাট্রিকের গুণনের অর্থ কী?

তারা উপযুক্ত আয়তনের উভয় ম্যাট্রিক্স হন, তারপর A*B"প্রথম প্রযোজ্য যা একটি ফাংশন মানে Bতারপর A"। গুণমানের জন্য আকারগুলির প্রতিবন্ধকতাগুলি কেন বিদ্যমান তা আপনি দেখতে পারেন, কারণ আকারটি ইনপুট এবং আউটপুট আকার নির্ধারণ করে এবং একটি ম্যাট্রিক্স অন্যটির আউটপুট গ্রাস করে। গুণ কারণ মানে ফাংশন একত্রিত? এটি হওয়া সহজ লক্ষ্য করা সহজ। যদি A*uহিসাবে একই f(u)এবং B*uহিসাবে একই g(u)তারপর f(g(u))হিসাবে একই f(B*u)যা হিসাবে একই A*(B*u)

একইভাবে, একই ফাংশনটির বারবার প্রয়োগগুলি শক্তি হিসাবে প্রদর্শিত হতে পারে, যেহেতু তিনবার প্রতিনিধিত্ব A*A*Aকরে এমন ফাংশনটি প্রয়োগ করা A

ম্যাট্রিকগুলি কীভাবে দরকারী?

কোনও রূপান্তরকরণের মতো কী করা ভাল new_x = 1*x+2*y+0*z(যদি প্রথম সারিটি [1 2 0] হয়)? এটি খুব সুস্পষ্ট নয়, তবে এটি ব্যাখ্যা করার জন্য আরও একটি 2 ডি ম্যাট্রিক্স নেওয়া যাক। ম্যাট্রিক্সটি হ'ল:

[ 0 1
  1 0 ]

বা [0 1; 1 0]সুবিধাজনক মতলব স্বরলিপি ব্যবহার করে। এই ম্যাট্রিক্স কি করে? এটি এর মতো একটি 2 ডি ভেক্টরকে রূপান্তর করে: ফলাফলের এক্সের জন্য, ইনপুটটির y এর 1 নিন take ফলাফলের y এর জন্য, ইনপুটটির x এর 1 নিন। আমরা সবেমাত্র ইনপুটটির x এবং y স্থানাঙ্কগুলি অদলবদল করেছি - এই ম্যাট্রিক্সটি x = y লাইন সম্পর্কে পয়েন্ট প্রতিফলিত করে । এই ধরণের দরকারী! এক্সটেনশন করার মাধ্যমে, আপনি যে বরাবর 1s সঙ্গে সব ম্যাট্রিক্স দেখতে পাবেন দঃপঃ - এনই লাইন প্রতিফলিত করে। আপনি দেখতে পাবেন কেন পরিচয় ম্যাট্রিকগুলি আপনাকে ইনপুট ফিরিয়ে দেয় (আউটপুট x এর জন্য, এক্সপুট এক্স নিতে; আউটপুট এর y এর জন্য, y ইনপুট নিন ...)।

এখন আপনি দেখতে পাচ্ছেন যে চিহ্নগুলি যেমন। Xx, Yx- তারা ইনপুটের কত অর্থ X, Yইত্যাদি আউটপুট মধ্যে যায় x

আর কীভাবে ম্যাট্রিক্স দরকারী?

আপনি আর কি রূপান্তর করতে পারেন? আপনি একটি পরিচয় ম্যাট্রিক্স নিয়ে আকার পরিবর্তন করতে পারেন, তবে 1 টির চেয়ে আলাদা সংখ্যার সাথে তির্যক বরাবর। উদাহরণস্বরূপ, [2.5 0; 0 22.5]ইনপুটটির প্রতিটি স্থানাঙ্ককে 2.5 দ্বারা গুণিত করবে এবং আপনি যদি কোনও চিত্রের প্রতিটি বিন্দুতে এই ম্যাট্রিক্স প্রয়োগ করেন তবে ছবিটি 2.5 হিসাবে বড় হবে। যদি আপনি কেবল একটি সারিতে 2.5 ব্যবহার করেন ( [2.5 0; 0 1]) তবে কেবলমাত্র x স্থানাঙ্ককে গুণিত করা হবে, সুতরাং আপনি কেবল x বরাবর প্রসারিত করতে পারবেন।

অন্যান্য ম্যাট্রিকগুলি "স্কিউইং" এর মতো অন্যান্য রূপান্তর দিতে পারে, যার বিভিন্নতার ডিগ্রি রয়েছে। ব্যক্তিগতভাবে, স্কিউ আমার সর্বনিম্ন প্রিয় কারণ ম্যাট্রিক্স এত সহজ দেখাচ্ছে তবে রূপান্তর নিজেই ম্যাঙ্গেল ছবি বাদে খুব কমই কিছু করে। একটি দরকারী একটি "আবর্তন" - আপনি কীভাবে একটি বিন্দু ঘোরান? বিন্দুর অবস্থান কাজ করার চেষ্টা করুন (x, y)দ্বারা আবর্তিত পর thetaবামাবর্তে উৎপত্তি সম্পর্কে ডিগ্রী। আপনি দেখতে পাবেন যে নতুন এক্স এবং ওয়াই উভয় স্থানাঙ্কগুলি কিছুটা সাইন এবং থাইটার কোজাইন দ্বারা পুরাতন x এবং y এর গুণক থেকে বেরিয়ে এসেছে। সাইন এবং কোসাইন যা এই ফাংশনের সাথে মিল রেখে আপনি সহজেই একটি রোটেশন ম্যাট্রিক্স লিখতে সক্ষম হবেন।

স্কোয়ারবিহীন ম্যাট্রিক্সের সাহায্যে আপনি একটি ইনপুটটির মাত্রাও পরিবর্তন করতে পারেন। 2 ডি ইনপুট 3 ডি তে রূপান্তর করা খুব কার্যকর নয়, যেহেতু নতুন স্থানাঙ্কের জন্য কোনও "উত্পাদন" করা শক্ত, তবে 3 ডি 2 ডি তে খুব দরকারী। অন্যান্য জিনিসের মধ্যে, আপনার কম্পিউটারটি আপনার মনিটরে আঁকতে *** একটি 3 ডি দৃশ্যের 2D চিত্রে প্রজেক্ট করতে জানে ।

যেহেতু ভেক্টরগুলি বিভিন্ন জিনিস ধরে রাখতে পারে তাই আপনি এমন একটি ম্যাট্রিক্সও বর্ণনা করতে পারেন যা একবারে একটি স্ট্রিং এন-অক্ষরগুলি এনক্রিপ্ট করে তাদের চারপাশে বদল করে বা "গুণিত" করে (আপনাকে গুণন / সংযোজন ফাংশন নিয়ে আসতে হবে)।

*** : আপনি যখন প্রকল্প করবেন , আপনি কোনও ভাস্কর্যের মতো একটি 3 ডি অবজেক্ট নিয়ে যান, এতে একটি আলো জ্বালান, এবং কোনও প্রাচীরের মধ্যে কী ধরণের 2 ডি ছায়া ফোঁটায় তা দেখুন।

ম্যাট্রিকের সীমাবদ্ধতাগুলি কী কী?

আপনি কি ম্যাট্রিক্স দিয়ে প্রতিটি ফাংশন করতে পারবেন? না। গ্রাফিকভাবে ভাবছেন, এমন কিছু কল্পনা করা শক্ত যা ম্যাট্রিক্স কিছু করতে পারে না (তবে এটি বিদ্যমান: উদাহরণস্বরূপ "ঘূর্ণি" প্রভাব তৈরি করা যায় না)। যাইহোক, এখানে একটি সহজ উদাহরণ: আসুন বলি ফাংশনটি fএমন যা f(u)আপনাকে u প্রতিটি উপাদান স্কোয়ার সহ ফিরিয়ে দেয় । আপনি দেখতে পাবেন যে আপনি এটির জন্য ম্যাট্রিক্স লিখতে পারবেন না: ম্যাট্রিকের সাহায্যে কেবলমাত্র রেসিপিগুলি বর্ণনা করার সুবিধা রয়েছে যা ধ্রুবক সংখ্যার মাধ্যমে বহুগুণ স্থানাঙ্ক করে, পাওয়ার মতো অন্য কোনও অভিনব ক্রিয়াকলাপ প্রকাশ করা যায় না।

**** : এ কারণেই একে লিনিয়ার বীজগণিতও বলা হয় - পাওয়ার ফাংশনটি অ-রৈখিক হয় , প্লট করার সময় এটি সরলরেখা তৈরি করে না।

4 ডি ম্যাট্রিক্সগুলিতে অদ্ভুত অতিরিক্ত সারিতে

এখন, কেন আপনার উদাহরণে মেট্রিক্স 4 বাই 4? এর অর্থ কি 4-মাত্রিক স্থান নয়? আমাদের 4 ডি কম্পিউটার নেই, তবে কেন? এটি ম্যাট্রিক্স সহ একটি আকর্ষণীয় কৌশল যা লিনিয়ার অপারেশন সম্পর্কে পূর্ববর্তী পয়েন্টের সাথে সম্পর্কিত।

ম্যাট্রিক্স দিয়ে কোন ফাংশনগুলি করা যায় না সে সম্পর্কে: 2 ডি পয়েন্টটি 2 ইউনিট ডান দিকে নিয়ে যাওয়ার জন্য ম্যাট্রিক্স কী (যা পয়েন্টটি উত্পন্ন করে (x+2, y)? আবার, আমরা আটকে যাই the ইনপুটকে গুণ করার একটি উপায় আছে, তবে যুক্ত করার উপায় নেই) একটি ধ্রুবক। 2 ডি কাজের জন্য, কৌশলটি হ'ল আপনি আসলে 2D স্পেসে নন তবে 3 ডি স্পেসে সবকিছুর উচ্চতা (z স্থানাঙ্ক বা তৃতীয় উপাদান) বাদে সর্বদা 1 থাকে (এটি 2D মহাবিশ্ব কেমন হয় তার মতো কিছুটা) 3 ডি মহাবিশ্বের মেঝেতে কেবল একটি "প্লেট" শুয়ে আছে - সেক্ষেত্রে তৃতীয় স্থানাঙ্কটি সর্বদা 0 থাকে। তবে আপনি এই যাদুটিকে সর্বশেষ স্থানাঙ্ক হিসাবে ধ্রুবক হিসাবে ব্যবহার করতে পারেন, কারণ আপনি জানেন যে এটি প্রতিটি ইনপুট জন্য সর্বদা 1 থাকে।

তেমনি, 3 ডি পয়েন্টগুলি সরানোর জন্য আপনার 4 ডি স্থানাঙ্ক প্রয়োজন। এ কারণেই আপনি যে সমস্ত 3D ট্রান্সফর্মেশন ম্যাট্রিকগুলি দেখেন [0 0 0 1]সেগুলি সর্বশেষ সারি হিসাবে থাকবে - আপনার কখনই চতুর্থ মাত্রা পরিবর্তন করতে হবে না, বা ফলাফল 3 ডি তে প্রতিনিধিত্ব করতে খুব জটিল হবে!


সুতরাং আপনি সংযোজনের জন্য কীভাবে ম্যাট্রিক্স করবেন? বলুন একটি সারি Xx Yx Zx Tx... এবং শেষ সারিটি আসলে 0t 0t 0t 1tপরিবর্তিত হিসাবে রয়েছে Xt Yt Zt Tt। আপনার (x+2, y)কাছ থেকে তৈরি করা (x, y)যেতে পারে 1x 0y 0z 2tযে আপনি সঠিক সময় 1*x + 0*y + 0*z + 2*1থেকে দিতে হবে t=1? যা এক্স + 2 এর পরিমাণে অনেক বেশি। ওহে প্রিয় এখন আপনি মজাদার টি মানগুলির সাথে আপনার রেন্ডারিংয়ে গোলমাল করতে পারেন, তাই না? -গ্রিন- (দীর্ঘ পঠিত, এখনও সর্বোত্তম মান,
থেক্স

2

এটি একটি 4x4 কলাম-প্রধান ম্যাট্রিক্স এবং এর চেহারা থেকে ম্যাট্রিক্সের ভিউ।

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

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

যাইহোক, আপনার দর্শন ম্যাট্রিক্সের তিনটি কলাম সাধারণত অর্থেগোনাল হয়, এগুলি হ'ল এগুলি একে অপরের ডান কোণ form এটি প্রয়োজন হয় না, তবে traditionalতিহ্যবাহী ক্যামেরা তৈরি করার সময় এটি একটি খুব সাধারণ সম্পত্তি।


1

টিএল; ডিআর সংস্করণ:

[x y z]প্রতিটি সারিতে প্রথম তিনটি উপাদান রূপান্তরিত কুরর্ডিনেট সিস্টেমের একক ভিত্তিতে ভেক্টরকে উপস্থাপন করে। শেষ উপাদানটি wএকটি অনুবাদ উপাদান।

দীর্ঘ সংস্করণ

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

  • অক্ষের iউপর একটি বিন্দু , তবে 45 ডিগ্রি ঘোরানো। এই কেবল হয় , যেখানে এবং একটি ত্রিভুজ X অক্ষ করার জন্য একটি 45-ডিগ্রি অভ্যন্তর কোণ আপেক্ষিক সঙ্গে পা আছেন: ।x[1 0 0][i_x i_y i_z]i_xi_y[cos(45) sin(45) 0]
  • jY অক্ষের উপর একটি বিন্দু [0 1 0], তবে সেই অক্ষ থেকে 45 ডিগ্রি ঘোরানো হয়েছিল। এটি একটি কাগজের টুকরোতে স্কেচ করুন এবং আপনি দেখতে পাবেন যে, ঘড়ির কাঁটার বিপরীতে ঘোরার সময় উপাদানগুলি হয়ে যায় [-sin(45) cos(45) 0]
  • অক্ষের kউপর একটি বিন্দু z। এই উদাহরণে, zপ্রভাবহীন নয় যেহেতু আমরা (স্ক্রিন-প্রান্তিক) xy প্লেনে ঘুরছি

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

এগুলিকে আমরা কীভাবে ম্যাট্রিক্সে রাখি?

i_x i_y i_z
j_x j_y j_z
k_x k_y k_z

অথবা

 cos(45)  sin(45)    0
-sin(45)  cos(45)    0
    0        0       1

আপনি যদি এই ম্যাট্রিক্স দ্বারা কোনও ভার্টেক্সকে গুণ করেন তবে আপনি পাবেন

v1_x = v_x cos(Θ)     - v_y sin(Θ) + v_z * 0
V1_y = v_x*sin(Θ)    + v_y cos(Θ) + v_Z * 0
V1_z = v_x * 0        + v_y * 0    + v_z * 1

জন্য v = [1 0 0], এবং Θ = 90°, এটি হয়ে যায়v1 = [0 1 0]

অনুবাদের জন্য, আমরা একটি চতুর্থ সারি এবং কলাম যুক্ত করব এবং অনুবাদ উপাদানগুলি শেষ কলামে রেখেছি। আমরা wসাধারণত ভার্টেক্সে একটি চতুর্থ উপাদান যুক্ত করি 1। এটি এমন যে, যখন আমরা ম্যাট্রিক্স দ্বারা ভার্টেক্সকে গুণিত করি, ডাব্লু উপাদানটি শেষ কলামটি ইনপুট ভার্টেক্সে যুক্ত করতে দেয়, তাই শীর্ষবিন্দুটি সরানো বা অনুবাদ করা হয়। আমরা এইগুলিকে "একজাতীয় স্থানাঙ্ক" বলি। (আমাদের উদ্দেশ্যে, "সমজাতীয়" এর অর্থ হ'ল wপ্রতিটি ভেক্টরে একটি চতুর্থ উপাদান রয়েছে এবং আমরা 3x3 এর পরিবর্তে 4x4 ম্যাট্রিক্স ব্যবহার করি Frequently জিপিইউ-তে যা মূল্যবান মেমরি এবং ব্যান্ডউইথ ব্যবহার করে perspective চতুর্থ সারিতে দৃষ্টিভঙ্গি প্রজেকশন প্রয়োজন তবে অন্য কিছু নয়))

আশাকরি এটা সাহায্য করবে.


2
এই মুহূর্তে যখন আপনি বুঝতে পারবেন যে আপনি তিন বছর আগে থেকে একটি ইতিমধ্যে উত্তর প্রশ্নের উত্তর দিয়েছেন ...
ডিভে

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