Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων



Σχετικά έγγραφα
Γραφικά με υπολογιστές. Διδάσκων: Φοίβος Μυλωνάς. Διάλεξη #07

Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, Τ.Ε.Π Π.Μ, Μάθημα: Γραφικά με Η/Υ

Γραφικά με Η/Υ Αλγόριθμοι σχεδίασης βασικών 22D D σχημάτων (ευθεία

Γραφικά Υπολογιστών: Εμφάνιση σε 2D

Γραφικά με Η/Υ Αλγ λ ό γ ρ ό ιθ ρ μοι κύκλου & έλλειψης

5ο Μάθημα Αλγόριθμοι Σχεδίασης Βασικών Σχημάτων

Διαλέξεις #05 & #06. Διδάσκων: Φοίβος Μυλωνάς. Γραφικά με υπολογιστές. Αλγόριθμος Σχεδίασης Κύκλου Αλγόριθμος Σχεδίασης Έλλειψης

ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ. ΜΕΡΟΣ 1ο ΑΛΓΕΒΡΑ

ΑΛΓΟΡΙΘΜΟΙ ΕΥΘΕΙΑΣ ΚΥΚΛΟΥ - ΕΛΛΕΙΨΗΣ

Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ. 3ο Μάθημα Αποκοπή. Γραφικα. Ευάγγελος Σπύρου

ΚΕΦΑΛΑΙΟ 2: ΑΛΓΟΡΙΘΜΟΙ ΕΥΘΕΙΑΣ ΚΥΚΛΟΥ -ΈΛΛΕΙΨΗΣ

Γραφικά με υπολογιστές

Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods)

Η συνάρτηση y = αχ 2. Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος: «Σπουδές στην εκπαίδευση» ΜEd

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8


Γραφικά Υπολογιστών: Αλγόριθμοι Σχεδίασης Γραμμών

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας

1 ΘΕΩΡΙΑΣ...με απάντηση

δίου ορισμού, μέσου του τύπου εξαρτημένης μεταβλητής του πεδίου τιμών που λέγεται εικόνα της f για x α f α.

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

Ιωάννης Σ. Μιχέλης Μαθηματικός

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

ΕΠΙΤΡΟΠΗ ΔΙΑΓΩΝΙΣΜΩΝ 33 η Ελληνική Μαθηματική Ολυμπιάδα "Ο Αρχιμήδης" 27 Φεβρουαρίου 2016

ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ

ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Β ΓΥΜΝΑΣΙΟΥ 2013

Κεφάλαιο 3 Βασική Σχεδίαση και Επεξεργασία

ΕΠΙΤΡΟΠΗ ΔΙΑΓΩΝΙΣΜΩΝ 33 η Ελληνική Μαθηματική Ολυμπιάδα "Ο Αρχιμήδης" 27 Φεβρουαρίου 2016

ΓΥΜΝΑΣΙΟ ΚΑΣΤΕΛΛΑΝΩΝ ΜΕΣΗΣ ΑΛΓΕΒΡΑ

2. Πόσοι ακέραιοι αριθμοί μεταξύ του 10 και του 100 αυξάνονται κατά 9 μονάδες, όταν αντιστραφούν τα ψηφία τους; Γ. Αν, Δ. Αν, τότε. τότε.

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

Μαθηματικά Β Γυμνασίου

Μαθηματικά Α' Γυμ. - Ερωτήσεις Θεωρίας 1 ΕΡΩΤΗΣΕΙΣ. (1) Ποιοι είναι οι φυσικοί αριθμοί; Γράψε τέσσερα παραδείγματα.

Τράπεζα Θεμάτων Διαβαθμισμένης Δυσκολίας-Μαθηματικά Ομάδας Προσανατολισμού Θετικών Σπουδών ΟΜΑΔΑΣ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΘΕΤΙΚΩΝ ΣΠΟΥΔΩΝ Β Λ Υ Κ Ε Ι Ο Υ

Ανάκλαση Είδωλα σε κοίλα και κυρτά σφαιρικά κάτοπτρα. Αντώνης Πουλιάσης Φυσικός M.Sc. 12 ο ΓΥΜΝΑΣΙΟ ΠΕΡΙΣΤΕΡΙΟΥ

Οδηγίες για το CABRI - GEOMETRY II Μωυσιάδης Πολυχρόνης - Δόρτσιος Κώστας

II.6 ΙΣΟΣΤΑΘΜΙΚΕΣ. 1. Γραφήματα-Επιφάνειες: z= 2. Γραμμική προσέγγιση-εφαπτόμενο επίπεδο. 3. Ισοσταθμικές: f(x, y) = c

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr

ΤΟΠΙΚΑ ΑΚΡΟΤΑΤΑ ΠΡΟΒΛΗΜΑΤΑ ΑΚΡΟΤΑΤΩΝ

Να υπολογίζουμε τους τριγωνομετρικούς αριθμούς οξείας γωνίας. Τη γωνία σε κανονική θέση και τους τριγωνομετρικούς αριθμούς γωνίας σε κανονική θέση.

ΜΑΘΗΜΑΤΙΚΑ B ΛΥΚΕΙΟΥ

