DDA आणि Bresenham च्या अल्गोरिदम मधील फरक
डिजिटल विभेदक अल्गोरिदम (डीडीए) काढण्यासाठी आणि संगणक ग्राफिकमध्ये केला जातो. ब्रेसेनहॅमचा अल्गोरिदम डिजिटल रेषा रेखाचित्र अॅल्गोरिदम आहेत आणि चित्र काढण्यासाठी ते कॉम्प्यूटर ग्राफिक्समध्ये वापरतात. पूर्वी, आम्ही पिक्सेल मोजण्यासाठी विश्लेषणात्मक विश्लेषक वापरत होतो आणि त्यामुळे रेखाचित्र काढणे शक्य होते. परंतु ही विश्लेषणात्मक पध्दत डिजिटल पद्धतीने तितकी अचूक नसते की या डिजिटल अल्गोरिदमच्या वापराने आणि प्रत्येक क्षेत्रासह आम्ही संगणक ग्राफिक्समध्ये देखील उच्च गुणवत्ता पद्धती शोधत आहोत. या अल्गोरिदमचा शोध हा एक आदर्श उदाहरण आहे. आम्ही पुढे जाण्यापूर्वी, या अल्गोरिदमच्या मागे संकल्पना पाहू. आपल्या चर्चेच्या व्याप्तीतून हे दिसून येत असले तरी, दोघांमधील मूलभूत फरक स्पष्ट करणे आवश्यक आहे. जर आपण खरोखर अल्गोरिदम परिचित असाल तर आपण या पृष्ठाच्या शेवटी असणाऱ्या वास्तविक फरकांवर उडी मारू शकता.
डिजिटल डिफरियनल अल्गोरिदम (डीडीए) म्हणजे काय?
डीडीए मुख्यतः संगणक ग्राफिक्समध्ये ओळी काढण्यासाठी वापरले जाते आणि पुढील पिक्सेल मूल्ये दर्शविताना वास्तविक मूल्यांचा वापर करते. आता प्रारंभिक पिक्सल व्हॅल्यू (एक्स 0, वाई 0) (एक्स 0, वाई 0) आणि डेस्टिनेशन पिक्सेल (एक्स 1, वाय 1) (एक्स 1, वाय 1) म्हणून गृहित धरा. आपण ज्ञात पिक्सेल व्हॅल्यूपासून (X0, Y0) (X0, Y0) पासून गंतव्य पिक्सेल मूल्ये कशी गणना करावी ते शिकू.
- डीडीएचा वापर करून गंतव्य स्थान मूल्य मोजणे कसे?
स्टेप-1: येथे आपल्याकडे इनपुट (एक्स 0, वाई 0) (एक्स 0, वाय 20) आहे आणि आम्ही ओळ ओळखतो की रेषा एक्स-अक्ष किंवा y- अक्ष च्या समांतर आहे. हे शोधण्यासाठी, आता आपण प्रारंभिक आणि गंतव्य पिक्सेल मूल्यांमधील फरक काढू या.
dx = X1 - X0
dy = Y1 - Y0
स्टेप 2: आता, आम्ही फरक ओळखला आहे आणि जर 'dx' शून्य असेल तर आपण x-axis वर रेखा काढली पाहिजे. अन्यथा, आपण y- अक्ष च्या समांतर रेष काढू या. येथे संगणक भाषा अटी मध्ये प्रत्यक्ष गणना आहे.
जर (संपूर्ण (dx)> पूर्ण (उप))
पायऱ्या = परिपूर्ण (डीएक्स);
अन्य
पायऱ्या = परिपूर्ण (उप);
स्टे-प्वॉईशन: आता, आत्ताच 'x' निर्देशांक किंवा रेखा रेखा काढण्यासाठी 'y' पिक्सेल मूल्ये निर्देशित करण्याची वेळ आहे.
एक्स वाढ = डीएक्स / (फ्लोट) पायऱ्या;
Y वेतन वाढ = दि / (फ्लोट) पावले;
स्टे-प - 4: हे आम्ही गणिती पिक्सेल पर्यंत पोहोचत नाही. कम्प्युटिंग करताना डीडीए अल्गोरिदम पिक्सेल व्हॅल्यू जवळच्या पूर्णांक मूल्यापर्यंत गोल करतो. येथे आम्ही आता चर्चा केली आहे काय कोड नमुना आहे. < साठी (इंट v = 0; v {< x = x + X वाढ; y = y + Y वाढती; पुटपिक्सल (फेरी (एक्स), फेरी (वाय)); } आम्ही DDA वापरून रेषा काढणे केले आणि आता आम्हाला ब्रेसनहॅमच्या पुढे जाऊया! ब्रेसनहॅमचे अल्गोरिदम काय आहे? हे डिजिटल रेखांकन अल्गोरिदम देखील आहे आणि 1 9 62 साली ब्रेसेनहॅम यांनी याचे शोध लावले होते आणि म्हणूनच त्याचे नाव समान आहे. हा अल्गोरिदम अधिक अचूक आहे आणि रेखांकन करताना त्यास वजाबाकी आणि पिक्सल मूल्याची गणना करण्यासाठी वजाबाकी व जास्तीचा वापर केला जातो. वक्र आणि मंडळे काढताना ब्रेसनहॅमच्या अल्गोरिदमची अचूकता विश्वासार्ह आहे. हे अल्गोरिदम कसे कार्य करते ते पाहू. ब्रेसेनहॅमचे एल्गोरिदम प्रारंभिक पिक्सेल समन्वय (x a + 1 , y a ) म्हणून धारण करतात. स्टेघ 2: हे स्वयंचलितपणे पुढील पिक्सेल मूल्याची गणना करते (x a + 1 , y a + 1 ), येथे 'a' वाढीव मूल्य आहे आणि अल्गोरिदम त्यास तयार केल्या गेलेल्या समीकरणे जोडून किंवा कमी करून तो मोजतो. हे अल्गोरिदम अचूक मूल्यांची गणना करते ज्यात कोणतेही गोलाकार नाही आणि सोपे देखील दिसते! ब्रसेनहॅमच्या अल्गोरिदमची संख्यात्मक उदाहरणे: आता आपण गुण (0, 0) आणि (-8, -4) वर विचार करू या आणि बिस्सेनहॅमच्या अल्गोरिदमचा वापर करून या सर्व बिंदूंमधील रेषा काढू या. आता खाली असलेले विभेद व्हॅल्यू काढू. Δx = x2-x1 = -8-0 = 8 म्हणून, x = Δx / x2 = 8 / -8 = -1 साठी वाढीव मूल्य. Δy = y2-y1 = -4-0 = 4 म्हणून, y = Δy / y2 = 4 / -4 = -1 साठी वाढीव मूल्य. निर्णय परिवर्तनीय = ई = 2 * (Δy) - (Δx) म्हणून, ई = 2 * (4) - (8) = 8-8 = 0 वरील गणना सह, चला तर आपण परिणामी मूल्ये निगडीत करतो. Y- निर्देशांकाचे मूल्ये एका निर्णय वेरिएबलवर आधारित समायोजित केले जातात आणि आम्ही येथे त्याची संगणनाची केवळ दुर्लक्ष करतो. पिक्सेल एक्स जरी डीडीए फ्लोटिंग पॉईंट व्हॅल्यू वापरते, तरी डीडीएची अचूकता ब्रेसेनहॅमसारखीच चांगली नाही. विविध कारणांमुळे या संकल्पनावर परिणाम होतो आणि म्हणूनच, डीसीएपेक्षा ब्रेसेनहॅम अधिक अचूक आहेत. राउंडिंग ऑफ: < फक्त येथे डीडीएच्या मोजणीकडे पहा. एक्स वाढ = डीएक्स / (फ्लोट) स्टेप्स आपण 'फ्लोट' लक्षात ठेऊ शकतो आणि म्हणूनच ते मूल्यांकनास फेकून देत नाहीत तर ब्रेसेंहॅमचा अल्गोरिदम जवळच्या पूर्णांक मूल्यांवर गोल करतो. म्हणून, वापरलेली मूल्ये ब्रेसनहॅमच्या अल्गोरिदममधील सोपे आहेत. डीडीए ड्रॉईंग रेघांव्यतिरिक्त मंडळे काढणे आणि वक्रे काढण्यास सक्षम आहे. Bresenham च्या अल्गोरिदम देखील वर उल्लेख केलेल्या सर्व रेखांकन करण्यास सक्षम आहे आणि त्याचे अचूकता डीडीए पेक्षा खरोखर उच्च आहे. त्याचप्रमाणे, डीआरडीएने तयार केलेल्या उत्पादनापेक्षा ब्रेसेंहमचे अल्गोरिदम प्रभावी कर्जे घेऊन येऊ शकते. दोन्ही एल्गोरिदम त्रिकोण आणि बहुभुज तसेच काढू शकतात. कोणता महाग आहे? जसे डीडीए मध्ये गोलाई बंद होते तसेच ब्रेसेनहॅमच्या अल्गोरिदमच्या तुलनेत हे महाग आहे. एक अनुकूलित अल्गोरिदम कोणता आहे? आमच्या वरील चर्चेतून हे अगदी स्पष्ट आहे की ब्रेसेनहॅमचे एल्गोरिदम परिशुद्धता, खर्च आणि ऑपरेशन्सच्या वापरामध्ये एक ऑप्टिमाइझ्ड आहे. एस. नाही संगणन त्यात कठोर संगणनांचा समावेश आहे. 3 ते गुणाकार आणि विभाग वापरले येथे वापरलेले नमुना अंतर समीकरणे Xincrement = dx / (float)) चरण, हे जोडण्या आणि वजावटी वापरते येथे नमूना मोजणीप्रमाणे (x a + 1चरण -1:
y
निर्णय वेरियेबल < (0, 0)
0
0
0
(- 1, 0) < - 1
0
एक मूल्य
(- 2, -1)
-2
-1
0
(- 3, -1)
-3 < -1
एक मूल्य
(- 4, -2)
-4
-2
0
(- 5, -2) < -5 > -2
एक मूल्य
(- 6, -3)
-6
-3
0
(- 7, -3) < -7
-3
डीडीए आणि ब्रेसेनहॅमचे अल्गोरिदम <:
एरिथमेटिक गणना: फरक: 1 99 99 99 8
डीडीए फ्लोटिंग पॉईंटच्या वापराने त्याच्या मोजणीत वास्तविक मूल्ये वापरते. पुढील पिक्सेल किंवा बिंदूची मुल्य अविचल प्रतीयके
एक्स वाढ / डीएक्स / (फ्लोट) स्टेप्स
Y इरिफेरींग = डी / / (फ्लोट) स्टेप्स
येथे काही निश्चित स्थिरांक वापरलेले नाहीत तर ब्रेसेनहॅमच्या अल्गोरिदम निश्चित बिंदूमध्ये अंकगणित संगणनात वापरले जातात. ब्रेसेनहॅमचे अल्गोरिदम डीडीएपेक्षा वेगळे पूर्णांक अंकगणित वापरते.
वापरलेल्या कार्याचा प्रकार:
डीडीए अविकलन समीकरणांची गुणन आणि विभाजन कार्यवाहीसह निराकरण करते. आपण येथे त्याच एक्स एक्सट्रॅक्ट = dx / (float) स्टेप्स पाहू शकता. Bresenham च्या अल्गोरिदम अतिरिक्त आणि वजाबाकी ऑपरेशन वापरते आणि आपण येथे त्याच्या पुढील पिक्सेल मूल्याच्या गणन समीकरणामध्ये (एक्स
a + 1
, y
a + 1
) लक्षात घेऊ शकता. डीडीएच्या तुलनेत ब्रेसेनहॅममध्ये अंकगणित सोपे आहे.
कार्यक्षमता: < आम्ही आधी चर्चा केल्याप्रमाणे, ब्रेसेनहॅमचे एल्गोरिदम डीडीए पेक्षा सोपे अंकगणित वापरते आणि त्याचा परिणाम परिणामकारक परिणामांमध्ये होतो.
गती: डीडीए म्हणून गुणाकार आणि भागाकार ऑपरेशन्ससह फ्लोटिंग पॉईंट इंटिजर्सचा वापर केला जातो, हे तुलनेने मंद आहे तर ब्रेसेंहॅमचे अल्गोरिदम फक्त इंटिजर अंकगणित वापरून केवळ एकेक आणि वस्तुनिष्ठपणे वापरते. हे बहुधा त्याच्या संगणनासाठी लागणारा वेळ कमी करते आणि त्यामुळे ते डीडीएपेक्षा वेगवान आहे.