বেজিয়ে বক্ররেখা

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে
ত্রিঘাতী বেজিয়ে বক্ররেখা

গণিতে বেজিয়ে বক্ররেখা (ইংরেজি: Bézier curve) এক ধরনের পরামিতিক বক্ররেখা। কম্পিউটার গ্রাফিক্‌সে গুরুত্বপূর্ণ এই বক্ররেখাটি বহুল ব্যবহৃত হয়। বেজিয়ে বক্ররেখাকে উচ্চ মাত্রায় সাধারণীকরণ করে বেজিয়ে তল পাওয়া যায়। এর মধ্যে বেজিয়ে ত্রিভুজ একটি বিশেষ ধরনের তল।

১৯৬২ সালে ফরাসি প্রকৌশলী পিয়ের বেজিয়ে এই বক্ররেখার ধারণা জনপ্রিয় করেন। তিনি গাড়ির কাঠামো নকশা করার জন্য এগুলো ব্যবহার করেছিলেন। তবে এই রেখাগুলো প্রথম উদ্ভাবন করেন ১৯৫৯ সালে পল দ্য কাস্তেলিও, তাঁর বিখ্যাত দ্য কাস্তেলিওর অ্যালগোরিদম ব্যবহার করে। এই অ্যালগোরিদমটি বেজিয়ে বক্ররেখার বিভিন্ন মান নির্ণয়ের জন্য একটি সাংখ্যিকভাবে স্থিতিশীল পদ্ধতি।

বিভিন্ন বেজিয়ে বক্ররেখা[সম্পাদনা]

রৈখিক বেজিয়ে বক্ররেখা[সম্পাদনা]

যদি দুটি বিন্দু P0P1 দেয়া থাকে, তাহলে রৈখিক বেজিয়ে বক্ররেখা হচ্ছে দুইবিন্দুগামী একটি সরল রেখা। এর সমীকরণ নিম্নরূপঃ

\mathbf{B}(t)=\mathbf{P}_0 + (\mathbf{P}_1-\mathbf{P}_0)t=(1-t)\mathbf{P}_0 + t\mathbf{P}_1 \mbox{ , } t \in [0,1]

এবং এটি রৈখিক ইন্টারপোলেশন এর সমতুল্য।

দ্বিমাত্রিক বেজিয়ে বক্ররেখা[সম্পাদনা]

একটি দ্বিমাত্রিক বেজিয়ে বক্ররেখার সমীকরণ বের করতে চাইলে তিনটি বিন্দুর দেয়া থাকতে হবে। যদি তিনটি বিন্দু P0, P1, ও P2 দেয়া থাকে তবে দ্বিমাত্রিক বেজিয়ে বক্ররেখা B(t) ফাংশনের মাধ্যমে প্রকাশ করা যায় এভাবেঃ

\mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + 2t(1 - t)\mathbf{P}_1 + t^{2}\mathbf{P}_2 \mbox{ , } t \in [0,1].

ট্রুটাইপ ফন্ট কয়েকটি দ্বিমাত্রিক বেজিয়ে বক্ররেখার সমন্বয়ে গঠিত বেজিয়ে স্‌প্লাইন দ্বারা গঠিত।

ঘনক/ত্রিমাত্রিক বেজিয়ে বক্ররেখা[সম্পাদনা]

ত্রিমাত্রিক তলে চারটি বিন্দু P0, P1, P2P3 দিয়ে ত্রিমাত্রিক/ঘনক বেজিয়ে বক্ররেখা সংজ্ঞায়িত করা যায়।

