চূড়ান্ত অবস্থান হিসাবে ভেক্টরের চতুর্থ উপাদানটির সাথে গ্রাফিক্স কার্ড কী করবে?


25

এই প্রশ্ন থেকে এটি প্রদর্শিত হচ্ছে আপনি একটি চার-উপাদান অবস্থান ভেক্টর চাইবেন, কারণ ম্যাট্রিক্স গুণনের সাথে এর অবস্থানটি পরিবর্তন করা সহজ।

এটি নিজের দ্বারা বোঝানো হবে যে থ্রিডি পয়েন্টের উপস্থাপনা হিসাবে বিবেচনা করার সময় চতুর্থ উপাদানটি কেবল উপেক্ষা করা উচিত (কোনও রূপান্তর অনুমান করা নয়), তবে আমি জানি এটি সত্য নয়, যখন আমি জিপিইউতে একটি ভেক্টর 4 সরবরাহ করি, যদি চতুর্থটি উপাদান এক নয়, এটি রেন্ডার করা হয় না - কেন?

চতুর্থ উপাদানটির তাত্পর্যটি কী, একবার এটি রাস্টারাইজারে থাকলে?

সম্পাদনা : পর্যালোচনা করার সময় এই প্রশ্নটি কিছুটা খারাপভাবে উচ্চারিত হয়েছিল; এটি দ্বিতীয় অনুচ্ছেদের পক্ষে বলা আরও সঠিক হবে: "যদি চতুর্থ উপাদানটির মান নির্দিষ্ট পরিসরের মধ্যে না হয় তবে এটি 'সঠিকভাবে' / 'প্রত্যাশার মতো' রেন্ডার করা হয় না"।


স্থানাঙ্ক (x, y, z, 0.5) সহ একটি ভেক্টর 4 কি স্থানাঙ্ক (2x, 2y, 2z, 1) সহ ভেক্টর 4 এর একই ফলাফল দেয় না?
FxIII

@ এফএক্সআইআইআই, আমি ঠিক এটি পুনরুত্পাদন করতে সক্ষম হইনি তবে আপনি ঠিক বলেছেন যে আমার মূল পোস্টে একটি ভুল কম্বল বিবৃতি ছিল, আমি আরও কিছু পরীক্ষা-নিরীক্ষার পরে এটিকে আপডেট করেছি।
sebf

উত্তর:


23

চতুর্থ উপাদানটি দৃষ্টিভঙ্গি অভিক্ষেপ ট্র্যাক রাখতে একটি কৌশল। আপনি যখন একটি দৃষ্টিকোণ প্রক্ষেপণ করেন, আপনি z: x '= x / z, y' = y / z দিয়ে ভাগ করতে চান, তবে এটি কোনও অপারেশন নয় যা একটি 3x3 ম্যাট্রিক্স দ্বারা এক্স এর ভেক্টরে অপারেটিং দ্বারা প্রয়োগ করা যেতে পারে, y, z এটি করার জন্য যে কৌশলটি স্ট্যান্ডার্ড হয়ে উঠেছে তা হ'ল চতুর্থ স্থানাঙ্ক যুক্ত করা, ডাব্লু, এবং ঘোষণা করুন যে এক্স, ওয়াই, জেড সবসময় ডাব্লু দ্বারা সমস্ত রূপান্তর প্রয়োগের পরে এবং রাস্টেরাইজেশনের আগে বিভক্ত হবে।

পরিপ্রেক্ষিত অভিক্ষেপটি ম্যাট্রিক্স থাকার মাধ্যমে সম্পন্ন হয় যা জেডকে ডাব্লুতে স্থানান্তরিত করে, যাতে আপনি জেড দ্বারা বিভাজন শেষ করেন। তবে এটি আপনাকে ডাব্লু = 1.0 ছাড়ার নমনীয়তাও দেয় যদি আপনি কোনও বিভাজন করতে চান না; উদাহরণস্বরূপ যদি আপনি কেবল একটি সমান্তরাল অভিক্ষেপ, বা একটি ঘূর্ণন বা যা কিছু চান তা চান।

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

(বিটিডাব্লু, গাণিতিকভাবে, ডাব্লু এর সাথে সংযুক্ত ভেক্টরগুলি সমজাতীয় স্থানাঙ্ক হিসাবে পরিচিত , এবং তারা প্রজেক্টিভ স্পেস নামে পরিচিত এমন জায়গায় বাস করে However তবে, থ্রিডি গ্রাফিক্স করার জন্য আপনার উচ্চতর গণিতটি বোঝার দরকার নেই))