Γ. Ν. Π Α Π Α Δ Α Κ Η Σ Μ Α Θ Η Μ Α Τ Ι Κ Ο Σ ( M S C ) ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ. ΠΡΟΓΡΑΜΜΑ: Σπουδές στις Φυσικές Επιστήμες

Κεφάλαιο 1 o Εξισώσεις - Ανισώσεις

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο

Παιχνιδάκια με τη LOGO

ΜΑΘΗΜΑΤΙΚΑ Γ ΓΥΜΝΑΣΙΟΥ

Α ΜΕΡΟΣ - ΑΛΓΕΒΡΑ. Α. Οι πραγματικοί αριθμοί και οι πράξεις τους

ΜΑΘΗΜΑΤΑ ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ

πάχος 0 πλάτος 2a μήκος

1,y 1) είναι η C : xx yy 0.

Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση

Άλγεβρα 1 ο Κεφάλαιο ... ν παράγοντες

ΕΝΟΤΗΤΑ 1: ΟΡΙΣΜΟΣ ΠΕΔΙΟ ΟΡΙΣΜΟΥ ΠΡΑΞΕΙΣ ΣΥΝΑΡΤΗΣΕΩΝ ΓΡΑΦΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ ΒΑΣΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΛΥΜΕΝΑ ΘΕΜΑΤΑ ΘΕΜΑ Α

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 2. Σταύρος Παπαϊωάννου

Καρτεσιανές συντεταγμένες Γραφική παράσταση συνάρτησης

ΚΥΠΡΙΑΚΗ ΜΑΘΗΜΑΤΙΚΗ ΕΤΑΙΡΕΙΑ ΠΑΓΚΥΠΡΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΔΕΚΕΜΒΡΙΟΣ 2017

ΠΕΡΙΛΗΨΗ ΘΕΩΡΙΑΣ ΣΤΗΝ ΕΥΘΥΓΡΑΜΜΗ ΚΙΝΗΣΗ

f(x) Af(x) = και Mf(x) = f (x) x

Εφαρμοσμένα Μαθηματικά

Γεωμετρική Οπτική ΚΕΦΑΛΑΙΟ 34

Μαθηματικά Προσανατολισμού Θετικών Σπουδών Β Λυκείου

ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΤΗΣ Β ΛΥΚΕΙΟΥ

Ορισμός Τετραγωνική ονομάζεται κάθε συνάρτηση της μορφής y = αx 2 + βx + γ με α 0.

Γραφικά Υπολογιστών: Βασικά Μαθηματικά

Κεφάλαιο 7 ο : Θετικοί και Αρνητικοί αριθμοί

π (α,β). Έστω τα διανύσματα π (α,β) να βρεθούν:

ΚΕΦΑΛΑΙΟ 3 Ο 3.2 Η ΕΝΝΟΙΑ ΤΟΥ ΓΡΑΜΜΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΚΑΙ Η. (Σ) όπου α, β, α, β, είναι οι

1. Τι είναι η Κινηματική; Ποια κίνηση ονομάζεται ευθύγραμμη;

Μελέτη της συνάρτησης ψ = α χ 2

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

ΜΕΛΕΤΗ ΒΑΣΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ

Κίνηση ΚΕΦΑΛΑΙΟ 2 Β ΓΥΜΝΑΣΙΟΥ

Περιεχόμενα. Κεφάλαιο 1 ΣΥΣΤΗΜΑΤΑ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΣΕ ΜΙΑ ΕΥΘΕΙΑ Οι συντεταγμένες ενός σημείου Απόλυτη τιμή...14

ΘΕΩΡΙΑ Α ΓΥΜΝΑΣΙΟΥ. 1. Να γράψετε τον τύπο της Ευκλείδειας διαίρεσης. Πώς ονομάζεται κάθε σύμβολο του τύπου;

3, ( 4), ( 3),( 2), 2017

Μαθηματική Εισαγωγή Συναρτήσεις

ΣΥΝΑΡΤΗΣΕΩΝ. f3 x = και

ΔΙΑΦΟΡΙΚΟΣ ΛΟΓΙΣΜΟΣ ΣΥΝΟΠΤΙΚΗ ΘΕΩΡΕΙΑ ΜΕΘΟΔΟΛΟΓΙΑ ΛΥΜΕΝΑ ΠΑΡΑΔΕΙΓΜΑΤΑ

2 η ΕΡΓΑΣΙΑ Παράδοση

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

ΜΑΘΗΜΑΤΙΚΑ Α' ΓΥΜΝΑΣΙΟΥ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ σε word! ΕΠΙΜΕΛΕΙΑ: ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΣΟΛΚΑΣ

Μοντέλο φωτισμού Phong

Γεωµετρικοί Αλγόριθµοι (CLR, κεφάλαιο 35)

12. ΑΝΙΣΩΣΕΙΣ Α ΒΑΘΜΟΥ. είναι δύο παραστάσεις μιας μεταβλητής x πού παίρνει τιμές στο

Βασικές Γνώσεις Μαθηματικών Α - Β Λυκείου

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 2. Σταύρος Παπαϊωάννου

Ερωτήσεις θεωρίας για τα Μαθηματικά Γ γυμνασίου. Άλγεβρα...

Σφαίρα σε ράγες: Η συνάρτηση Lagrange. Ν. Παναγιωτίδης