বক্ররেখাটির সূচনা হয় P0 বিন্দুতে এবং এটি P1 বিন্দুর দিকে যেয়ে P3 বিন্দুতে মিলিত হয়। শেষবিন্দুতে রেখাটি P2 বিন্দুর দিক থেকে আসে। সাধারণত রেখাটি P1 অথবা P2 বিন্দু দিয়ে যায় না। এই দুটি বিন্দু দেয়া থাকে বেজিয়ে বক্ররেখার আকার দেয়ার জন্য যাতে বেজিয়ে বক্ররেখার দিক নিয়ন্ত্রণ করা যায়। P0 থেকে P1 বরাবর দূরত্ব নির্ধারণ করে রেখাটি P3 বিন্দুতে মিলিত হওয়ার আগে P2 বিন্দুর দিকে কতটুকু যাবে।

বক্ররেখার পরামিতিক সমীকরণ হচ্ছে:

\mathbf{B}(t)=(1-t)^3\mathbf{P}_0+3t(1-t)^2\mathbf{P}_1+3t^2(1-t)\mathbf{P}_2+t^3\mathbf{P}_3 \mbox{ , } t \in [0,1].

আধুনিক চিত্র অঙ্কনের প্রোগ্রাম যেমন পোস্টস্ক্রিপ্ট, অ্যাসিম্পটোটমেটাফন্ট বিভিন্ন রেখা আঁকার জন্য ত্রিমাত্রিক বেজিয়ে বক্ররেখা ব্যবহার করে।

সাধারণীকরণ[সম্পাদনা]

যে কোন মাত্রা n সম্বলিত বেজিয়ে বক্ররেখা নিচের উপায়ে সাধারণীকরণ করা যাবে। ধরি, বিন্দু দেয়া আছে P0, P1,..., Pn, তাহলে বেজিয়ে বক্ররেখা হচ্ছেঃ

\mathbf{B}(t)=\sum_{i=0}^n {n\choose i}\mathbf{P}_i(1-t)^{n-i}t^i =\mathbf{P}_0(1-t)^n+{n\choose 1}\mathbf{P}_1(1-t)^{n-1}t+\cdots+\mathbf{P}_nt^n \mbox{ , } t \in [0,1].

উদাহরণ স্বরূপ, n=5 এর জন্য:

\mathbf{B}(t)=\mathbf{P}_0(1-t)^5+5\mathbf{P}_1t(1-t)^4+10\mathbf{P}_2t^2(1-t)^3+10\mathbf{P}_3t^3(1-t)^2+5\mathbf{P}_4t^4(1-t)+\mathbf{P}_5t^5 \mbox{ , } t \in [0,1].

এই সূত্রকে পৌনঃপুনিক/পুনরাবৃত্তি আকারে লেখা যায়: ধরি \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n} বেজিয়ে বক্ররেখা নির্দেশ করে যা P0, P1,..., Pn বিন্দুগুলোর সমন্বয়ে গঠিত। তাহলে

\mathbf{B}(t) = \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}(t) = (1-t)\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_{n-1}}(t) + t\mathbf{B}_{\mathbf{P}_1\mathbf{P}_2\ldots\mathbf{P}_n}(t)

অন্য কথায়, n ডিগ্রীর বেজিয়ে বক্ররেখা দুটি n-1 ডিগ্রির বেজিয়ে বক্ররেখার রৈখিক ইন্টারপোলেশন।

বিভিন্ন সংজ্ঞা[সম্পাদনা]

পরামিতিক বক্ররেখার সাথে সংশ্লিষ্ট কিছু সংজ্ঞা দেয়া হল। আমরা জানি

\mathbf{B}(t) = \sum_{i=0}^n \mathbf{P}_i\mathbf{b}_{i,n}(t),\quad t\in[0,1]

যেখানে

\mathbf{b}_{i,n}(t) = {n\choose i} t^i (1-t)^{n-i},\quad i=0,\ldots n

রাশিমালা n ডিগ্রির বার্নস্টেইন পলিনোমিয়াল হিসেবে পরিচিত। এখানে t0 = 1 and (1 - t)0 = 1।

