algorithm
रेखा एल्गोरिथम
खोज…
परिचय
दो निर्दिष्ट समापन बिंदुओं के बीच लाइन पथ के साथ मध्यवर्ती पदों की गणना करके लाइन ड्राइंग पूरा किया जाता है। एक आउटपुट डिवाइस को एंडपॉइंट्स के बीच इन पदों को भरने के लिए निर्देशित किया जाता है।
ब्रेसेनहैम रेखा आरेखण एल्गोरिथम
बैकग्राउंड थ्योरी: ब्रेसेनहैम द्वारा विकसित एल्गोरिथम ब्रसेनहम की रेखा रेखाचित्र एल्गोरिथ्म एक कुशल और सटीक रेखापुंज रेखा है। इसमें केवल पूर्णांक गणना शामिल है, इसलिए यह सटीक और तेज़ है। यह एक और घटता हलकों को प्रदर्शित करने के लिए बढ़ाया जा सकता है।
Bresenham लाइन ड्राइंग एल्गोरिथ्म में:
ढलान के लिए | मी | <1:
या तो x का मान बढ़ाया जाता है
या x और y दोनों निर्णय पैरामीटर का उपयोग करके बढ़ाया जाता है।
ढलान के लिए | m |> 1:
या तो y का मान बढ़ा है
या x और y दोनों को निर्णय पैरामीटर का उपयोग करके बढ़ाया जाता है।
ढलान के लिए एल्गोरिथ्म | m | <1:
इनपुट दो अंत बिंदु (X1, y1) और लाइन का (x2, y2)।
पहला बिंदु (X1, y1) प्लॉट करें।
गणना
Delx = | x2 - X1 |
डेली = | y2 - y1 |प्रारंभिक निर्णय पैरामीटर को प्राप्त करें
पी = 2 * डीली - डेलक्स1 के चरण में I = 0 से डेलक्स के लिए
यदि पी <0 तो
एक्स 1 = एक्स 1 + 1
पॉट (x1, y1)
पी = पी + 2 घनी
अन्य
एक्स 1 = एक्स 1 + 1
Y1 = y1 + 1
प्लॉट (x1, y1)
पी = पी + 2 डेली - 2 * डेलक्स
अगर अंत
के लिए अंतसमाप्त
सोर्स कोड:
/* A C program to implement Bresenham line drawing algorithm for |m|<1 */
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int main()
{
int gdriver=DETECT,gmode;
int x1,y1,x2,y2,delx,dely,p,i;
initgraph(&gdriver,&gmode,"c:\\TC\\BGI");
printf("Enter the intial points: ");
scanf("%d",&x1);
scanf("%d",&y1);
printf("Enter the end points: ");
scanf("%d",&x2);
scanf("%d",&y2);
putpixel(x1,y1,RED);
delx=fabs(x2-x1);
dely=fabs(y2-y1);
p=(2*dely)-delx;
for(i=0;i<delx;i++){
if(p<0)
{
x1=x1+1;
putpixel(x1,y1,RED);
p=p+(2*dely);
}
else
{
x1=x1+1;
y1=y1+1;
putpixel(x1,y1,RED);
p=p+(2*dely)-(2*delx);
}
}
getch();
closegraph();
return 0;
}
ढलान के लिए एल्गोरिथ्म | m |> 1:
- इनपुट दो अंत बिंदु (X1, y1) और लाइन का (x2, y2)।
- पहला बिंदु (X1, y1) प्लॉट करें।
- गणना
Delx = | x2 - X1 |
डेली = | y2 - y1 | - प्रारंभिक निर्णय पैरामीटर को प्राप्त करें
पी = 2 * डेलक्स - dely - 1 के चरण में I = 0 से dely तक
यदि पी <0 तो
y1 = y1 + 1
पॉट (x1, y1)
पी = पी + 2 डेलक्स
अन्य
एक्स 1 = एक्स 1 + 1
Y1 = y1 + 1
प्लॉट (x1, y1)
पी = पी + 2 डेलक्स - 2 * dely
अगर अंत
के लिए अंत - समाप्त
सोर्स कोड:
/* A C program to implement Bresenham line drawing algorithm for |m|>1 */
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int main()
{
int gdriver=DETECT,gmode;
int x1,y1,x2,y2,delx,dely,p,i;
initgraph(&gdriver,&gmode,"c:\\TC\\BGI");
printf("Enter the intial points: ");
scanf("%d",&x1);
scanf("%d",&y1);
printf("Enter the end points: ");
scanf("%d",&x2);
scanf("%d",&y2);
putpixel(x1,y1,RED);
delx=fabs(x2-x1);
dely=fabs(y2-y1);
p=(2*delx)-dely;
for(i=0;i<delx;i++){
if(p<0)
{
y1=y1+1;
putpixel(x1,y1,RED);
p=p+(2*delx);
}
else
{
x1=x1+1;
y1=y1+1;
putpixel(x1,y1,RED);
p=p+(2*delx)-(2*dely);
}
}
getch();
closegraph();
return 0;
}