ΕΠΙΤΡΟΠΗ ΔΙΑΓΩΝΙΣΜΩΝ 36 η Εθνική Μαθηματική Ολυμπιάδα «Ο ΑΡΧΙΜΗΔΗΣ» 23 Φεβρουαρίου 2019 Θέματα και ενδεικτικές λύσεις μεγάλων τάξεων

ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΑΘΗΜΑΤΙΚΩΝ Β ΓΥΜΝΑΣΙΟΥ ΜΕΡΟΣ 1ο «ΑΛΓΕΒΡΑ»

Μαθηματική Εισαγωγή Συναρτήσεις

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ B ΤΑΞΗΣ. χρησιμοποιήσουμε καθημερινά φαινόμενα όπως το θερμόμετρο, Θετικοί-Αρνητικοί αριθμοί.

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΟΝΤΕΛΟΠΟΙΗΣΗ-ΨΗΦΙΑΚΗ ΣΥΝΘΕΣΗ ΕΙΚΟΝΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ

Με τη σύμβαση της «κινηματικής αλυσίδας», ο μηχανισμός αποτυπώνεται σε πίνακα παραμέτρων ως εξής:

ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Β ΛΥΚΕΙΟΥ

Κεφάλαιο 2: Διανυσματικός λογισμός συστήματα αναφοράς

1. Ποια μεγέθη ονομάζονται μονόμετρα και ποια διανυσματικά;

Transcript:

1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr

2 Περιγραφή Σήμερα θα δούμε: Αλγόριθμος σχεδίασης γραμμών του Bresenham Σύγκριση αλγορίθμων σχεδίασης γραμμών Αλγόριθμοι σχεδίασης κύκλων Μια απλή τεχνική Μέσου σημείου κύκλου (mid-point circle) Αλγόριθμοι γεμίσματος (χρωματισμού) Πολυγώνων (Polygon fill) Σύνοψη των raster αλγορίθμων σχεδίασης

3 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Ο αλγόριθμος Bresenham είναι ένας ακόμη αυξητικός (incremental scan conversion) αλγόριθμος Το κύριο πλεονέκτημα του αλγόριθμου είναι ότι χρησιμοποιεί μόνο υπολογισμούς ακεραίων Ο Jack Bresenham εργάστηκε στην IBM για 27 worked και μετά μπήκε στην εκπαίδευση. Ανέπτυξε τοναλγοριθμο στις αρχές της δεκαετίας τ ο υ 1 9 6 0.

4 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Κινούμενοι στον άξονα x κατά μια μονάδα σε κάθε βήμα επιλέγουμε μεταξύ δυο διαφορετικών y τιμών συντεταγμένων Παράδειγμα, από την 5 θέση (2, 3) πρέπει να (x k +1, y k +1) επιλέξουμε μεταξύ των 4 σημείων (3, 3) και (3, 4) (x k, y k ) 3 2 (x k +1, y k ) 2 3 4 5 Θα διαλέγαμε το σημείο που είναι πιο κοντά στην αρχική γραμμή

5 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Στη (sample) θεση x k +1 οι κάθετες αποκλίσεις από την μαθηματική γραμμή σημειώνονται ως y k+1 y y k d upper d lower d upper και d lower x k +1 Η τιμή της y συντεταγμένης στην μαθηματική γραμμή στο σημείο x k +1 ειναι: y = m( x + 1) + k b

6 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Τα σημεία d upper and d lower υπολογίζονται από: και d d upper = y = m( x + 1) + lower y k = ( y + 1) k k k y k Χρησιμοποιούμε αυτά τα σημεία για να αποφασίσουμε ποιο pixel είναι πιο κοντά στην μαθηματική γραμμή y k b = y + 1 m( x + 1) b

7 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Η απόφαση βασίζεται στην διαφορά μεταξύ των θέσεων των δυο pixel: d lower d upper = 2m( x + 1) 2y + 2b 1 Αντικαθιστούμε το m με y/ x οπού x και y είναι οι διαφορές μεταξύ των δυο άκρων: k y x( dlower dupper ) = x(2 ( xk + 1) 2yk + 2b 1) x = 2 y x 2 x y + 2 y + x(2b 1) k k k = 2 y xk 2 x yk + c

8 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Η παράμετρος απόφασης p k για το kth βήμα σε μια γραμμή δίδεται από: p = x( d d ) k lower = 2 y x k upper 2 x Το πρόσημο της παραμέτρου απόφασης p k είναι το ίδιο με αυτό της d lower d upper Εάν p k είναι αρνητικό, τότε επιλέγουμε το χαμηλότερο pixel, άλλως επιλέγουμε το υψηλότερο pixel y k + c

9 Αλγόριθμος Σχεδίασης Γραμμών του Οι αλλαγές στις συντεταγμένες συμβαίνουν κατά τον άξονα των x με βήματα (ανα pixel) για να γίνονται οι πράξεις με ακεραίους Στο βήμα k+1 η παράμετρος απόφασης δίδεται από: p 2 y x x y c k + 1 = k + 1 2 k + 1 + Αφαιρώντας το p k από το p k+1 έχουμε: p k + 1 pk = 2 y( xk + 1 xk ) 2 x( yk + 1 yk Bresenham )

