एक रेखा दो बिंदुओं को जोड़ती है। यह ग्राफिक्स में एक मूल तत्व है। एक रेखा खींचने के लिए, आपको दो बिंदुओं की आवश्यकता होती है जिनके बीच आप स्क्रीन पर एक रेखा खींच सकते हैं और ग्राफिक्स के संदर्भ में हम बिंदुओं को पिक्सेल के रूप में संदर्भित करते हैं और प्रत्येक पिक्सेल पूर्णांक निर्देशांक से जुड़ा होता है। हमें पूर्णांक निर्देशांक (x1, y1) और (x2, y2) के रूप में दिए गए हैं जहां, x1 < x2 और y1 < y2। कार्य मिडपॉइंट लाइन जनरेशन एल्गोरिदम का उपयोग करके बिंदु 1 यानी (x1, y1) और बिंदु 2 यानी (x2, y2) के बीच सभी मध्य-बिंदुओं की गणना करना है।
स्क्रीन पर लाइन जनरेशन करने के लिए तीन अलग-अलग एल्गोरिदम उपयोग किए जाते हैं:
- DDA एल्गोरिदम
- ब्रेसेनहम का लाइन जनरेशन
- मिड-पॉइंट एल्गोरिदम
मिड-पॉइंट एल्गोरिदम
मिड-पॉइंट लाइन एल्गोरिदम का उपयोग करके रेखा खींचने के चरण हैं:
- वर्तमान स्थित बिंदुओं यानी ईस्ट (Xp+1, Yp) और नॉर्थ-ईस्ट (Xp+1, Yp+1) का उपयोग करके मध्य बिंदु की गणना करें जो मध्य बिंदु (Xp+1, Yp+1/2) है।
- अब, मध्य बिंदु स्क्रीन पर अगले निर्देशांक के स्थान का फैसला करेगा:
- यदि मध्य बिंदु रेखा के ऊपर है, तो अगला निर्देशांक ईस्ट पर होगा।
- यदि मध्य बिंदु रेखा के नीचे है, तो अगला निर्देशांक नॉर्थ-ईस्ट पर होगा।
विभिन्न इनपुट-आउटपुट परिदृश्य देखते हैं:
इनपुट: int x_1 = 3, int y_1 = 3, int x_2 = 10, int y_2 = 8
आउटपुट: लाइन जनरेशन एल्गोरिदम के माध्यम से मिड-पॉइंट्स: 3,3 4,4 5,5 6,5 7,6 8,7 9,7 10,8
व्याख्या: हमें निर्देशांक दिए गए हैं x_1 = 3, x_2 = 10, y_1 = 3, y_2 = 8। तो, चरण पहले dx = x_2 - x_1 की गणना करना होगा जो 10 - 3 = 7 है और dy = y_2 - y_1 जो 8 - 3 = 5 है और फिर जांचें कि क्या dy, dx से कम है। अब d की गणना 5 - (7 / 2) = 2 के रूप में करें। पहला बिंदु x_1 और y_1 होगा। उन्हें प्रिंट करें। अब, जब तक x_1 < x_2 तब तक x_1 को 1 से बढ़ाते रहें और जांचें यदि d < 0 तो d को d + dy पर सेट करें अन्यथा, d को d + (dy - dx) पर सेट करें और x_2 को 1 से बढ़ाएं।
इनपुट: int x_1 = 2, int y_1 = 2, int x_2 = 3, int y_2 = 4
आउटपुट: लाइन जनरेशन एल्गोरिदम के माध्यम से मिड-पॉइंट्स: 2,2 3,3 3,4
व्याख्या: हमें निर्देशांक दिए गए हैं x_1 = 2, x_2 = 2, y_1 = 3, y_2 = 4। मिड-पॉइंट लाइन जनरेशन एल्गोरिदम लागू करके हम सभी मिड-पॉइंट पिक्सेल्स की गणना आउटपुट के रूप में करेंगे।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण:
- पूर्णांक बिंदुओं को int x_1, int y_1, int x_2, int y_2 के रूप में इनपुट करें। लाइन जनरेट करने के लिए Mid_Point(x_1, y_1, x_2, y_2) फंक्शन कॉल करें।
- फंक्शन Mid_Point(x_1, y_1, x_2, y_2) के अंदर:
- dx को x_2 - x_1 और dy को y_2 - y_1 के रूप में गणना करें।
- जांचें यदि dy, dx से कम या बराबर है तो d को dy - (dx / 2) पर सेट करें और first_pt को x_1 और second_pt को y_1 पर सेट करें।
- first_pt और second_pt प्रिंट करें।
- जब तक first_pt, x_2 से कम है तब तक first_pt को 1 से बढ़ाएं और जांचें यदि d < 0 तो d को d + dy पर सेट करें अन्यथा, d को d + (dy - dx) पर सेट करें और second_pt को 1 से बढ़ाएं। first_pt और second_pt प्रिंट करें।
- अन्यथा यदि dx, dy से कम है तो d को dx - (dy/2) पर सेट करें और first_pt को x_1 और second_pt को y_1 पर सेट करें और first_pt और second_pt प्रिंट करें।
- जब तक second_pt, y_2 से कम है तब तक WHILE शुरू करें। WHILE के अंदर, second_pt को 1 से बढ़ाएं। जांचें यदि d < 0 तो d को d + dx पर सेट करें। अन्यथा, d को d + (dx - dy) पर सेट करें और first_pt को 1 से बढ़ाएं।
- first_pt और second_pt प्रिंट करें।
उदाहरण
#include<bits/stdc++.h>
using namespace std;
void Mid_Point(int x_1, int y_1, int x_2, int y_2) {
int dx = x_2 - x_1;
int dy = y_2 - y_1;
if(dy <= dx) {
int d = dy - (dx / 2);
int first_pt = x_1;
int second_pt = y_1;
cout << first_pt << "," << second_pt << "\n";
while(first_pt < x_2) {
first_pt++;
if(d < 0) {
d = d + dy;
} else {
d = d + (dy - dx);
second_pt++;
}
cout << first_pt << "," << second_pt << "\n";
}
} else if(dx < dy) {
int d = dx - (dy / 2);
int first_pt = x_1;
int second_pt = y_1;
cout << first_pt << "," << second_pt << "\n";
while(second_pt < y_2) {
second_pt++;
if(d < 0) {
d = d + dx;
} else {
d += (dx - dy);
first_pt++;
}
cout << first_pt << "," << second_pt << "\n";
}
}
}
int main() {
int x_1 = 3;
int y_1 = 3;
int x_2 = 10;
int y_2 = 8;
cout << "Mid-Points through Line Generation Algorithm are: ";
Mid_Point(x_1, y_1, x_2, y_2);
return 0;
}
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
Mid-Points through Line Generation Algorithm are: 3,3 4,4 5,5 6,5 7,6 8,7 9,7 10,8