ההבדל בין האלגוריתם של DES ו- DDS ההבדל בין

Anonim

האלגוריתם הדיפרנציאלי הדיגיטלי (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- קואורדינטות מותאמים על סמך משתנה החלטה ואנחנו פשוט מתעלמים מהחישוב שלה כאן.

<<<<<<<<<<<<<<<< 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 כאן.

  • X תוספת = dx / (float) צעדים

אתה יכול להבחין "לצוף" ולכן זה לא לעגל את הערכים ואילו האלגוריתם של Bresenham מעוגל את הערכים למספר השלם הקרוב ביותר. לכן, הערכים המשמשים הם פשוטים יותר באלגוריתם של Bresenham.

מה זה לצייר?

DDA מסוגל לצייר עיגולים ועיקולים מלבד קווי ציור. האלגוריתם של Bresenham הוא גם מסוגל לצייר את כל אלה שהוזכרו לעיל ואת הדיוק שלה הוא באמת גבוה יותר מזה של DDA. באופן דומה, האלגוריתם של Bresenham יכול לבוא עם עקומות יעיל יותר מזה המיוצר על ידי DDA. שני האלגוריתמים יכולים לצייר משולשים ומצולעים גם כן.

איזה יקר?

  • כמו DDA כולל עיגול גם כן, זה יקר יותר מאשר השימוש באלגוריתם של Bresenham.

מהו אלגוריתם מותאם? מן הדיון שלנו, ברור מאוד כי האלגוריתם של Bresenham הוא אחד מותאם במונחים מהירות, עלות ושימוש בפעולות. הבה נבחן את ההבדלים בצורה טבלאית. S. לא הבדלים ב אלגוריתם דיפרנציאלי דיגיטלי

  • אלגוריתם של Bresenham

1.

  • למה השם? רק בגלל זה היה יישום דיגיטלי של המשוואות, יש לו את השם.
  • זה הומצא על ידי ג 'יי E. Bresenham בשנת 1962 ומכאן השם. 2.
  • חישובים זה כרוך בחישובים קשים יותר.

החישובים המשמשים הם פשוטים יותר.

3.

  • סוגי פעולות בשימוש

היא השתמשה multiplications ו חטיבות. המשוואות הדיפרנציאליות המדגמיות הנמצאות כאן הן Xincrement = dx / (float) צעדים,

  • Yincrement = dy / (float) צעדים.

הוא משתמש תוספות וחיסור. ניתן לחשב את חישוב המדגם כאן (x

  • a + 1

, y

a + 1

). 4. ערכי חישוב אריתמטי הוא משתמש בערכי נקודה צפה.
הוא משתמש רק בערכים שלמים. 5. יעילות תוצאות אריתמטיות מורכבות יעילות פחותה.
תוצאות אריתמטיות פשוטות יעילות רבה יותר. 6. מהירות שימוש במכפלות ופעולות החלוקה לוקח זמן רב לתהליכי החישוב שלו.
שימוש בפעולות חיבור וחיסור לוקח פחות זמן מאשר DDA. 7. דיוק

זה פחות מדויק.

זה מדויק יותר. 8. עיגול מעל הוא משתמש בערכים אמיתיים ולא מסיר את הערכים. הוא מסובב את הערכים לערכים המספרים השלמים הקרובים ביותר.
9. ציור יכולת הוא מסוגל ציור קווים, עיגולים, עקומות אבל עם פחות דיוק. אנחנו יכולים אפילו לצייר משולשים ומצולעים עם אלגוריתם זה. הוא מסוגל ציור קווים, עיגולים, עקומות עם יעילות רבה יותר. משולשים ומצולעים ניתן גם לצייר עם אלגוריתם זה.
10. עלות החישובים זה יקר כמו זה כרוך מעוגל גם כן. השימוש באלגוריתם של Bresenham הוא זול יותר מאשר DDA.
11. אלגוריתם ממוטב זה לא אלגוריתם מותאם זהו אלגוריתם מותאם.
עסקנו בכל הבדל אפשרי בין ה- DDA לבין האלגוריתם של Bresenham. זה אולי אפילו נראה חוזר על עצמו, אבל יש סיבה תקפה להזכיר את הנקודות האלה שוב הייתם באים לדעת מתי אתה מבין את זה לגמרי. אם אתה עדיין מרגיש כי קיימת עמימות, בבקשה להשאיר לנו תגובה. בואו נלמד יחד על ידי שיתוף הידע הנכון!