10 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Αλλά το x k+1 είναι το ίδιο με το x k +1 οπότε: p k + 1 = pk + 2 y 2 x( yk + 1 yk όπου y k+1 - y k είναι 0 ή 1 ανάλογα με το πρόσημο του p k Η πρώτη παράμετρος απόφασης p 0 υπολογίζεται στο σημείο (x 0, y 0 ) δίδεται από: p 0 = 2 y x )

11 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham ΑΛΓΟΡΙΘΜΟΣ (για m < 1.0) 1. Εισάγετε τα σημεία των δυο άκρων, αποθηκεύοντας το αριστερό άκρο στο σημείο (x 0, y 0 ) 2. Σχεδιάσετε το σημείο (x 0, y 0 ) 3. Υπολογίσετε τις σταθερές Δx, Δy, 2Δy, και (2Δy - 2Δx) και την πρώτη τιμή της παραμέτρου απόφασης: p 0 = 2 y x 4. Για κάθε x k στην γραμμή, ξεκινώντας με k = 0, εκτελέστε το παρακάτω τέστ. Εάν p k < 0, το επόμενο σημείο που θα σχεδιασθεί είναι το (x k +1, y k ) και: p = p + k + 1 k 2 y

12 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Διαφορετικά το επόμενο σημείο που θα σχεδιασθεί είναι το σημείο (x k +1, y k +1) and: p 5. Επανελαβε το βημα 4 (Δx 1) φορές = p + 2 y k + 1 k 2 x Προσοχή! Ο παραπάνω αλγόριθμος προϋποθέτει ότι η κλήση των γραμμών είναι μικρότερη του 1 για άλλες κλίσεις χρειάζεται μικρή διόρθωση (ρύθμιση).

13 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham ΑΛΓΟΡΙΘΜΟΣ (για m >= 1.0) 1. Εισάγετε τα σημεία των δυο άκρων, αποθηκεύοντας το αριστερό άκρο στο σημείο (x 0, y 0 ) 2. Σχεδιάσετε το σημείο (x 0, y 0 ) 3. Υπολογίσετε τις σταθερές Δx, Δy, 2Δx, και (2Δx - 2Δy) και την πρώτη τιμή της παραμέτρου απόφασης: p 0 = 2 y x 4. Για κάθε x k στην γραμμή, ξεκινώντας με k = 0, εκτελέστε το παρακάτω τέστ. Εάν p k < 0, το επόμενο σημείο που θα σχεδιασθεί είναι το (x k +1, y k ) και: p = p + k + 1 k 2 y

14 Αλγόριθμος Σχεδίασης Γραμμών του Bresenham Διαφορετικά το επόμενο σημείο που θα σχεδιασθεί είναι το σημείο (x k +1, y k +1) and: p 5. Επανέλαβε το βήμα 4 (Δy 1) φορές = p + 2 y k + 1 k 2 x --

15 Αλγόριθμος Bresenham - Παράδειγμα Να σχεδιάσουμε την γραμμή από το σημείο (20, 10) έως το (30, 18) Υπολογίζουμε όλες τις σταθερές: Δx: 10 Δy: 8 2Δy: 16 2Δy - 2Δx: -4 Υπολογίζουμε την αρχική παράμετρο p 0 (initial decision parameter): p0 = 2Δy Δx = 6

16 Αλγόριθμος Bresenham Παράδειγμα (2) 18 17 16 k p k (x k+1,y k+1 ) 0 1 15 14 13 12 11 10 20 21 22 23 24 25 26 27 28 29 30 2 3 4 5 6 7 8 9

17 Αλγόριθμος Bresenham Παράδειγμα Ακολουθούμε τα βήματα του αλγόριθμου Bresenham για την σχεδίαση γραμμών για μια γραμμή από το σημείο (21,12) ως το σημείο (29,16)

18 Αλγόριθμος Bresenham Παράδειγμα (2) 18 17 16 k p k (x k+1,y k+1 ) 0 1 15 14 13 12 11 10 20 21 22 23 24 25 26 27 28 29 30 2 3 4 5 6 7 8

19 Αλγόριθμος Bresenham - Σύνοψη Πλεονεκτήματα του αλγόριθμου σχεδίασης γραμμών του Bresenham: Γρήγορος αυξητικός αλγόριθμος Χρήση μόνο ακεραίων υπολογισμών

20 Εξίσωση κύκλου: Αλγόριθμος Σχεδίασης Κύκλου (Circle Drawing) 2 2 x + y = r 2 όπου r είναι η ακτίνα του κύκλου. Ένας απλός αλγόριθμος σχεδίασης κύκλου λύνοντας την εξίσωση ως προς y (για κάθε τιμή του x υπολογίζεται η αντίστοιχη τιμή του y) y = ± r 2 x 2

21 Αλγόριθμος Σχεδίασης Κύκλου(2) Για ακτίνα κύκλου r=20 έχουμε: y 20 0 2 2 0 = 2 2 y1 = 20 1 y 20 2 2 2 2 = 20 20 20 2 2 y19 = 20 19 2 2 y20 = 20 20 6 0

