ההבדל בין האלגוריתם של DES ו- DDS ההבדל בין
האלגוריתם הדיפרנציאלי הדיגיטלי (DDA) האלגוריתם של Bresenhams הוא קווים דיגיטליים ציור אלגוריתמים משמשים גרפיקה ממוחשבת לצייר תמונות. בעבר, היינו באמצעות אנליטי אנליטי לחשב את פיקסלים ובכך רישומים קו התאפשרה. אבל אלה שיטות אנליטיות אינם מדויקים כמו השיטות הדיגיטליות כי עם השימוש של אלגוריתמים דיגיטליים אלה עכשיו וכמו בכל תחום, אנחנו כבר ממציא שיטות באיכות גבוהה יותר גרפיקה ממוחשבת גם כן. המצאת האלגוריתמים האלה היא דוגמה מושלמת. לפני שנמשיך, בואו נסתכל על הרעיון מאחורי האלגוריתמים האלה. אם כי נראה כי מחוץ לטווח הדיון שלנו, יש צורך להצביע על ההבדלים הבסיסיים בין השניים. אם אתה באמת מכיר את האלגוריתמים, אתה יכול לקפוץ ההבדלים בפועל הממוקם בסוף דף זה.
-> ->מהו אלגוריתם דיפרנציאלי דיגיטלי (DDA)?
A DDA משמש בעיקר כדי לצייר קווים בגרפיקה ממוחשבת ומשתמש בערכים אמיתיים תוך חיזוי ערכי הפיקסלים הבאים. נניח את ערך הפיקסל הראשוני כ (X0, Y0) (X0, Y0) ואת פיקסל היעד (X1, Y1) (X1, Y1). נלמד כיצד לחשב את ערכי פיקסל היעד מערך הפיקסלים הידוע (X0, Y0) (X0, Y0), כמפורט להלן.
- כיצד לחשב את ערך נקודת היעד באמצעות DDA?
שלב 1: כאן יש לנו את הקלט (X0, Y0) (X0, Y0) ואנו צריכים לזהות אם הקו פועל במקביל לציר ה- x או לציר ה- y. כדי למצוא את זה, תן לנו עכשיו לחשב את ההבדל בין הראשונית ואת ערכי פיקסל היעד.
dx = X1 - X0
dy = Y1 - Y0
שלב 2: עכשיו, זיהינו את ההבדל ואנחנו צריכים לצייר את הקו לאורך ציר x אם 'dx' הוא אפס אחרת, אנחנו צריכים לצייר את הקו במקביל ציר y. הנה חישוב בפועל במונחים של שפת המחשב.
אם (מוחלטת (dx)> מוחלטת (dy)
שלבים = מוחלט (dx);
אחר
צעדים = מוחלט (dy);
שלב 3: עכשיו, הגיע הזמן לזהות את הקואורדינטות 'x' בפועל או את ערכי 'y' קואורדינטות פיקסל כדי לצייר את הקו.
X צעדים = dx / (float) צעדים;
Y Increment = dy / (float) צעדים;
שלב 4: זה צריך להיות מחושב עד שנגיע פיקסל היעד. האלגוריתם DDA מעוגל את ערך הפיקסל לערך השלם הקרוב ביותר בזמן ביצוע החישוב. הנה מדגם הקוד של מה יש לנו דנו עכשיו.
עבור (int v = 0; v { x = x + X תוספת; y = y + y; putpixel (סיבוב (x), סיבוב (y)); } אנחנו נעשה עם ציור הקו באמצעות DDA ולתת לנו לעבור אל Bresenham של עכשיו! זה גם אלגוריתם ציור קו דיגיטלי ו הומצא על ידי Bresenham בשנת 1962 ולכן יש לו את אותו שם. אלגוריתם זה הוא מדויק יותר והוא משמש חיסור & בנוסף מחשוב ערך פיקסל תוך ציור הקו. הדיוק של האלגוריתם של Bresenham הוא אמין תוך ציור עקומות & מעגלים גם כן. בואו נראה איך האלגוריתם הזה עובד. שלב 1: האלגוריתמים של Bresenham מניחים את קואורדינטת הפיקסל הראשונית כ- (x a + 1 y ). שלב 2: הוא מחשב באופן אוטומטי את ערך הפיקסל הבא כ- (x a + 1 y a + 1 ), here 'a' הוא הערך הנוסף והאלגוריתם מחשב אותו על ידי הוספה או הפחתה של המשוואות שהיא יצרה. אלגוריתם זה מחשב ערכים מדויקים ללא עיגול ומראה קל יותר! כעת נבחן את הנקודות (0, 0) ו- (-8, -4) ונתן לנו לצייר קו בין הנקודות הללו באמצעות האלגוריתם של ברסנהאם. נתונים נתמכים, (x1, y1) = (0, 0) ו- (x2, y2) = (-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. החלטה משתנה = e = 2 * (Δy) - (Δx) לכן, e = 2 * (4) - (8) = 8-8 = 0 עם החישוב לעיל, תן לנו לתזמן את הערכים הנובעים. הערכים של y- קואורדינטות מותאמים על סמך משתנה החלטה ואנחנו פשוט מתעלמים מהחישוב שלה כאן. אתה יכול להבחין "לצוף" ולכן זה לא לעגל את הערכים ואילו האלגוריתם של Bresenham מעוגל את הערכים למספר השלם הקרוב ביותר. לכן, הערכים המשמשים הם פשוטים יותר באלגוריתם של Bresenham. מה זה לצייר? DDA מסוגל לצייר עיגולים ועיקולים מלבד קווי ציור. האלגוריתם של Bresenham הוא גם מסוגל לצייר את כל אלה שהוזכרו לעיל ואת הדיוק שלה הוא באמת גבוה יותר מזה של DDA. באופן דומה, האלגוריתם של Bresenham יכול לבוא עם עקומות יעיל יותר מזה המיוצר על ידי DDA. שני האלגוריתמים יכולים לצייר משולשים ומצולעים גם כן. איזה יקר? מהו אלגוריתם מותאם? מן הדיון שלנו, ברור מאוד כי האלגוריתם של Bresenham הוא אחד מותאם במונחים מהירות, עלות ושימוש בפעולות. הבה נבחן את ההבדלים בצורה טבלאית. S. לא הבדלים ב אלגוריתם דיפרנציאלי דיגיטלי 1. החישובים המשמשים הם פשוטים יותר. 3. היא השתמשה multiplications ו חטיבות. המשוואות הדיפרנציאליות המדגמיות הנמצאות כאן הן Xincrement = dx / (float) צעדים, הוא משתמש תוספות וחיסור. ניתן לחשב את חישוב המדגם כאן (x , y a + 1מהו האלגוריתם של ברסנהם?
<<<<<<<<<<<<<<<< 1
0
ערך
(- 2, -1)
-2
-1
0
(- 3, -1)
-3 < -1
ערך
(- 4, -2)
-4
-2
0
(- 5, -2)
-5 >>
ערך
(- 6, -3)
-6
-3
0
(- 7, -3)
-7
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ה- DDA משתמש בערכים אמיתיים בחישוביו עם השימוש בנקודות צפות. ערכי הפיקסלים או הנקודות הבאים נקבעים באמצעות משוואות דיפרנציאליות
X הגדלה = dx / (float) צעדים
Y תוספת = dy / (float) צעדים
כאן לא קבועים קבועים משמשים אבל באלגוריתם של ברסנהם נקודות קבועות משמשים בחישובים אריתמטיים. האלגוריתם של Bresenham משתמש בחשבונית מספר שלם, בניגוד ל- DDA.
סוג הפעולה בשימוש:
ה- DDA פותר את המשוואות הדיפרנציאליות עם פעולות הכפל והחלוקה. אתה יכול לשים לב אותו כאן, X תוספת = dx / (float) צעדים. האלגוריתם של Bresenham משתמש בפעולות חיבור וחיסור, וניתן להבחין בו כאן במשוואת חישוב הערך הבאה של פיקסל (x
a + 1
y
a + 1
). האריתמטיקה היא פשוטה יותר של Bresenham של בהשוואה DDA.
יעילות:
כפי שכבר דנו קודם לכן, האלגוריתם של Bresenham משתמש באריתמטיקה פשוטה יותר מאשר ב- DDA, ומביא לתוצאות יעילות.
מהירות:
כמו DDA משתמש מספרים שלמים צף יחד עם פעולות כפל & החלוקה, הוא איטי יחסית ואילו האלגוריתם של Bresenham משתמש רק אריתמטיקה שלם יחד עם תוספות & חיסור לבד. זה מקטין במידה ניכרת את הזמן שנלקח עבור החישובים שלה ולכן הוא מהיר יותר מאשר DDA.
דיוק:
למרות DDA משתמשת נקודות נקודה צפה, הדיוק של DDA הוא לא טוב כמו של Bresenham. מגוון גורמים משפיעים על מושג זה ולכן, ברסנהם הוא מדויק יותר מאשר DDA.
עיגול: רק להסתכל על החישוב של DDA כאן.