Pi বিন্দুগুলোকে বলা হয় বেজিয়ে বক্ররেখার নিয়ন্ত্রক বিন্দুP0 থেকে শুরু এবং Pn এ শেষ হওয়া বেজিয়ে বিন্দুগুলো নিয়ে গঠিত বহুভুজকে বেজিয়ে বহুভুজ (নিয়ন্ত্রক বহুভুজ) বলা হয়। বেজিয়ে বহুভুজের উত্তল অংশ বেজিয়ে বক্ররেখাকে ধারন করে।

টুকিটাকি[সম্পাদনা]

  • রেখাটি শুরু হয় P0 বিন্দুতে এবং শেষ হয় Pn বিন্দুতে; এই ধর্মকে বলে প্রান্তবিন্দু ইন্টারপোলেশন
  • যদি সকল নিয়ন্ত্রক বিন্দু একই রেখায় থাকে তবে বেজিয়ে বক্ররেখা একটি সরলরেখা। অনুরুপভাবে বেজিয়ে বক্ররেখা একটি সরল রেখা যদি এর সকল বিনু কোলিনিয়ার হয়।
  • বেজিয়ে বক্ররেখার শুরুর বিন্দুতে (শেষ বিন্দু) স্পর্শক হচ্ছে বেজিয়ে বহুভুজের প্রথম (শেষ) বাহু।
  • একটি বক্ররেখাকে একাধিক বক্ররেখায় ভাগ করা যায় যার প্রত্যেকেই একটি বেজিয়ে বক্ররেখা হবে।
  • কিছু কিছু আপাতদৃষ্টিতে সাধারণ রেখা, যেমন বৃত্তকে বেজিয়ে বক্ররেখার মাধ্যমে পুরোপুরিভাবে প্রকাশ করা যায় না। চারভাগে বিভক্ত চারটি বেজিয়ে বক্ররেখা দিয়ে বৃত্তের প্রায় সমতুল্য রেখা আঁকা যায়।
  • বেজিয়ে বক্ররেখার সমান্তরাল কোন প্রকৃত রেখা আঁকা যায় না। তবে কিছু আপাতকরণ প্রক্রিয়ার মাধ্যমে প্রায় সমান্তরাল রেখা আঁকা হয়।

বেজিয়ে বক্ররেখা গঠন[সম্পাদনা]

রৈখিক বক্ররেখা[সম্পাদনা]

রৈখিক বেজিয়ে বক্ররেখার অ্যানিমেশন, t এর মান [0,1]
রৈখিক বেজিয়ে বক্ররেখার অ্যানিমেশন, t এর মান [0,1]

বেজিয়ে বক্ররেখার সমীকরণে t কে চিন্তা করা যেতে পারে P0 থেকে P1 বিন্দু পর্যন্ত B(t) এর দূরত্ব হিসেবে। উদাহরণস্বরুপ যখন t=0.25, B(t) তখন P0 থেকে P1 এক-চতুর্থাংশ দূরত্বে অবস্থিত। t 0 থেকে 1 পর্যন্ত বাড়লে, B(t) P0 থেকে P1 পর্যন্ত একটি সরলরেখা নির্দেশ করে।

দ্বিমাত্রিক বক্ররেখা[সম্পাদনা]

দ্বিমাত্রিক বেজিয়ে বক্ররেখার সমীকরণের জন্য দুটি মাধ্যমিক বিন্দু Q0Q1 এর সঞ্চারপথ বের করতে হবে যেখানে t এর মান 0 থেকে 1 এর মধ্যে পরিবর্তিত হয়:

  • Q0 বিন্দুটি P0 থেকে P1 পর্যন্ত পরিবর্তিত হয়, যা একটি রৈখিক বেজিয়ে বক্ররেখা নির্দেশ করে।
  • Q1 বিন্দুটি P1 থেকে P2 পর্যন্ত পরিবর্তিত হয়, যা একটি রৈখিক বেজিয়ে বক্ররেখা নির্দেশ করে।
  • B(t) বিন্দুটি Q0 থেকে Q1 পর্যন্ত পরিবর্তিত হয় এবং একটি দ্বিমাত্রিক বেজিয়ে বক্ররেখা নির্দেশ করে।