22 Αλγόριθμος Σχεδίασης Κύκλου (3) Δεν είναι έξυπνη λύση. Πρώτον, ο κύκλος που προκύπτει έχει μεγάλα κενά όπου η κλήση προσεγγίζει την κάθετο. Δεύτερον, οι υπολογισμοί δεν είναι πολύ αποτελεσματικοί Η πράξη πολ/σμού (τετράγωνο) Η πράξη τετραγωνικής ρίζας αποφύγετε αυτή την πράξη. Χρειαζόμαστε μια πιο αποτελεσματική και ακριβέστερη λύση.

23 Συμμετρία Οκτώ Σημείων (Eight-Way Symetry) Παρατηρούμε ότι οι κύκλοι με τo κέντρο στο σημείο (0, 0) έχει οκτώ μέρη που είναι συμμετρικά, έτσι ο αλγόριθμος σχεδίασης είναι πιο αποτελεσματικός (-x, y) (x, y) (-y, x) (y, x) (-y, -x) R 2 (y, -x) (-x, -y) (x, -y)

24 Αλγόριθμος Κύκλου Μέσου Σημείου (Mid-Point Circle) Υπάρχει ένας αυξητικός αλγόριθμος για την σχεδίαση κύκλων ο αλγόριθμος κύκλου μέσου σημείου του Bresenham (όμοιος με αυτόν για την σχεδίαση γραμμών) Στον αλγόριθμο κύκλου μέσου σημείου χρησιμοποιούμε την συμμετρία οκτώ σημείων. Έτσι υπολογίζουμε μόνο τα σημεία για το 1/8 (top right eighth) του κύκλου, και στην συνέχεια χρησιμοποιούμε την συμμετρία να λάβουμε τα υπόλοιπα σημεία.

25 Αλγόριθμος Κύκλου Μέσου Σημείου (2) Υποθέτουμε ότι έχουμε ήδη σχεδιάσει το σημείο (x k, y k ) (x k, y k ) Το επόμενο σημείο είναι μια επιλογή μεταξύ του σημείου (x k +1, y k ) και (x k +1, y k -1) Θα θέλαμε να διαλέξουμε το σημείο που είναι πιο κοντά στον πραγματικό κύκλο. Πως κάνουμε αυτή την επιλογή; (x k +1, y k ) (x k +1, y k -1)

26 Αλγόριθμος Κύκλου Μέσου Σημείου (3) Ξαναγράφουμε την εξίσωση του κύκλου ως: 2 2 2 f circ ( x, y) x y r Η εξίσωση εκτιμάται ως εξής: f circ < 0, if ( x, y) = 0, if > 0, if = Διαλέγουμε ένα από τα υποψήφια pixels υπολογίζοντας το μέσο σημείο με την συνάρτηση + ( x, y) is inside the circle boundary αν (x,y) είναι μέσα στα όρια του κύκλου ( x, y) is on the circle boundary αν (x,y) είναι στα όρια του κύκλου ( x, y) is outside the circle boundary αν (x,y) είναι έξω από τα όρια του κύκλου

27 Αλγόριθμος Κύκλου Μέσου Σημείου (4) Υποθέτουμε ότι μόλις έχουμε σχεδιάσει το pixel στο (x k,y k ) έτσι πρέπει να διαλέξουμε ανάμεσα στα σημεία (x k +1,y k ) και (x k +1,y k -1) Η μεταβλητή απόφασης p k ορίζεται ως p 1 k = fcirc ( xk + 1, yk ) 2 2 1 2 = ( xk + 1) + ( yk ) r 2 Εάν p k < 0 το μέσο-σημείο είναι μέσα στον κύκλο και το pixel στο y k είναι πιο κοντά στο κύκλο Διαφορετικά το μέσο-σημείο είναι έξω από τον κύκλο και το pixel y k -1 είναι πιο κοντά 2

28 Αλγόριθμος Κύκλου Μέσου Σημείου (5) Για να διασφαλίσουμε ότι ο αλγόριθμος είναι αποτελεσματικός μπορούμε να κάνουμε τους υπολογισμούς μας αυξητικά. Έχουμε: ή: p p k + 1 = f circ = [( x k ( 1 ) x + 1, y k + 1 + 1) + 1] ( ) 2 1 2 y r k + 1 όπου y k+1 είναι είτε y k είτε y k -1 ανάλογα με το πρόσημο p k 2 k + 1 + 2 2 1 = pk + 2( xk + 1) + ( yk + 1 yk ) ( yk + 1 y ) + 1 k + k 2 2

29 Αλγόριθμος Κύκλου Μέσου Σημείου (6) Η πρώτη μεταβλητή απόφασης δίδεται ως: p 0 = = f Εάν p k < 0 τότε η επόμενη μεταβλητή απόφασης δίδεται από: p circ (1, r = 1+ ( r 5 4 p r 1 ) 2 Εάν p k > 0 τότε η μεταβλητή απόφασης είναι: p x 1 ) 2 2 k + 1 = k + 2 k + 1 + 1 = pk + 2xk + 1 + 1 2y + 1 r 1 k + k 2