আবার সেই শর্তগুলিতে ভেক্টর এবং পয়েন্টগুলি সম্পর্কে কথা বলতে কিছুটা ভুল কারণ পয়েন্ট এবং ভেক্টরগুলির মধ্যে আইসোমরফিজম রয়েছে (যে বিন্দু এবং ভেক্টরটি মূলটিকে সেই বিন্দুতে সরিয়ে দেয় একই সত্তা)। পয়েন্ট / ভেক্টর (ডাব্লু! = 0) এবং (সম্ভাব্য) দিকনির্দেশ (ডাব্লু = 0) সম্পর্কে কথা বলতে আরও সঠিক হবে। যাইহোক, "ভেক্টর" শব্দের অপব্যবহার 3 ডি গ্রন্থাগারগুলির ভাষার বেশ একীভূত মান।
FxIII

@ এফএক্সআইআইআই: সংশোধন করা হয়েছে। স্ট্যান্ডার্ড গণিত অর্থে "ভেক্টর" এবং একই পোস্টে "দিকনির্দেশনা" এর প্রতিশব্দ হিসাবে ব্যবহার করা বিভ্রান্তিকর ছিল।
নিকল বোলাস 21

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

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

@ নাথান, আমি এখন স্পষ্টভাবে দেখতে পাচ্ছি চতুর্থ উপাদানটির উদ্দেশ্য এবং এতে থাকা তথ্য কীভাবে রাস্টারাইজার ব্যবহার করে। অনেক ধন্যবাদ!
sebf

10

নাটনের যথাযথ মন্তব্যের জবাব দেওয়ার জন্য, আমি কিছুটা বিবেচনা করেছি যা আপনি যখন ইউফ্লিন স্পেসে ভেক্টরগুলি স্ট্যান্ডার্ড ইউক্লিডিয়ান স্পেসে উপস্থাপনের জন্য অ্যাফাইন স্পেসে ব্যবহার করেন তখন কী ঘটেছিল তা বোঝার জন্য দরকারী হতে পারে।

প্রথমে আমি ভেক্টরকে কল করব যা কিছু স্থানাঙ্ক রয়েছে তাই একটি পয়েন্ট এবং ভেক্টর একই সত্তা; আপনি কোনও ভেক্টরকে দুটি পয়েন্টের পার্থক্য হিসাবে দেখতে পাচ্ছেন: ভি = বি - ; ভী চলে আসে একটি মধ্যে বি কারণ একজন + + ভী = একটি + + বি - একটি = বিA = 0 (মূল) রাখুন এবং আপনি পাবেন যে ভি = বি - 0 = বি : পয়েন্ট বি এবং ভেক্টর যে 0 টি সরানথেকে বি একই জিনিস।

আমি "ভেক্টর" ডাকব - 3 ডি গ্রন্থাগারের বেশিরভাগ ক্ষেত্রে ব্যবহৃত অর্থে - যখন affine স্পেসের কোনও ভেক্টর ডাব্লু = 0 থাকে।

ম্যাট্রিক্সটি ব্যবহার করা হয় কারণ তারা আপনাকে একটি কমপ্যাক্ট / মার্জিত / দক্ষ আকারে লিনিয়ার ফাংশন উপস্থাপন করতে দেয় তবে লিনিয়ার ফাংশনগুলির প্রধান অসুবিধা রয়েছে যা উত্সকে রূপান্তর করতে পারে না: F ( 0 ) = 0 যদি F রৈখিক হতে চায় ( অ্যামোগ অন্যান্য জিনিস যেমন এফ (λ এক্স ) = λF ( এক্স ) এবং এফ ( + বি ) = এফ ( ) + এফ ( বি ))

এর অর্থ হ'ল আপনি এমন ম্যাট্রিক্স তৈরি করতে পারবেন না যা কোনও অনুবাদ করে যেহেতু আপনি কখনই 0 ভেক্টর স্থানান্তর করবেন না । এখানে অ্যাফাইন স্পেস খেলতে আসে । অ্যাফাইন স্পেস ইউক্যালিডিয়ান স্পেসে একটি মাত্রা যুক্ত করে যাতে স্কেলিং এবং ঘূর্ণনের সাহায্যে ট্র্যাসলানশন করা যায়।