দ্বিমাত্রিক বেজিয়ে বক্ররেখা গঠন দ্বিমাত্রিক বেজিয়ে বক্ররেখার অ্যানিমেশন, t হচ্ছে [0,1]
দ্বিমাত্রিক বেজিয়ে বক্ররেখা গঠন দ্বিমাত্রিক বেজিয়ে বক্ররেখার অ্যানিমেশন, t হচ্ছে [0,1]

উচ্চ-মাত্রার বক্ররেখা[সম্পাদনা]

উচ্চ মাত্রার বক্ররেখা গঠনের জন্য আরো বেশি মাধ্যমিক বিন্দু লাগবে। ঘনক বক্ররেখার জন্য তিনটি মাধ্যমিক বিন্দু Q0, Q1Q2 নেয়া যায়, যা তিনটি রৈখিক বেজিয়ে বক্ররেখা নির্দেশ করে এবং দুটি মাধ্যমিক বিন্দু R0R1 নেয়া যায় যেগুলো দুটি দ্বিমাত্রিক বেজিয়ে বক্ররেখা নির্দেশ করে:

ঘনক বেজিয়ে বক্ররেখা গঠন ঘনক বেজিয়ে বক্ররেখার অ্যানিমেশন, t হচ্ছে [0,1]
ঘনক বেজিয়ে বক্ররেখা গঠন ঘনক বেজিয়ে বক্ররেখার অ্যানিমেশন, t হচ্ছে [0,1]

চার-মাত্রার বক্ররেখার জন্য চারটি মাধ্যমিক বিন্দু Q0, Q1, Q2Q3 নিয়ে চারটি রৈখিক বেজিয়ে বক্ররেখা, R0, R1R2 বিন্দু নিয়ে তিনটি দ্বিমাত্রিক বেজিয়ে বক্ররেখা ও S0S1 নিয়ে দুটি ঘনক বেজিয়ে বক্ররেখা লাগবে:

চার-মাত্রার বেজিয়ে বক্ররেখা গঠন চার-মাত্রার বেজিয়ে বক্ররেখার অ্যানিমেশন, t হচ্ছে [0,1]
চার-মাত্রার বেজিয়ে বক্ররেখা গঠন চার-মাত্রার বেজিয়ে বক্ররেখার অ্যানিমেশন, t হচ্ছে [0,1]

বহুপদী আকার[সম্পাদনা]

অনেকসময় বেজিয়ে বক্ররেখাকে বহুপদী আকারে প্রকাশ করা বার্নষ্টাইন বহুপদীর তুলনায় সহজ হয় এবং অপেক্ষাকৃত সরল আকারে দেখানো যায়। দ্বিপদী উপপাদ্য ব্যবহার করে বেজিয়ে রাশিমালাকে সরলীকরন করলে পাওয়া যাবে:


\mathbf{B}(t) = \sum_{j = 0}^n \mathbf{C}_j t^j

যেখানে


\mathbf{C}_j = \frac{n!}{(n - j)!} \sum_{i = 0}^j \frac{\mathbf{P}_i (-1)^{i + j}}{i! (j - i)!} = 
\prod_{m = 0}^{j - 1} (n - m) \sum_{i = 0}^j \frac{\mathbf{P}_i (-1)^{i + j}}{i! (j - i)!}
.

যদি \mathbf{B}(t) এর অনেক মান বের করার আগেই \mathbf{C}_j এর মান বের করা সম্ভব হয় তাহলে এই সমীকরণটি বাস্তব ব্যবহারের জন্য বেশি উপযোগী। তবে উচ্চ মাত্রার সমীকরণের জন্য দ্য ক্যাস্তেলিও অ্যালগোরিদম বেশি উপযোগী। উল্লেখ্য এখানে কোন সংখ্যার গুণফল 1 হবে না।


আরো দেখুন[সম্পাদনা]

তথ্যসূত্র[সম্পাদনা]

বহিঃসংযোগ[সম্পাদনা]