30 Αλγόριθμος Κύκλου Μέσου Σημείου ΑΛΓΟΡΙΘΜΟΣ Δώσε την ακτίνα r και το κέντρο του κύκλου (x c, y c ) και θέσε τις συντεταγμένες για το πρώτο σημείο στην περιφέρεια ενός κύκλου με κέντρο την αρχή ως: ( x 0, y0) = (0, r Υπολόγισε την αρχική τιμή της παραμέτρου απόφασης ως: p = 5 0 r 4 Ξεκινώντας με k = 0 σε κάθε θέση x k, εκτέλεση το παρακάτω έλεγχο. Εάν p k < 0, το επόμενο σημείο για τον κύκλο με κέντρο στο (0, 0) είναι (x k +1, y k ) και: p k + 1 = pk + 2xk + 1 + ) 1

31 The Mid-Point Circle Algorithm (cont ) αλλιώς το επόμενο σημείο κατά μήκος του κύκλου είναι (x k +1, y k -1) και: p k + 1 = pk + 2 xk + 1 + 1 2yk + 1 4. Καθόρισε τα συμμετρικά σημεία στις άλλες επτά περιοχές 5. Μετακίνησε κάθε υπολογισμένη θέση του pixel (x, y) στο κύκλο με κέντρο (x c, y c ) να σχεδιασθούν οι συντεταγμένες τιμές: x + = x x c y = y + yc 6. Επανέλαβε τα βήματα 3 ως 5 μέχρι x >= y

32 Αλγόριθμος Κύκλου Μέσου Σημείου Παράδειγμα Θα σχεδιάσουμε έναν κύκλο με κέντρο στο (0,0) και ακτίνα 10 χρησιμοποιώντας τον αλγόριθμο του μέσου-σημείου.

33 Αλγόριθμος Κύκλου Μέσου Σημείου Παράδειγμα (2) 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 k p k (x k+1,y k+1 ) 2x k+1 2y k+1 0 1 2 3 4 5 6

34 Αλγόριθμος Κύκλου Μέσου Σημείου Παράδειγμα Χρησιμοποιώντας τον αλγόριθμο του μέσουσημείου θα σχεδιάσουμε έναν κύκλο με κέντρο στο (0,0) και ακτίνα 16.

35 Αλγόριθμος Κύκλου Μέσου Σημείου Παράδειγμα (2) 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 1314 1516 k p k (x k+1,y k+1 ) 2x k+1 2y k+1 0 1 2 3 4 5 6 7 8 9 10 11 12

36 Αλγόριθμος Κύκλου Μέσου Σημείου Τα κύρια χαρακτηριστικά του αλγόριθμου μέσου σημείου σχεδίασης κύκλου είναι: Η συμμετρία των οκτώ σημείων ελαττώνει πολύ τον χρόνο σχεδίασης ενός κύκλου Κινούμενοι σε μονάδες (unit steps) κατά μήκος του άξονα x σε κάθε σημείο κατά μήκος της γραμμής του κύκλου χρειάζεται να διαλέξουμε μεταξύ δυο πιθανών y συντεταγμένων

37 Το ουσιαστικό που πρέπει να θυμόμαστε είναι ότι ένας αλγόριθμος σχεδίασης πρέπει να είναι αποτελεσματικός (γρήγορος) Για τις γραμμές έχουμε τον αλγόριθμο DDA και τον αλγόριθμο του Bresenham Για τους κύκλους έχουμε τον αλγόριθμο του μέσου σημείου.

38 Πολύγραμμα (Polyline) Πολύγραμμο είναι επίπεδο σχήμα που ορίζεται από συνεχόμενες ευθείες γραμμές. Το διπλανό πολύγραμμο σχηματίζεται από έξι σημεία Α 1 -Α 6 που σχηματίζουν πέντε ευθείες Ε 1 -Ε 5 E1 E2 E3 E4 E5

Πολύγωνα (Polygons) Πολύγωνο είναι ένα επίπεδο σχήμα που ορίζεται από ένα σύνολο τριών ή περισσότερων θέσεων συντεταγμένων που ονομάζονται κορυφές (vertex) και συνδέονται στην σειρά από ευθύγραμμα τμήματα που ονομάζονται ακμές (edges) ή πλευρές του πολυγώνου. Ένα πολύγωνο ορίζει μια κλειστή περιοχή στο επίπεδο

40 Λίστα Κορυφών Πολύγωνα (2) (Polygons) Λίστα Πλευρών γραμμή κορυφή Λίστα Επιφανειών πλευρές

41 Πολύγωνα (2) (Polygons) Πως όμως σχεδιάζουμε πολύγωνα; -- Τα πολύγωνα σχηματίζονται από γραμμές. -- Οι γραμμές σχεδιάζονται με έναν αλγόριθμο (DDA ή Bresenham)

42 Κατηγοριοποίηση Πολυγώνων Εσωτερική γωνία (interior angle) είναι μια γωνία εντός του συνόρου του πολυγώνου που σχηματίζεται από δύο προσκείμενες πλευρές. -- Εάν όλες οι εσωτερικές γωνίες ενός πολυγώνου μικρότερες από 180 ο, τότε το πολύγωνο είναι κυρτό (convex). -- Ένα πολύγωνο που δεν είναι κυρτό είναι κοίλο (concave) Οι αλγόριθμοι γραφικών είναι πιο περίπλοκοι για κοίλα πολύγωνα για αυτό είναι αποδοτικότερο να χωρίζουμε πριν την επεξεργασία ένα κοίλο πολύγωνο σε ένα σύνολο από κυρτά πολύγωνα.