এফাইন স্পেস এই অর্থে একটি অভিক্ষিপ্ত স্থান যে আপনি আফাফিন এবং ইউক্লিডিয়ান ভেক্টরগুলির মধ্যে সমতা সম্পর্ক তৈরি করতে পারেন যাতে আপনি তাদের বিভ্রান্ত করতে পারেন (যেমন আমরা পিন এবং ভেক্টর দিয়েছিলাম)। একই অভিমুখে উত্সের সাথে প্রকল্প করা সমস্ত affine ভেক্টর একই ইউক্লিডিয়ান ভেক্টর হিসাবে দেখা যেতে পারে।

এর অর্থ হ'ল স্থানাঙ্কগুলিতে সমান অনুপাতযুক্ত সমস্ত ভেক্টরকে সমতুল্য হিসাবে বিবেচনা করা যেতে পারে:

গাণিতিকভাবে:

সমানতা

অর্থাত্ প্রতিটি অ্যাফাইন ভেক্টরকে একটি ক্যানন সংস্করণে হ্রাস করা যেতে পারে যেখানে ডাব্লু = 1 (আমরা প্রতিটি সমতুল্য ভেক্টরের মধ্যে আমাদের পছন্দটি পছন্দ করি)।

ভিজ্যুয়ালি (2 ডি ইউক্লিডিয়ান - 3 ডি অ্যাফাইন):

চাক্ষুষ সমতুল্যতা

অতএব "প্রজেটিভ" স্পেসের গড় ; আপনার লক্ষ্য করা উচিত যে এখানে ইউক্লিডিয়ান স্পেস 2 ডি (সায়ান অঞ্চল)

অ্যাফাইন ভেক্টরগুলির একটি নির্দিষ্ট সেট রয়েছে যা তাদের প্রচলিত সংস্করণে (স্বাচ্ছন্দ্যে) স্থাপন করা যায় না যা (হাইপার) বিমানে ডাব্লু = 0 থাকে।

আমরা এটি দর্শনীয়ভাবে প্রদর্শন করতে পারি:

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

আপনি যা দেখেছেন তা হ'ল ডাব্লু -> 0 এর পরে ইউক্লিডিয়ান স্পেসে অনুমান করা ভেক্টর অসীমের কাছে চলে যায় তবে একটি নির্দিষ্ট দিকনির্দেশে অসীমের দিকে যায় ।

এখন স্পষ্ট যে প্রজেক্টিভ স্পেসে দুটি ভেক্টর যুক্ত করা সমস্যার সৃষ্টি করতে পারে যখন আপনি ইউক্যালিডিয়ান স্পেসে যোগ ভেক্টরটিকে অনুমিত ভেক্টর হিসাবে বিবেচনা করেন, এই সংযোজন করা হয় কারণ আপনি affine স্পেসে ডাব্লু উপাদানগুলিকে যোগ করবেন এবং তারপরে তাদের প্রজেক্ট করবেন ইউক্লিডিয়ান (হাইপার) বিমান

এই কেন আপনি "ভেক্টর" একমাত্র "পয়েন্টস" যোগফল পারবেন না কারণ একটি "ভেক্টর" W "বিন্দু" এর তুল্য পরিবর্তন করবে না এই শুধুমাত্র জন্য সত্য "পয়েন্টস" যেখানে W = 1:

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

আপনি যেমন দেখছেন যে সবুজ পয়েন্ট হ'ল সায়ান "পয়েন্ট" এবং ভি "ভেক্টর" উপস্থাপনকারী দুটি অ্যাফাইন ভেক্টর যুক্ত করে , তবে আপনি যদি ক্যাননের সাথে আলাদা আলাদা ফর্মের মধ্যে প্রতিটি অ্যাফাইন ভেক্টরকে ভি প্রয়োগ করেন তবে আপনি পাবেন একটি ভুল ফলাফল (লাল "" পয়েন্ট "")।

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

বলেছিলেন যে, জিপিইউ ধরে নিচ্ছে যে ভ্যাক্টর 4 এর ডাব্লু = 0 বা ডাব্লু = 1 থাকতে হবে তা ভেবে যুক্তিসঙ্গত , যদি না আপনি সত্যিই জানেন যে আপনি কী করছেন।


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

