Homogeneous Coordinates & Matrix Unification (হোমোজেনিয়াস কোঅর্ডিনেট ও ম্যাট্রিক্স একত্রীকরণ)
Transformation-I অধ্যায়ে আমরা একটি অদ্ভুত গাণিতিক সমস্যার মুখোমুখি হয়েছিলাম:
Scaling এবং Rotation হলো গুণ অপারেশন: P′=M⋅P (2×2 ম্যাট্রিক্স গুণ)।
কিন্তু Translation হলো যোগ অপারেশন: P′=P+T (ভেক্টর যোগফল)।
এই অমিলের কারণে একাধিক ট্রান্সলেশন ও রোটেশনকে আমরা একটি একক 2×2 ম্যাট্রিক্সে গুণ করে মেলাতে পারি না। ফলে প্রতিবার অবজেক্ট সরানোর সময় গ্রাফিক্স ইঞ্জিনকে ম্যাট্রিক্স গুণ থামিয়ে ভেক্টর যোগ করতে হতো, যা রিয়েল-টাইম রেন্ডারিংয়ে প্রচুর পারফরম্যান্স অপচয় ঘটায়।
সব ধরনের রূপান্তরকে একটি একক ম্যাট্রিক্স গুণন কাঠামোর আওতায় আনার জন্য কম্পিউটার গ্রাফিক্স দ্বিমাত্রিক কার্তেসীয় তল (x,y)-কে ত্রিমাত্রিক প্রজেক্টিভ স্পেস বা Homogeneous Coordinates-এ প্রকাশ করে:
(x,y)⟶xy1বাx⋅hy⋅hh(h=0)
স্ট্যান্ডার্ড ২ডি অ্যাফাইন (Affine) রূপান্তরের ক্ষেত্রে স্কেল প্যারামিটার হিসেবে h=1 ধরা হয়। অর্থাৎ যে কোনো ২ডি পয়েন্ট (x,y)-কে ৩-উপাদান বিশিষ্ট কলাম ভেক্টর [x,y,1]T হিসেবে লেখা হয়।
স্ট্যান্ডার্ড 3×3 অ্যাফাইন রূপান্তর ম্যাট্রিক্স
হোমোজেনিয়াস কোঅর্ডিনেট সিস্টেমে মৌলিক রূপান্তরগুলোর 3×3 রূপ:
১. ট্রান্সলেশন ম্যাট্রিক্স T(dx,dy)
x′y′1=100010dxdy1xy1
ম্যাট্রিক্স গুণ করলে আমরা সরাসরি পাই:
x′=1⋅x+0⋅y+dx⋅1=x+dxy′=0⋅x+1⋅y+dy⋅1=y+dy1=0⋅x+0⋅y+1⋅1=1
২. স্কেলিং ম্যাট্রিক্স S(Sx,Sy)
x′y′1=Sx000Sy0001xy1
৩. ঘূর্ণন ম্যাট্রিক্স R(θ)
x′y′1=cosθsinθ0−sinθcosθ0001xy1
2D Rotation: Derivation & Origin-Based Trajectory (২ডি ঘূর্ণন ও গাণিতিক প্রতিপাদন)
২ডি ঘূর্ণন (Rotation) হলো কোনো রেফারেন্স বিন্দুর সাপেক্ষে নির্দিষ্ট কোণে (θ) অবজেক্টকে একটি বৃত্তাকার পথে ঘোরানো। কম্পিউটার গ্রাফিক্সের স্ট্যান্ডার্ড নিয়ম অনুযায়ী:
ঋণাত্মক কোণ θ<0: ঘড়ির কাঁটার দিকে ঘূর্ণন (Clockwise / CW)।
পোলার ত্রিকোণমিতি থেকে প্রতিপাদন
মনে করি মূলবিন্দু থেকে P(x,y) বিন্দুর ব্যাসার্ধ দূরত্ব r এবং আদি কোণ ϕ:
x=rcosϕ,y=rsinϕ
বিন্দুটিকে যদি ঘড়ির কাঁটার বিপরীত দিকে θ কোণে ঘোরানো হয়, তবে নতুন মোট কোণ হবে (ϕ+θ)। ফলে নতুন স্থানাঙ্ক P′(x′,y′) দাঁড়ায়:
x′=rcos(ϕ+θ)
y′=rsin(ϕ+θ)
ত্রিকোণমিতির যৌগিক কোণের সূত্র প্রয়োগ করে:
cos(ϕ+θ)=cosϕcosθ−sinϕsinθ
sin(ϕ+θ)=sinϕcosθ+cosϕsinθ
এখানে rcosϕ=x এবং rsinϕ=y বসিয়ে পাই:
x′=(rcosϕ)cosθ−(rsinϕ)sinθ=xcosθ−ysinθ
y′=(rcosϕ)sinθ+(rsinϕ)cosθ=xsinθ+ycosθ
General Pivot-Point Rotation & Fixed-Point Scaling (নির্দিষ্ট বিন্দুর সাপেক্ষে ঘূর্ণন ও স্কেলিং)
১. মূলবিন্দুর সাপেক্ষে ঘূর্ণনের সীমাবদ্ধতা
যদি আপনি স্ট্যান্ডার্ড রোটেশন সূত্র সরাসরি প্রয়োগ করেন, তবে ঘূর্ণনটি ঘটবে মূলবিন্দু (0,0)-কে কেন্দ্র করে।
যেমন, স্ক্রিনের (5,8) অবস্থানে থাকা একটি ক্যারেক্টারকে ঘোরাতে চাইলে সে নিজের জায়গায় স্থির থেকে না ঘুরে (0,0)-কে কেন্দ্র করে বিশাল এক বৃত্তাকার পথে কক্ষপথের মতো ঘুরে স্ক্রিনের বাইরে চলে যাবে!
নিজের স্থানে স্থির রেখে যে কোনো পিভট পয়েন্ট বা কেন্দ্র (xr,yr)-এর সাপেক্ষে কোনো অবজেক্ট ঘোরাতে ৩টি ধাপ অনুসরণ করা হয়:
শিয়ারিং (Shearing) অপারেশন কোনো অবজেক্টের ক্ষেত্রফল অপরিবর্তিত রেখে তার অভ্যন্তরীণ সমান্তরাল তলগুলোকে কোণাকুণি পিছলে দেয়। ফলে আয়তক্ষেত্রটি সামান্তরিকে (Parallelogram) রূপান্তরিত হয়।
১. X-দিক বরাবর শিয়ারিং
y-স্থানাঙ্কের সমানুপাতিক হারে x-স্থানাঙ্ক ডানে বা বায়ে পিছলে যায়:
Composite Transformations & Matrix Multiplication (যৌগিক রূপান্তর ও ম্যাট্রিক্স গুণন)
যখন একের পর এক ধারাবাহিক রূপান্তর M1,M2,…,Mn প্রয়োগ করা হয়, তখন প্রত্যেকটি আলাদা আলাদাভাবে গুণ না করে আগে থেকেই সব ম্যাট্রিক্স গুণ করে একটি একক Composite Transformation Matrix Mnet তৈরি করা হয়:
P′=Mn⋅Mn−1⋯M2⋅M1⋅P
Mnet=Mn⋅Mn−1⋯M2⋅M1
গ্রাফিক্স কার্ডে কনক্যাটিনেশন কেন সুপার-ফাস্ট?
ধরুন একটি ৩ডি মডেলে ৫০,০০০ শীর্ষবিন্দু (Vertices) রয়েছে। যদি ৫টি রূপান্তর আলাদাভাবে প্রতি পয়েন্টে করতে হয়:
৫০,০০০×৫=২৫০,০০০ বার ম্যাট্রিক্স গুণ করতে হতো!
কিন্তু GPU আগে থেকেই ৫টি রূপান্তর ম্যাট্রিক্সকে একবার গুণ করে একটি একক Mnet বানিয়ে নেয়। ফলে ৫০,০০০ পয়েন্টের ওপর মাত্র ৫০,০০০ বারই গুণ করতে হয়—যার ফলে পারফরম্যান্স ৫ গুণ বৃদ্ধি পায়!
Inverse Transformations (বিপরীত রূপান্তর)
প্রতিটি রূপান্তরের একটি সুনির্দিষ্ট বিপরীত ম্যাট্রিক্স (M−1) থাকে, যা প্রয়োগ করলে অবজেক্ট পুনরায় আগের অবস্থায় ফিরে আসে (M⋅M−1=I):
রূপান্তর
মূল ম্যাট্রিক্স M
বিপরীত ম্যাট্রিক্স M−1
ভৌত ব্যাখ্যা
Translation
T(dx,dy)
T(−dx,−dy)
−dx,−dy দূরত্বে সরালে অবজেক্ট আবার শুরুতে ফেরে।
Scaling
S(Sx,Sy)
S(Sx1,Sy1)
বিপরীত ভগ্নাংশ দ্বারা গুণ করলে আদি সাইজ ফিরে পায়।
Rotation
R(θ)
R(−θ)=RT(θ)
উল্টো কোণে ঘোরানো (ম্যাট্রিক্স ট্রান্সপোজ করার সমান)।
Reflection
Mref
Mref−1=Mref
একই অক্ষের সাপেক্ষে দুবার উল্টালে আবার মূল শেপ পাওয়া যায় (M2=I)।
যৌগিক রূপান্তরের ইনভার্স
একাধিক ম্যাট্রিক্সের গুণফলের ইনভার্স বের করার সময় ক্রম উল্টে যায়:
নিচের সিমুলেটরে পিভট পয়েন্ট রোটেশন, ফিক্সড-পয়েন্ট স্কেলিং, বিভিন্ন অক্ষের সাপেক্ষে প্রতিফলন এবং শিয়ারিং টেস্ট করুন এবং লাইভ 3×3 ম্যাট্রিক্সের পরিবর্তন লক্ষ্য করুন:
University Exam Questions & Solutions (বিশ্ববিদ্যালয়ের সম্ভাব্য প্রশ্ন ও পূর্ণাঙ্গ সমাধান)
কম্পিউটার গ্রাফিক্স কোর্সের ফাইনাল পরীক্ষায় 2D Transformation-II (Homogeneous Coordinates, Arbitrary Pivot Rotation, Arbitrary Line Reflection, Shearing, Composite Matrix) থেকে সর্বাধিক আসা প্রশ্ন ও পূর্ণাঙ্গ গাণিতিক সমাধান নিচে দেওয়া হলো।
১. থিওরিটিক্যাল প্রশ্ন ও উত্তর (Theoretical Questions & Answers)
প্রশ্ন ১: হোমোজেনিয়াস কোঅর্ডিনেট কী এবং গ্রাফিক্স পাইপলাইনে এটি কেন অপরিহার্য?
উত্তর:
হোমোজেনিয়াস কোঅর্ডিনেট সিস্টেমে একটি N-মাত্রিক পয়েন্টকে (N+1) মাত্রায় প্রকাশ করা হয়—দ্বিমাত্রিক কার্তেসীয় তল (x,y)-কে [x,y,1]T আকারে লেখা হয়।
একত্রীকরণ (Unification):2×2 ম্যাট্রিক্সে ট্রান্সলেশন যোগফল (P+T) হলেও স্কেলিং ও রোটেশন ছিল গুণফল (M⋅P)। হোমোজেনিয়াস কোঅর্ডিনেট সিস্টেমে ট্রান্সলেশনকেও 3×3 ম্যাট্রিক্স গুণ হিসেবে প্রকাশ করা যায়।
কম্পোজিট ম্যাট্রিক্স চেইনিং: স্ক্রিনে রেন্ডার করার আগে হাজার হাজার রূপান্তরকে গুণ করে একটি একক 3×3 ম্যাট্রিক্স Mnet=Mn…M2M1 বানিয়ে লক্ষ লক্ষ ভার্টেক্সের ওপর দ্রুত প্রয়োগ করা যায়।
প্রশ্ন: Find the General Transformation matrix for window to viewport Transformation.
(উইন্ডো থেকে ভিউপোর্ট রূপান্তরের সাধারণ ট্রান্সফরমেশন ম্যাট্রিক্স নির্ণয় করো।)
ধাপে ধাপে পরীক্ষার সমাধান:
১ম অংশ: উইন্ডো থেকে ভিউপোর্ট রূপান্তরের ধারণা [২ নম্বর]
ওয়ার্ল্ড উইন্ডো (World Window):(xwmin,ywmin) থেকে (xwmax,ywmax) পর্যন্ত বিস্তৃত, যার প্রস্থ Ww=xwmax−xwmin এবং উচ্চতা Hw=ywmax−ywmin।
ডিসপ্লে ভিউপোর্ট (Display Viewport): স্ক্রিনের ওপর (xvmin,yvmin) থেকে (xvmax,yvmax) পর্যন্ত বিস্তৃত, যার প্রস্থ Wv=xvmax−xvmin এবং উচ্চতা Hv=yvmax−yvmin।
২. গাণিতিক সমস্যা ও পূর্ণাঙ্গ সমাধান (Mathematical Problems with Step-by-Step Solutions)
সমস্যা ১: নির্দিষ্ট পিভট বিন্দুর সাপেক্ষে ত্রিভুজের ঘূর্ণন
প্রশ্ন: একটি ত্রিভুজের শীর্ষবিন্দু তিনটি হলো A(1,1),B(4,1),C(2,3)। ত্রিভুজটিকে পিভট বিন্দু Pr(2,2)-এর সাপেক্ষে ঘড়ির কাঁটার বিপরীত দিকে θ=90∘ কোণে ঘোরাও।
সমাধান:
প্রদত্ত: পিভট xr=2,yr=2 এবং θ=90∘ (cos90∘=0,sin90∘=1)
উত্তর: রূপান্তরিত শীর্ষবিন্দুগুলো হলো A′(3,3),B′(3,6),C′(1,4)।
সমস্যা ২: অবাধ সরলরেখা y=x+2-এর সাপেক্ষে প্রতিফলন
প্রশ্ন:A(2,4),B(4,6),C(2,6) শীর্ষবিন্দু বিশিষ্ট ত্রিভুজটিকে y=x+2 সরলরেখার সাপেক্ষে প্রতিফলন করো।
সমাধান:
প্রদত্ত রেখা:y=1⋅x+2⟹m=1,c=2।
ঢাল m=tanθ=1⟹θ=45∘ (cos45∘=sin45∘=21)।
ধাপসমূহের ম্যাট্রিক্স রূপ:
T(0,−2)=1000100−21
R(−45∘)=21−21021210001
Refx=1000−10001
R(45∘)=21210−21210001
T(0,2)=100010021
যৌগিক রূপান্তর ম্যাট্রিক্স গুণ করলে পাওয়া যায়:M=010100−221
(অর্থাৎ x′=y−2 এবং y′=x+2)
শীর্ষবিন্দু রূপান্তর:
A(2,4):xA′=4−2=2,yA′=2+2=4⟹A′(2,4) (রেখার ওপর থাকায় স্থির থাকে)
B(4,6):xB′=6−2=4,yB′=4+2=6⟹B′(4,6) (রেখার ওপর থাকায় স্থির থাকে)
C(2,6):xC′=6−2=4,yC′=2+2=4⟹C′(4,4)
উত্তর: প্রতিফলিত ত্রিভুজের শীর্ষবিন্দুগুলো হলো A′(2,4),B′(4,6),C′(4,4)।
সমস্যা ৩: বর্গক্ষেত্রের ওপর শিয়ারিং (Shearing)
প্রশ্ন:A(0,0),B(2,0),C(2,2),D(0,2) শীর্ষবিন্দুবিশিষ্ট বর্গক্ষেত্রের ওপর shx=2 দ্বারা X-শিয়ারিং প্রয়োগ করো।
সমাধান:
X-Shear সমীকরণ:x′=x+shx⋅y,y′=y
A(0,0)⟶A′(0+2(0),0)=A′(0,0)
B(2,0)⟶B′(2+2(0),0)=B′(2,0)
C(2,2)⟶C′(2+2(2),2)=C′(6,2)
D(0,2)⟶D′(0+2(2),2)=D′(4,2)
ফলাফল: বর্গক্ষেত্রটি পরিবর্তিত হয়ে সামান্তরিকে (Parallelogram) রূপ নিল, কিন্তু ভূমি ও উচ্চতা একই থাকায় ক্ষেত্রফল 2×2=4 বর্গ একক অপরিবর্তিত রইল।
সমস্যা ৪: মূলবিন্দুর সাপেক্ষে বিন্দুর ঘূর্ণন [১০ম ও ১১তম ব্যাচ ফাইনাল পরীক্ষা (10th & 11th Batch)]
পরীক্ষার প্রশ্ন [নম্বর: ১ + ২]
প্রশ্ন: What is rotation? Find the transformed point, P′, caused by rotating P=(4,2) about the origin through an angle of 90∘.
(ঘূর্ণন কী? মূলবিন্দুর সাপেক্ষে P = (4, 2) বিন্দুকে ৯০ ডিগ্রি কোণে ঘোরালে রূপান্তরিত বিন্দু P' নির্ণয় করো।)
সমাধান:
ঘূর্ণনের সংজ্ঞা: ঘূর্ণন (Rotation) হলো একটি রিজিড-বডি জ্যামিতিক রূপান্তর, যার মাধ্যমে নির্দিষ্ট পিভট বিন্দু (বা মূলবিন্দু (0,0))-এর সাপেক্ষে কোনো অবজেক্টের সকল বিন্দুকে বৃত্তাকার পথে নির্দিষ্ট কৌণিক মানে (θ) ঘোরানো হয়।
প্রদত্ত মান: বিন্দু P=(4,2)⟹x=4,y=2; কোণ θ=90∘ (CCW); ঘূর্ণন কেন্দ্র =(0,0)।
হোমোজেনিয়াস ম্যাট্রিক্স রূপ (৩×৩):x′y′1=cos90∘sin90∘0−sin90∘cos90∘0001421=010−100001421=−241
উত্তর: রূপান্তরিত নতুন বিন্দুটি হলো P′(−2,4)।
সমস্যা ৫: বর্গক্ষেত্রের ওপর যৌগিক রূপান্তর (স্কেলিং, ৪০° ঘূর্ণন, ট্রান্সলেশন) [১১তম ব্যাচ ফাইনাল পরীক্ষা (11th Batch)]
পরীক্ষার প্রশ্ন [নম্বর: ১ + ২ + ২ + ২ = ৭]
প্রশ্ন: What is the advantage of using homogeneous coordinates? Consider the square (0,0), (0,2), (2,0), (2,2). Perform the composite transformations of the square by using the following steps:
(i) Scale by using sx=5 and sy=3.
(ii) Rotate of 40 degrees in the anticlockwise direction.
(iii) Translate using tx=3 and ty=2.
(হোমোজেনিয়াস কোঅর্ডিনেটের সুবিধা কী? (0,0),(0,2),(2,0),(2,2) শীর্ষবিন্দুবিশিষ্ট বর্গক্ষেত্রের ওপর উল্লিখিত ৩টি ধাপের যৌগিক রূপান্তর সম্পন্ন করো।)
রূপান্তরের একীকরণ (Unification): সাধারণ কার্টেসিয়ান তলে স্কেলিং, ঘূর্ণন, প্রতিফলন ইত্যাদি ম্যাট্রিক্স গুণন হলেও ট্রান্সলেশন হলো ভেক্টর যোগ (P′=P+T)। একটি অতিরিক্ত ডামি মাত্রা (w=1) যোগ করার মাধ্যমে ট্রান্সলেশনকেও ৩×৩ ম্যাট্রিক্স গুণনে রূপান্তর করা যায়।
ম্যাট্রিক্স কনক্যাটেনেশন (Matrix Concatenation): একাধিক রূপান্তরকে আগে থেকেই গুণ করে একটিমাত্র সামগ্রিক কম্পোজিট ম্যাট্রিক্সে (Mcomposite=T⋅R⋅S) পরিণত করা যায়। ফলে N সংখ্যক শীর্ষবিন্দুর ওপর আলাদা আলাদা রূপান্তর চালানোর বদলে মাত্র একটি ম্যাট্রিক্স গুণন করলেই চলে, যা গ্রাফিক্স পাইপলাইনের কম্পিউটেশন ব্যাপকভাবে কমিয়ে দেয়।
২য় অংশ: পৃথক ও যৌগিক ম্যাট্রিক্স গঠন [২ নম্বর]
১. প্রদত্ত উপাত্ত ও ত্রিকোণমিতিক মান:
স্কেলিং ফ্যাক্টর: sx=5,sy=3
ঘূর্ণন কোণ: θ=40∘ (ঘড়ির কাঁটার বিপরীত দিক - CCW)
cos40∘≈0.7660,sin40∘≈0.6428
Summary & What's Next (সারসংক্ষেপ ও পরবর্তী অধ্যায়)
Transformation-II থেকে যা শিখলাম
হোমোজেনিয়াস কোঅর্ডিনেট: (x,y)-কে [x,y,1]T আকারে প্রকাশ করে ট্রান্সলেশন, স্কেলিং, রোটেশন, রিফ্লেকশন ও শিয়ারিং—সবগুলোকে 3×3 ম্যাট্রিক্স গুণে একীভূত করা হয়।
পিভট-পয়েন্ট রূপান্তর: যে কোনো নির্দিষ্ট কেন্দ্র বা পিভট পয়েন্টের সাপেক্ষে রোটেশন ও ফিক্সড-পয়েন্ট স্কেলিং ৩-ধাপের কনজুগেট সূত্রের মাধ্যমে ঘটে: T(pivot)⋅M⋅T(−pivot)।
দ্বিমাত্রিক রূপান্তরের ভিত্তি আয়ত্ত করার পর, পরবর্তী অধ্যায়গুলোতে আমরা এগুলোকে ত্রিমাত্রিক জগতে বিস্তৃত করব—4×4 3D Homogeneous Matrix, 3D রোটেশন (Euler Angles & Quaternions), এবং Perspective বনাম Orthographic প্রোজেকশন!