43 Κοίλα Πολύγωνα Αναγνώριση κοίλων πολυγώνων: -- Μια εσωτερική γωνία πολυγώνου μεγαλύτερη από 180 ο -- Προέκταση κάποιων πλευρών τέμνει τις άλλες πλευρές -- Κάποιο ζεύγος εσωτερικών σημείων παράγει ευθύγραμμο τμήμα που τέμνει το σύνορο του πολυγώνου.

44 Διαίρεση Κοίλων Πολυγώνων Διαίρεση κοίλων πολυγώνων: -- Διανυσματική μέθοδο -- Περιστροφική μέθοδο -- Σε σύνολο τριγώνων Σχηματίζουμε τα διανύσματα των πλευρών (vector edges). Υπολογίζουμε το εξωτερικό γινόμενο διαδοχικών (ανά δυο) διανυσμάτων, αν στα αποτέλεσματα υπάρχει > 0 και < 0 τότε το πολύγωνο είναι κοίλο

45 Διαίρεση Κοίλων Πολυγώνων Διανυσματική μέθοδος - Παράδειγμα Πολύγωνο με έξι πλευρές στο επίπεδο xy και z=0 και διανύσματα πλευρών [ Ε 3 =(3,0,0) (2,1,0)=(3-2, 0-1,0) = (1,-1,0) ] Το εξωτερικό γινόμενο (cross product) E j x E k είναι ένα διάνυσμα κάθετο στο επίπεδο xy με τιμή E jx E ky - E kx E jy E 1 x E 2 =E 1x E 2y E 2x E 1y = (1*1 1*0)= 1 E 2 x E 3 =E 2x E 3y E 3x E 2y = (1*(-1) 1*1)= -2

46 Διαίρεση Κοίλων Πολυγώνων Διανυσματική μέθοδος - Παράδειγμα Καθώς μόνο το εξωτερικό γινόμενο E 2 x E 3 έχει z αρνητική τιμή, χωρίζουμε το πολύγωνο κατά μήκος της γραμμής του διανύσματος E 2. Η εξίσωση γραμμής για αυτήν την πλευρά έχει κλίση (slop) m=1 και y-τομή (y-intercept ή b) -1. Στη συνέχεια καθορίζουμε την τομή της γραμμής αυτής με τις άλλες άκρες του πολυγώνου για να το χωρίσουμε σε δύο κομμάτια. Δεν υπάρχει άλλο εξωτερικό γινόμενο με αρνητική τιμή, έτσι τα δυο νέα πολύγωνα είναι και τα δύο κυρτά.

47 Κανόνας μονό-ζυγό (even-odd rule algorithm) Πως μπορούμε να γνωρίζουμε αν ένα συγκεκριμένο σημείο σε ένα επίπεδο βρίσκεται στο εσωτερικό ή στο εξωτερικό μέρος ενός πολυγώνου ή είναι στο όριο ενός πολυγώνου; Ελέγχουμε πόσες φορές μια ακτίνα (ευθεία γραμμή) τέμνει τις ακμές του πολυγώνου, αρχίζοντας από ένα σημείο και προχωρώντας σε οποιαδήποτε σταθερή-ευθεία κατεύθυνση: -- Εάν ο αριθμός των διασταυρώσεων της ακτίνας (ευθείας) με τις ακμές του πολυγώνου είναι περιττός αριθμός τότε το συγκεκριμένο σημείο βρίσκεται μέσα στα όρια του πολυγώνου, εάν είναι ζυγός τότε είναι εκτός. [ΟΚ, όσο το σημείο δεν είναι πάνω στα όρια του πολυγώνου]

48 Πολύγωνα Τύποι πολυγώνων: -- Κυρτά -- Κοίλα -- Αυτοτέμνοντα (self-intercecting) -- Με τρύπες

49 Περιοχή Γεμίσματος (με χρώμα) (Fill area) Μια χρήσιμη δομή (εκτός από τα σημεία, τις γραμμές, και τις καμπύλες) για την περιγραφή μιας εικόνας, είναι μια περιοχή που είναι γεμισμένη (filled area) με κάποιο συμπαγές χρώμα. Χρησιμοποιούνται για περιγράψουν επιφάνειες στερεών αντικειμένων. Οι περιοχές γεμίσματος είναι συνήθως επίπεδες, κυρίως πολύγωνα. Οι βιβλιοθήκες γραφικών απαιτούν μια περιοχή γεμίσματος να ορίζεται ως ένα πολύγωνο.

50 Αλγόριθμος με γραμμές σάρωσης (Scan-Line Polygon Fill Algorithm) Η απλούστερη περιοχή για να γεμίσει (χρωματισθεί) είναι ένα πολύγωνο, επειδή κάθε σημείο τομής της γραμμή σάρωσης με τα όρια ενός πολύγωνου βρίσκεται-υπολογίζεται με την επίλυση δύο γραμμικών εξισώσεων, όπου η εξίσωση για την γραμμή σάρωσης είναι απλά y = σταθερά. Εσωτερικά pixels κατά μήκος της γραμμής σάρωσης που περνά μέσα από μια περιοχή γεμίσματος.