প্রজেক্টিভ স্পেসের একটি ভাল ব্যাখ্যার (এবং ডায়াগ্রাম!) জন্য +1। তবে, অ্যাফাইন স্পেস এবং প্রজেক্টিভ স্পেস একই জিনিস নয় ( অ্যাফাইন স্পেসের উইকিপিডিয়া সংজ্ঞা দেখুন )। সম্ভবত এটি বলার একটি ভাল উপায় হ'ল: 3 টি-স্পেস এবং অ্যাফাইন 3-স্পেস প্রজেক্টিভ উভয়ই আর ^ 4 এ এমবেড করা যেতে পারে তবে এমবেডিংগুলি সম্পূর্ণ ব্যঞ্জনবর্ণ নয়। ডাব্লু = 0 হিসাবে অ্যাফাইন স্থান থেকে ভেক্টরগুলিকে এনকোড করা সম্ভব এবং দরকারী, তবে ভবিষ্যদ্বাণীগত দৃষ্টিকোণ থেকে অর্থবহ নয়। তেমনিভাবে, ভবিষ্যতের দিকনির্দেশগুলি (অনন্তের পয়েন্টগুলি) অ্যাফাইন দৃষ্টিকোণ থেকে অর্থবহ নয়।
নাথান রিড

1

(X, y, z, w) এর মতো একটি ভেক্টর ধরে নিন। এই ভেক্টরের 4 টি উপাদান রয়েছে x (মহাশূন্যে x স্থানাঙ্ক), y (মহাশূন্যে y স্থানাঙ্ক), z (স্থানটিতে z স্থানাঙ্ক) এবং আকর্ষণীয় এবং রহস্যময় w উপাদান w প্রকৃতপক্ষে বেশিরভাগ 3 ডি গেম 4 ডি স্পেসে কাজ করে 4 এটিকে 4 ডি সমজাতীয় স্থানও বলা হয়। এর কিছু সুস্পষ্ট সুবিধা রয়েছে ->

1> এটি অনুবাদ এবং রোটেশনের ম্যাট্রিক্সগুলিকে একের সাথে সংহত করতে আমাদের সহায়তা করে B তবে আপনি ভাবছেন যে এটির কী ব্যবহার আমরা কেবল অনুবাদ এবং ঘূর্ণন ম্যাট্রিক্সকেই গুণ করতে পারি এবং এটি আর কিছুই নেই f যদি আমাদের কাছে না থাকে তবে আমাদের সমস্ত ভেক্টরগুলিতে ডব্লিউ উপাদান যখন আমরা 3 ডি ভেক্টরকে (এক্সওয়াইজ) অনুবাদ এবং রোটেশনের সম্মিলিত ম্যাট্রিক্সকে যেভাবেই কোনওভাবে গুণ করব আমরা এক্স, ওয়াই বা জেড দিয়ে মানকে অজ্ঞাতে স্কেল করব (এটিই ম্যাট্রিক্সের গুণকে কার্যকর করবে) এবং এটি হবে স্কেলিংয়ের কারণে সম্ভবত পজিশন ম্যাট্রিক্স (সংযুক্ত ম্যাট্রিক্সের অনুবাদ অংশ) দূষিত হয়েছে this এই সমস্যাটি সংশোধন করার জন্য চতুর্থ উপাদান ভেক্টর প্রবর্তন করা হয়েছে এবং ভেক্টরের এই উপাদানটি (99) ক্ষেত্রে 99% ক্ষেত্রে মান রাখবে his এই চতুর্থ উপাদানটি আমাদের অনুমতি দেয় আনসকেলেড পজিশনের মান থাকতে হবে (অনুবাদ) mat ম্যাট্রিক্সটি-> হিসাবে উপস্থাপিত হয়

 [x y z w] [rx1 rx2 rx3 1]
           [ry1 ry2 ry3 1]
           [rz1 rz2 rz3 1]
           [px  py  pz  1]

এবং তারপরে আমাদের কাছে সহজ তবে শক্তিশালী ম্যাট্রিক্স রয়েছে। :)

2> আমরা জেড ভ্যালুটি দৃষ্টিকোণ প্রজেকশন পর্যায়ে ডাব্লু উপাদানগুলিতে অনুলিপি করি এবং এর সাথে x, y ভাগ করে নিন T এইভাবে পর্দা থেকে দূরে সরে যাওয়ার সাথে অবজেক্টগুলি সংক্ষিপ্ত হয়ে যায়।


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