Αλγόριθμοι σχεδίασης βασικών 2D σχημάτων (ευθεία) Γραφικά με Η/Υ Αλγόριθμοι σχεδίασης βασικών 2D σχημάτων (ευθεία)
Σχεδίαση ευθείας με σάρωση (παρουσίαση προβλήματος) σχεδίαση ευθείας AB, με σάρωση, όπου A=(0,1) και B=(5,4) ποιο είναι το επόμενο pixel που θα πρέπει να ενεργοποιήσουμε μεταξύ των Α και Β; Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Σχεδίαση ευθείας με σάρωση (εύρεση επόμενου pixel) οριζόντια ευθεία: ενεργοποίηση πρώτου pixel και αύξηση της τετμημένης κατά 1. κάθετη ευθεία: ενεργοποίηση πρώτου pixel και αύξηση της τεταγμένης κατά 1. διαγώνια ευθεία: ενεργοποίηση πρώτου pixel και αύξηση των συντεταγμένων x και y κατά 1. Τι θα πρέπει να κάνουμε στη γενική περίπτωση; Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Σχεδίαση ευθείας με σάρωση (γενική περίπτωση, εύρεση επόμενου pixel) αυξάνουμε τη τετμημένη x κατά 1 και επιλέγουμε το pixel που είναι πλησιέστερο στην ευθεία AB. αλλά πως βρίσκουμε το “πλησιέστερο”; B (x1, y1); A (x2, y2); Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Σχεδίαση ευθείας με σάρωση (πραγματικές αποκλίσεις) (x1, y1); (x2, y2); A B οι κάθετες αποστάσεις (μπλε) είναι ανάλογες των πραγματικών αποκλίσεων (μαύρο). «όμοια τρίγωνα» Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Κριτήρια σωστού αλγορίθμου (σχεδίασης ευθειών) να φαίνονται ευθείες στην οθόνη (pixels όσο το δυνατόν πλησιέστερα στην μαθηματική πορεία της ευθείας) να τελειώνουν ακριβώς να έχουν σταθερή φωτεινότητα φωτεινότητα ανεξάρτητη του μήκους – κλίσης να σχεδιάζονται γρήγορα ελάχιστο πάχος ένα pixel Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Βασικός αλγόριθμος (εξίσωση ευθείας) Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Εξίσωση ευθείας Δίδονται οι συντεταγμένες των σημείων Α(x1, y1) & Β(x2, y2). η εξίσωση της ευθείας ΑΒ, δίνεται από την σχέση: όπου Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Περιγραφή Βασικού Αλγόριθμου σχεδίαση ευθείας από αριστερά προς τα δεξιά με κλίση m (0 m 1) Για να προσδιορίσουμε τα ενδιάμεσα pixels χρησιμοποιούμε την εξίσωση της ευθείας, ήτοι: εισάγουμε τις συντεταγμένες (x1,y1) & (x2,y2) των άκρων θέτουμε: (στρογγυλοποίηση) επαναλαμβάνουμε το «βήμα 3» x2-x1 φορές Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Παράδειγμα 1 Να σχεδιαστεί ευθεία ΑΒ χρησιμοποιώντας τον αλγόριθμο της εξίσωσης, όπου Α(0,0) & Β(5,6). Λύση Τότε: m = (6-0)/(5-0)= 1.2 και b = 0, όπου 1 < m (2o οκτ.) Άρα : y = 1.2*x+0 θα χρησιμοποιούμε λοιπόν την εξίσωση y = 1.2*x+0 για να ενεργοποιήσουμε τα pixels που αντιστοιχούν σε αυτήν Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Παράδειγμα 1 (συνέχεια) ψ ψστρ 1 1.2 2 2.4 3 3.6 4 4.8 5 6 0 1 2 3 4 5 5 4 3 2 1 6 Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Παρατηρήσεις Ο βασικός αλγόριθμος ή αλγόριθμος της εξίσωσης είναι αλγόριθμος σάρωσης παράγει πολλαπλασιασμούς χρονοβόρες στρογγυλοποιήσεις και Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Επαναληπτικός (αυξητικός) Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Επαναληπτικός Αλγόριθμος DDA Έστω ότι θέλουμε να σχεδιάσουμε μια ευθεία ΑΒ (από αριστερά προς τα δεξιά, χ2>χ1) με κλίση 0 < m ≤ 1, όπου Α(x1,y1), B(x2,y2) & x2 > x1 για την οποία ισχύει: Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Επαναληπτικός Αλγόριθμος DDA ποιο είναι το επόμενο pixel; υπολογίζουμε το επόμενο pixel (xi+1, yi+1) λαμβάνοντας υπόψη το προηγούμενό του (xi, yi), αποφεύγοντας τον πολλαπλασιασμό, σε κάθε επανάληψη αυξάνοντας το χi κατά χs = 1 το yi μεταβάλλεται κατά ys = m γενικά ο αλγόριθμος DDA βασίζεται στις συντεταγμένες των άκρων διαφορές Δx & Δy & μεταβολές χs & ys, όπου xs = Δx / step & ys = Δy / step με step=max{|Δχ|, |Δy|} Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Επαναληπτικός Αλγόριθμος DDA ποιο είναι το επόμενο pixel; Κλίση xs ys 1ο ογδοημόριο 0 m 1 1 m 2ο ογδοημόριο 1 m 1/m 3ο ογδοημόριο 1 |m| -1 4ο ογδοημόριο 0 |m| 1 -m Κλίση xs ys 1ο ογδοημόριο 0 m 1 -1 -m 2ο ογδοημόριο 1 m -1/m 3ο ογδοημόριο 1 |m| 1 4ο ογδοημόριο 0 |m| 1 m από αριστερά προς τα δεξιά: από δεξιά προς τα αριστερά: Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Περιγραφή Επαναληπτικού Αλγόριθμου DDA Εισάγουμε τις συντεταγμένες των άκρων Υπολογίζουμε τα Δx και Δy Αν abs(Δx) > abs(Δy) τότε step = abs(Δx) αλλιώς step = abs(Δy) Καθορίζουμε την μετατόπιση για το επόμενο pixel, xs = Δx / step & ys = Δy / step Ενεργοποιούμε το πρώτο pixel: x=x1, y=y1 Θέτουμε x = x + xs & y = y + ys , για τον υπολογισμό των ενδιάμεσων pixels και στρογγυλοποιούμε Επαναλαμβάνουμε το «βήμα 6» step φορές Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Παράδειγμα 2 Να σχεδιαστεί ευθεία ΑΒ (από αριστερά προς δεξιά, χ2>χ1) χρησιμοποιώντας τον αλγόριθμο DDA, όπου Α(0,0) & Β(5,6) Λύση m=1.2>1 → (b=0 & y=1.2x+0) Δx = 5 Δy = 6 abs(Δy)>abs(Δx)→step = abs(Δy)=6 xs = 1/m=0.833 ys = 1 |m|>1 |m|≤1 m>1 m≤1 2ο ογδοημόριο Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Παράδειγμα 2 (συνέχεια) Χστρ ψ x1=0 y1=0 x2=x1+1/m=0.833 1 y2=1 x3=x2+1/m=1.666 2 y3=2 x4=x3+1/m=2.499 y4=3 x5=x4+1/m=3.332 3 y5=4 x6=x5+1/m=4.165 4 y6=5 x7=x6+1/m=4.998 5 y7=6 5 4 3 2 1 6 0 1 2 3 4 5 Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Παρατηρήσεις Ο αλγόριθμος DDA, είναι αλγόριθμος σάρωσης περιορίζει αισθητά τους πολλαπλασιασμούς παράγει χρονοβόρες στρογγυλοποιήσεις δεν χρησιμοποιεί μεταβλητές απόφασης Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Σύγκριση: Εξίσωσης & DDA 0 1 2 3 4 5 5 4 3 2 1 6 5 4 3 2 1 6 0 1 2 3 4 5 21 / 37 Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ 21
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Bresenham Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Επαναληπτικός Αλγόριθμος Bresenham είναι σχεδιασμένος, ώστε κάθε επανάληψη να μεταβάλλει μια από τις τιμές των συντεταγμένων κατά μία μονάδα. Η άλλη συντεταγμένη μπορεί να μεταβληθεί, αλλά μπορεί και όχι, γεγονός που εξαρτάται από μια μεταβλητή απόφασης ρk. η απόφαση για το ποιο είναι το επόμενο pixel; εξαρτάται αποκλειστικά από το πρόσημο αυτής της μεταβλητής. Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Αλγόριθμος Bresenham Έστω ότι θέλουμε να σχεδιάσουμε μια ευθεία ΑΒ (από αριστερά προς τα δεξιά, χ2>χ1) με κλίση 0 ≤ m ≤ 1, όπου Α(x1,y1) & B(x2,y2) για την οποία ισχύει: Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Αλγόριθμος Bresenham ποιο είναι το επόμενο pixel; Βρισκόμαστε στο pixel (xk, yk) και πρέπει να αποφασίσουμε αν θα μετακινηθούμε στo pixel (xk+1, yk) ή στo pixel (xk+1, yk+1) Ισχύει: xk+1 = xk + 1 & yk+1 = yk ή yk + 1 Στην θέση xκ+1 συμβολίζουμε με d1 και d2 τις κατακόρυφες αποκλίσεις. Άρα θα έχουμε: y = mxκ + 1 + b = m(xκ + 1) + b d1 = y – yκ = m(xκ + 1) + b - yk d2 = (yκ+1) – y = yκ + 1 - m(xκ + 1) - b d1 - d2 = 2m(xκ + 1) - 2yκ + 2b - 1 y Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Υπολογισμός της ρk Η μεταβλητή ρκ δίδεται από την σχέση ρκ = Δx •(d1 – d2)= 2Δy • xκ - 2Δx • yκ + c όπου d1 - d2 = 2m(xκ + 1) - 2yκ + 2b – 1 & Δx = xk+1 - xk >0 Αν το pixel (xk+1, yk) είναι πιο μακριά από την ευθεία y απ‘ ότι το pixel (xk+1, yk+1) (δηλαδή d1>d2), τότε η μεταβλητή απόφασης ρκ είναι θετική, οπότε σχεδιάζουμε το πλησιέστερο pixel (xk+1, yk+1) ως προς την ευθεία y. y Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Διαδικασία επιλογής επόμενου pixel Για κάθε (xk, yk), το επόμενο σημείο είναι (xk+1, yk+1) όταν ρk≥0 (d1>d2) & ρk+1 = ρk + 2(Δy –Δx) (xk+1, yk) όταν ρk<0 (d1<d2) & ρk+1 = ρk + 2Δy μεταβλητή εκκίνησης ρ0 = 2Δy-Δx Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Περιγραφή αλγόριθμου Bresenham σχεδίαση ευθείας από αριστερά προς τα δεξιά με κλίση m (0 m 1) Εισάγουμε τις συντεταγμένες των άκρων της ευθείας Υπολογίζουμε τις σταθερές Δx, Δy και την ρ0 = 2Δy – Δx Ενεργοποιούμε το πρώτο σημείο (x0, y0) και στην συνέχεια Για κάθε xκ κατά μήκος της ευθείας, ξεκινώντας από κ = 0, κάνουμε το τέστ: Αν ρκ<0 το επόμενο σημείο είναι το (xκ+1, yκ) και ρκ+1 = ρκ+ 2Δy Αν ρκ≥0 το επόμενο σημείο είναι (xκ+1, yκ+1) και ρκ+1 = ρκ + 2(Δy - Δx) Επαναλαμβάνουμε το «βήμα 4» Δx φορές Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Αλγόριθμος Bresenham Αν m > 1 έχουμε εναλλαγή των x, y μετακινούμαστε κατά τον άξονα y κατά μοναδιαία βήματα και υπολογίζουμε το x στην περίπτωση που η σχεδίαση γίνεται από δεξιά προς τα αριστερά τα x & y μειώνονται Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Παρατηρήσεις Ο αλγόριθμος Bresenham, είναι επαναληπτικός αλγόριθμος σάρωσης δεν χρησιμοποιεί πολλαπλασιασμούς και διαιρέσεις χρησιμοποιεί προσθέσεις και αφαιρέσεις δεν παράγει χρονοβόρες στρογγυλοποιήσεις χρησιμοποιεί μεταβλητή απόφασης όταν χρησιμοποιεί ακεραίους έχει πολύ καλή προσέγγιση της ευθείας και σχεδιάζει κύκλους - καμπύλες Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ Παράδειγμα 3 Έστω ότι θέλουμε να σχεδιάσουμε το ευθύγραμμο τμήμα με αρχή στο (20,10) & τέλος στο (30,18) κλίση: m = 0,8 < 1 μεταβλητή εκκίνησης: ρ0 = 2Δy - Δx = 6, επίσης Δx = 10, Δy = 8 & 2Δy = 16 & 2Δx = 20. Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Παράδειγμα 3 (συνέχεια) τέλος 6 (21,11) 2 αρχή Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Παράδειγμα 3 (συνέχεια) Αρχίζοντας από το σημείο (x0,y0)=(20,10) οι ακόλουθες θέσεις των pixels είναι: 9 8 7 6 5 4 3 2 1 Αν ρκ<0 το επόμενο σημείο είναι το (xκ+1, yκ) και ρκ+1 = ρκ+ 2Δy Αν ρκ≥0 το επόμενο σημείο είναι (xκ+1, yκ+1) και ρκ+1 = ρκ + 2(Δy - Δx) ρ0 =2Δy-Δx=6 >0 ρ1> ρ0 + 2(Δy - Δx) Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Παράδειγμα 3 (συνέχεια) τελικά: Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ
Αλγόριθμοι σχεδίασης ευθείας Βασικός (Εξίσωσης) Επαναληπτικός (αυξητικός) DDA Bresenham (αυξητικός) σάρωσης ü πολλαπλασιασμοί ή διαιρέσεις (αρκετοί) (ελάχιστοι) - στρογγυλοποιήσεις μεταβλητή απόφασης 35 / 37 Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, ΤΕΠ - ΠΜ - Γραφικά με Η/Υ 35