51 Αλγόριθμος με γραμμές σάρωσης (Scan-Line Polygon Fill Algorithm) Ο βασικός αλγόριθμος σάρωσης γραμμών είναι: -- Βρές τις τομές της γραμμής σάρωσης με όλες τις πλευρές του πολυγώνου -- Ταξινόμησε τις τομές αυξάνοντας την x συντεταγμένη -- Γέμισε όλα τα pixels μεταξύ δύο (ένα ζευγάρι) τομών που βρίσκονται μέσα στο πολύγωνο, κάνοντας χρήση του κανόνα μονού-ζυγού για να καθορίσεις εάν ένα σημείο είναι μέσα στην περιοχή. Το pixel μονό πλήθος τομών χρωματίζεται. -- Αν το σημείο τομής είναι κορυφή αλλάζει ο κανόνας μονό-ζυγό αλλάζει. περιττός περιττός ζυγός ζυγός

52 Αλγόριθμος με γραμμές σάρωσης Παράδειγμα Το γέμισμα εφαρμόζεται στα 5 pixels από x=2 έως x=6 και ζυγός ζυγός στα 4 pixels από x=12 έως x=15 περιττός περιττός ζυγός

53 Αλγόριθμος με γραμμές σάρωσης (Scan-Line Polygon Fill Algorithm) Ειδικές περιπτώσεις στο γέμισμα πολυγώνου με τον αλγόριθμο σάρωσης γραμμής : -- Όταν μια πλευρά του πολυγώνου είναι παράλληλη με την γραμμή σάρωσης. -- Όταν μια γραμμή σάρωσης περνά μέσα από μια κορυφή, κόβει δύο πλευρές του πολυγώνου σε εκείνο το σημείο

54 Scan-Line Polygon Fill Algorithm Παράδειγμα

55 Αλγόριθμος γεμίσματος συνόρων (Boundary-Fill Algorithm) Μια εναλλακτική προσέγγιση για την γέμισμα μιας περιοχής είναι η εξής: Να γίνει η αρχή από ένα σημείο μέσα στην περιοχή και να «χρωματισθεί» το εσωτερικό, προχωρώντας σημείο προς σημείο και φθάνοντας μέχρι τα όρια του πολυγώνου.

56 Αλγόριθμος γεμίσματος συνόρων (Boundary-Fill Algorithm) Υπάρχουν δύο μέθοδοι για την επεξεργασία γειτονικών pixels ενός σημείου: 1. Τέσσερα γειτονικά σημεία - Αυτές οι θέσεις των pixels είναι αριστερά, δεξιά, πάνω και κάτω από το τρέχον σημείο. - Οι περιοχές που γεμίζουν με αυτήν την μέθοδο ονομάζονται συνδεδεμένες κατά 4. Τρέχον σημείο (x,y) (x,y+1) (x-1,y) (x+1,y) (x,y-1)

57 Αλγόριθμος γεμίσματος συνόρων (Boundary-Fill Algorithm) void Four_Fill (int x, int y, int fill_col, int bound_col) { int curr_color; curr_color = get_color(x, y); if (curr_color!= bound_color && (curr_color!= fill_col) { set_pixel(x, y, fill_col); Four_Fill (x+1, y, fill_col, bound_col); Four_Fill (x-1, y, fill_col, bound_col); Four_Fill (x, y+1, fill_col, bound_col); Four_Fill (x, y-1, fill_col, bound_col); } }

58 Αλγόριθμος γεμίσματος συνόρων (Boundary-Fill Algorithm) 2. Οκτώ γειτονικά σημεία - Χρησιμοποιείται για πιο περίπλοκα σχήματα - Προσθέτονται επί πλέον 4 διαγώνια σημεία - Οι περιοχές που γεμίζουν με αυτήν την μέθοδο ονομάζονται συνδεδεμένες κατά 8. Τρέχον σημείο (x,y) (x-1,y+1) (x-1,y) (x-1,y-1) (x,y+1) (x,y-1) (x+1,y+1) (x+1,y) (x+1,y-1)

59 Αλγόριθμος γεμίσματος πλημμυρίδας (Flood-Fill Algorithm) Μερικές φορές θέλουμε να γεμίσουμε (ή να αλλάξουμε) χρώμα σε μια περιοχή που τα όρια της δεν καθορίζονται με μόνο ένα χρώμα. Μπορούμε να χρωματίσουμε περιοχές αντικαθιστώντας ένα καθορισμένο εσωτερικό χρώμα αντί να αναζητούμε ένα συγκεκριμένο χρώμα στα ορια (boundary color) του πολυγώνου.

60 Αλγόριθμος γεμίσματος πλημμυρίδας (Flood-Fill Algorithm) void FloodFill(int x,int y,int OldColor,int NewColor) { int Intensity=get_pixel(x,y); if(intensity==oldcolor) { set_pixel(x, y, NewColor); FloodFill(x+1, y, OldColor, NewColor); FloodFill(x-1, y, OldColor, NewColor); FloodFill(x, y+1, OldColor, NewColor); FloodFill(x, y-1, OldColor, NewColor); } }

61 Αλγόριθμος γεμίσματος πλημμυρίδας μ Αναδρομικός αλγόριθμος flood-fill με 4 κατευθύνσεις με 8 κατευθύνσεις

62 Τέλος