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

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

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

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

Αλγόριθμοι παράστασης βασικών σχημάτων σε πλεγματικές οθόνες

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

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

Διάλεξη #10. Διδάσκων: Φοίβος Μυλωνάς. Γραφικά με υπολογιστές. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο.

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

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

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

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

Ιόνιο Πανεπιστήμιο - Τμήμα Πληροφορικής

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης. Λογισμός 3 Ασκήσεις. Μιχάλης Μαριάς Τμήμα Α.Π.Θ.

Γενικά Μαθηματικά Ι. Ενότητα 17: Αριθμητική Ολοκλήρωση, Υπολογισμός Μήκους Καμπύλης Λουκάς Βλάχος Τμήμα Φυσικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Ιόνιο Πανεπιστήμιο - Τμήμα Πληροφορικής

Αλγόριθµοι Παράστασης Βασικών Σχηµάτων

Θεωρία Πιθανοτήτων & Στατιστική

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Μαθηματική Ανάλυση ΙI

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ. ΕΝΟΤΗΤΑ: Γραμμικές Συναρτήσεις Διάκρισης. ΔΙΔΑΣΚΟΝΤΕΣ: Βλάμος Π. Αυλωνίτης Μ. ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Γενικά Μαθηματικά ΙΙ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

Ηλεκτρονικοί Υπολογιστές I

Αυτοματοποιημένη χαρτογραφία

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Λογισμός 3. Ενότητα 18: Θεώρημα Πεπλεγμένων (Ειδική περίπτωση) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Κλασική Ηλεκτροδυναμική Ι

Γενικά Μαθηματικά Ι. Ενότητα 1: Συναρτήσεις και Γραφικές Παραστάσεις. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Γενικά Μαθηματικά Ι. Ενότητα 9: Κίνηση Σε Πολικές Συντεταγμένες. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ. ΕΝΟΤΗΤΑ: Διανύσματα στους Rn, Cn, διανύσματα στο χώρο (1) ΔΙΔΑΣΚΩΝ: Βλάμος Παναγιώτης ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Γενικά Μαθηματικά Ι. Ενότητα 19: Υπολογισμός Εμβαδού και Όγκου Από Περιστροφή (2 ο Μέρος) Λουκάς Βλάχος Τμήμα Φυσικής

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Μαθηματική Ανάλυση ΙI

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΔΙΔΑΣΚΩΝ: Δρ. Στυλιανός Τσίτσος

ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Λογισμός ΙΙ. Χρήστος Θ. Αναστασίου Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ανάκτηση Πληροφορίας

Αλγόριθµοι Παράστασης Βασικών Σχηµάτων

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

Ηλεκτρονικοί Υπολογιστές

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Μαθηματικά. Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Σύγxρονη Φυσική II. Κεντρικά Δυναμικά Διδάσκων : Επίκ. Καθ. Μ. Μπενής

Μαθηματικά Και Στατιστική Στη Βιολογία

ΦΑΙΝΟΜΕΝΑ ΜΕΤΑΦΟΡΑΣ ΙΙ ΜΕΤΑΦΟΡΑ ΘΕΡΜΟΤΗΤΑΣ ΚΑΙ ΜΑΖΑΣ

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολή if. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Λύσεις στο Επαναληπτικό Διαγώνισμα 2

Κλασική Ηλεκτροδυναμική Ι

Ιόνιο Πανεπιστήμιο - Τμήμα Πληροφορικής

Τηλεπισκόπηση - Φωτοερμηνεία

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ. ΕΝΟΤΗΤΑ: Άλγεβρα των Πινάκων (2) ΔΙΔΑΣΚΩΝ: Βλάμος Παναγιώτης ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Μαθηματική Ανάλυση Ι

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

Γενικά Μαθηματικά Ι. Ενότητα 5: Παράγωγος Πεπλεγμένης Συνάρτησης, Κατασκευή Διαφορικής Εξίσωσης. Λουκάς Βλάχος Τμήμα Φυσικής

Διδάσκων: Φοίβος Μυλωνάς

Μαθηματικά. Ενότητα 3: Ολοκληρωτικός Λογισμός Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

3 η ΕΝΟΤΗΤΑ ΜΗ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΕΝΟΣ ΚΡΙΤΗΡΙΟΥ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ. Γενικά Μαθηματικά Ι. Ενότητα 6: Ακρότατα Συνάρτησης. Λουκάς Βλάχος Τμήμα Φυσικής

Θεωρία Πιθανοτήτων & Στατιστική

Εφαρμογές Πληροφορικής στην Τοπογραφία 4η Ενότητα - Εντολές σχεδίασης παραλληλόγραμμου, κύκλου και τόξου

Υπολογιστικά & Διακριτά Μαθηματικά

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

Μαθηματική Ανάλυση ΙI

Εκμετάλλευση και Προστασία των Υπόγειων Υδατικών Πόρων

Λογισμός 3. Ενότητα 12:Οι κλασικοί μετασχηματισμοί και ο κανόνας της αλυσίδας. Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Ηλεκτρισμός & Μαγνητισμός

Ιστορία των Μαθηματικών

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ. ΕΝΟΤΗΤΑ: Διανυσματικοί Χώροι (1) ΔΙΔΑΣΚΩΝ: Βλάμος Παναγιώτης ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Κλασική Hλεκτροδυναμική

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Πιθανότητες. Συναρτήσεις πολλών μεταβλητών Διδάσκων: Επίκουρος Καθηγητής Κωνσταντίνος Μπλέκας

Γενικά Μαθηματικά Ι. Ενότητα 7: Σειρές Taylor, Maclaurin. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Αυτοματοποιημένη χαρτογραφία

Συστήματα Αυτομάτου Ελέγχου II

Λογισμός 3. Ενότητα 17: Απόδειξη Θεωρήματος Αντιστροφής. Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Transcript:

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

Άδεια χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα Ιονίου Πανεπιστημίου» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σχεδίαση Κύκλου - Γενικά Υπάρχουν πολλοί αλγόριθμοι για κωνικές τομές. Κύριο μέλημα είναι η αποφυγή τριγωνομετρικών πράξεων. Εκμετάλλευση της κεντρικής συμμετρίας. Υπολογίζεται η καμπύλη για ένα μόνο οκταμόριο (π.χ. το ο ) και τα υπόλοιπα pixels χρωματίζονται συμμετρικά. 4

Σχεδίαση Κύκλου - Γενικά Εξίσωση κύκλου: όπου r είναι η ακτίνα του κύκλου. Ένας απλός αλγόριθμος σχεδίασης κύκλου θα μπορούσε να προκύψει λύνοντας την εξίσωση ως προς y (για κάθε τιμή του x, υπολογίζεται η αντίστοιχη τιμή του y). 5

Σχεδίαση Κύκλου - Γενικά Για ακτίνα κύκλου r =0 έχουμε: 6

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

Σχεδίαση Κύκλου Πολικές Συντεταγμένες Εξίσωση κύκλου: X=r*cosθ+x c Y=r*sinθ+y c όπου: 0º θ 360º ή 0 θ 6.8 (*π) Προβλήματα: Να πάρουμε απόφαση για την αύξηση σε θ! Υπολογισμοί cos, sin 8

Σχεδίαση Κύκλου - Συμμετρία Εκμετάλλευση 8-πλης συμμετρίας Αρκεί ο υπολογισμός σε 1 οκταμόριο (π.χ. ο ) Τα υπόλοιπα οκταμόρια υπολογίζονται με βάση τη συμμετρία 9

Σχεδίαση Κύκλου - Συμμετρία Σχεδιασμός των 8 συμμετρικών σημείων του κύκλου, άπαξ και προσδιοριστεί 1 σημείο (x,y) του ου οκταμορίου: circle_symmetry(int x, y, colour c) { setpixel(x, y, c); setpixel(y, x, c); setpixel(y, -x, c); setpixel(x, -y, c); setpixel(-x, -y, c); setpixel(-y, -x, c); setpixel(-y, x, c); setpixel(-x, y, c); } 10

Αλγόριθμος Bresenham για Κύκλο Ο Jack Bresenham εργάστηκε για 7 χρόνια στην IBM πριν γίνει πανεπιστημιακός, όπου και ανέπτυξε τους διάσημους πλέον αλγόριθμους του στις αρχές του 1960. 11

Αλγόριθμος Bresenham για Κύκλο ( ο ) r: η ακτίνα του κύκλου Το κέντρο του είναι το pixel (0,0) Ο αλγόριθμος ξεκινάει από το pixel (0,r) και σχεδιάζει μόλις κάτω από το ιδεατό τόξο του κύκλου 1

Αλγόριθμος Bresenham για Κύκλο Σχεδιάζει ένα κυκλικό τόξο στο ο οκταμόριο Η μεταβλητή x αυξάνεται σε κάθε βήμα. Όταν η τιμή της συνάρτησης του κύκλου γίνει θετική (το pixel βρίσκεται εκτός κύκλου), το y μειώνεται 13

Αλγόριθμος Bresenham για Κύκλο πλησιέστερο σημείο στην ιδεατή πορεία του κύκλου Έστω ότι βρισκόμαστε στο σημείο (x i,y i ). Το επόμενο θα είναι (x i +1,y i ) ή (x i +1,y i -1) 14

Αλγόριθμος Bresenham για Κύκλο Η απόφαση στηρίζεται στην απόσταση της αναμενόμενης τιμής του y επί της τροχιάς του κύκλου από τα δυο υποψήφια pixels. Προσπαθούμε να υπολογίσουμε την επόμενη θέση με μοναδικά στοιχεία την τρέχουσα θέση και την ακτίνα του κύκλου. 15

Αλγόριθμος Bresenham για Κύκλο 6 5 4 3 1 3 4 16

Αλγόριθμος Bresenham για Κύκλο M 6 5 4 3 1 3 4 17

Αλγόριθμος Bresenham για Κύκλο M 6 5 4 3 1 3 4 18

Αλγόριθμος Μεταβλητή απόφασης: όπου: e i = d 1 d d 1 = y i -y και d = y - (y i - 1) Αν e i 0, επιλέγεται το σημείο (x i +1, y i -1) αλλιώς επιλέγεται το σημείο (x i +1, y i ) 19

Υπολογισμός του e i Επειδή για x=x i +1 ισχύει ότι: y =r -(x i +1), έχουμε: e i = d 1 d = y i - y y + (y i -1) Άρα: e i = y i - r + (x i +1) + (y i -1) - r + (x i +1) e i = (x i +1) + y i + (y i -1) r (Α) 0

Αναδρομικός υπολογισμός e i+1 To σφάλμα για την επόμενη θέση e i+1 υπολογίζεται επαναληπτικά ως εξής: e i+1 = (x i+1 +1) + y i+1 + (y i+1-1) - r = (x i +) + y i+1 + (y i+1-1) - r {x i+1 = x i + 1} = x i + 8x i + 8+ y i+1 + y i+1 - y i+1 +1 -r = (x i +1) + 4x i + 6+ y i+1 - y i+1 + 1- r { από εξ. (Α) } = e i - y i + y i -1 + r + 4x i + 6 + y i+1 - y i+1 + 1 - r = e i + 4x i + 6 + (y i+1 - y i ) - (y i+1 - y i ) το μόνο άγνωστο! 1

Τελικός τύπος υπολογισμού Το y i+1 εξαρτάται από το e i, οπότε: Τέχνασμα υπολογισμού e i+1 : Αν e i < 0 y i+1 = y i e i+1 = e i + 4(x i +1) + Αν e i 0 y i+1 = y i 1, e i+1 = e i + 4x i + 6 + ((y i -1) - y i ) (y i -1- y i ) e i+1 = e i + 4(x i +1) + 4(y i 1)

Παρατηρήσεις Θεωρώντας σαν πρώτο σημείο του ου οκταμορίου το σημείο (x,y)=(0,r): Από (Α): e i = (x i +1) + y i + (y i -1) r αρχική τιμή μεταβλ. απόφασης: e 1 = + r + (r 1) r = 3 r Για μεταφορά του κύκλου από το (0,0) στο (x 0,y 0 ) αρκεί να αντικατασταθεί η κλήση circle_symmetry(x,y,colour); από: circle_symmetry(x-x 0,y-y 0,colour); 3

Υλοποίηση circle(int r, colour c) { int x, y, e; x = 0; y = r; e = 3 *r; // αρχική τιμή e while (x <= y){ circle_ symmetry(x, y, colour); x++; if (e >= 0) { y--; e = e+4*(x-y)+10 } e = e+4*x+6; } } 4

Παράδειγμα 1 r = 10 e 0 = 3 r = -17 Αρχικό σημείο (x 0, y 0 ) = (0, 10) 5

Παράδειγμα 1 r = 10 e 0 = 3 r = -17 Αρχικό σημείο (x 0, y 0 ) = (0, 10) e 1 = -17+ 4*0 + 6 = -11 e = -11+ 4*1 + 6 = -1 e 3 = -1+ 4* + 6 = 13 Αν e i < 0 e 4 = 13 + 4(3 10) + 10 = -5 y i+1 = y i e i+1 = e i +4(x i +1)+ Αν e i 0 y i+1 = y i 1, e i+1 = e i +4(x i +1)+ 4(y i 1) 6

Παράδειγμα 1 r = 10 e 0 = 3 r = -17 Αρχικό σημείο (x 0, y 0 ) = (0, 10) 10 i e i x i, y i 0-17 (0, 10) 1-11 (1, 10) -1 (, 10) 3 13 (3, 10) 4-5 (4, 9) 5 15 (5, 9) 6 9 (6, 8) 7 (7,7) 9 8 7 6 5 4 3 1 0 0 1 3 4 5 6 7 8 9 10 7

Παράδειγμα r = 6 e 0 = 3 r = -9 Αρχικό σημείο (x 0, y 0 ) = (-, 4) Για υπολογισμούς: (x 0, y 0 ) = (0, r) = (0, 6) Αν e i < 0 y i+1 = y i e i+1 = e i +4(x i +1)+ Αν e i 0 y i+1 = y i 1, e i+1 = e i +4(x i +1)+ 4(y i 1) 8

Παράδειγμα r = 6 e 0 = 3 r = -9 Αρχικό σημείο (x 0, y 0 ) = (-, 4) Για υπολογισμούς: (x 0, y 0 ) = (0, r) = (0, 6) Αν e i < 0 y i+1 = y i e i+1 = e i +4(x i +1)+ e 1 = -9+ 4*0 + 6 = -3 e = -3+ 4*1 + 6 = 7 e 3 = 7 + 4( 6) + 10 = 1 e 4 = 1 + 4(3 5) + 10 = 3 Αν e i 0 y i+1 = y i 1, e i+1 = e i +4(x i +1)+ 4(y i 1) 9

Παράδειγμα r = 6 e 0 = 3 r = -9 Αρχικό σημείο (x 0, y 0 ) = (-, 4) Για υπολογισμούς: (x 0, y 0 ) = (0, r) = (0, 6) i e i x i, y i 0-9 (-, 10) 1-3 (-1, 10) 7 (0, 10) 3 1 (1, 9) 4 3 (, 8) 5 (3, 7) 10 9 8 7 6 5 4 3 1 0-1 6 7 - - -1 0 1 3 4 30

Αλγόριθμος Σχεδίασης Κύκλου Αλγόριθμος Σχεδίασης Έλλειψης 31

Σχεδίαση Έλλειψης - Γενικά Απλοϊκά, μια έλλειψη είναι ένας επιμηκυμένος κύκλος! Επομένως, οι ελλειπτικές καμπύλες μπορούν να παραχθούν με την τροποποίηση των διαδικασιών για το σχεδιασμό κύκλων έλλειψης κατά μήκος του μικρού και του μεγάλου άξονα. 3

Σχεδίαση Έλλειψης - Γενικά Έλλειψη Ένας τροποποιημένος κύκλος του οποίου η ακτίνα λαμβάνει τιμές μεταξύ μιας μέγιστης τιμής σε μία κατεύθυνση (μεγάλος άξονας) και μιας minimum τιμής στην perpendicular κατεύθυνση (μικρός άξονας). F 1 d 1 P=(x,y) F d Το άθροισμα των δύο αποστάσεων d 1 και d, μεταξύ των σταθερών σημείων F 1 και F (που ονομάζονται foci της έλλεψης) προς οποιοδήποτε σημείο P επάνω στην έλλειψη, είναι σταθερό: d 1 + d = constant 33

Σχεδίαση Έλλειψης - Γενικά Αν εκφράσουμε τις αποστάσεις d 1 και d σε focal συντεταγμένες θα έχουμε: F 1 = (x 1, x ) και F = (x, y ): ( x x ) + ( y y ) + ( x x ) + ( y y ) = constant 1 1 r y r x Καρτεσιανές συντεταγμένες: x x c y y c + = 1 r x r y Πολικές συντεταγμένες: x= x + r cosθ sinθ c y c x y = y + r 34

Σχεδίαση Έλλειψης - Γενικά Υπάρχουν πολλοί αλγόριθμοι για κωνικές τομές. Κύριο μέλημα είναι η αποφυγή τριγωνομετρικών πράξεων. Αλγόριθμος Αγάθου-Θεοχάρη-Μπεμ (1998) Γρήγορος Μικρή απαίτηση ακρίβειας ακεραίων Σωστή μετάβαση περιοχής Επιδέχεται αντι-ταύτισης 35

Σχεδίαση Έλλειψης - Γενικά Εξίσωση έλλειψης με κέντρο (0,0): x /a + y /b = 1 4-πλή συμμετρία: δημιουργούμε μόνο περιοχές 1, χωρίζονται από το σημείο όπου dy/dx= 1 Κλίση: dy/dx = -b x/a y 36

Σχεδίαση Έλλειψης - Γενικά Επεξεργαζόμαστε το 1 ο τεταρτημόριο παίρνοντας μοναδιαία βήματα κατά την διεύθυνση των x, όταν η κλίση της καμπύλης είναι μεγαλύτερη του -1, ενώ παίρνουμε μοναδιαία βήματα κατά τη διεύθυνση των y, όταν η κλίση της καμπύλης είναι μικρότερη του -1. Κλίση: dy/dx = -1 => b x = a y 37

Σχεδίαση Έλλειψης - Γενικά Θα βρούμε: 1. Επαναληπτικές εκφράσεις για τον υπολογισμό των μεταβλητών απόφασης στις περιοχές d Ι,i και d Ι,i+1 / d ΙΙ,i και d ΙΙ,i+1. Αρχικές τιμές των μεταβλητών απόφασης d Ι,0 / d ΙΙ,0 3. Μία συνθήκη που να σηματοδοτεί την μετάβαση από την περιοχή Ι στην περιοχή ΙΙ. 38

Μεταβλητή απόφασης περιοχής Ι Έστω αρχικό σημείο: (0,b) της περιοχής Ι Περιοχή Ι: άξονας κύριας κίνησης ο X Εκκίνηση από το (0, b) Τέλος περιοχής όταν dy/dx = -1 39

Μεταβλητή απόφασης περιοχής Ι Ορίζουμε: d 1 = y i y d = y (y i 1) και θέτουμε: d = d 1 d = (y i y ) (y (y i 1) ) Η σύγκριση του d με το 0 καθορίζει την επιλογή B ή D 40

Μεταβλητή απόφασης περιοχής Ι Κάνουμε πράξεις & θέτουμε: ε = y i y, οπότε: d = d 1 d = (y i y ) (y (y i 1) ) = y i y y + (y i 1) = y i y y + y i y i + 1 = y i y y i + 1 = 4y i y i y + 4y i y 4y i y y i + 1 = y i y + 4y i y + 4y i 4y i y y i + 1 = (y i + y y i y) + 4y i (y i y) y i + 1 = (y i y) + 4y i (y i y) y i + 1 = ε + 4y i ε y i + 1 = d(ε) 41

Μεταβλητή απόφασης περιοχής Ι Θέτουμε: ε = y i y, οπότε: d(ε) = -ε + 4y i ε + 1 y i Η τιμή του d(ε) στη θέση ε = ½: d(1/) = ½ τιμή απόφασης: Αν d 1/ επιλέγουμε pixel B, αλλιώς pixel D. Τελικά: συνάρτηση απόφασης d(ε) 4

Μεταβλητή απόφασης περιοχής Ι νέα d(ε) Διευκολύνουμε περαιτέρω τον αυξητικό υπολογισμό παίρνοντας d = a (d 1 -d ): Νέα συνάρτηση απόφασης d(ε) d(ε) = -a ε + 4a y i ε + a a y i, οπότε: (Α) Αν d a / επιλέγουμε pixel B, αλλιώς pixel D (Β) 43

Υπολογισμός μεταβλ. απόφασης στο βήμα i Αυξητικός υπολογισμός x /a + y /b = 1 d Ι,i = a (d 1 -d ) = a (y i + (y i 1) y ) = a y i + a (y i 1) a y (από ορισμό d 1, d ) Όμως από την εξίσωση της έλλειψης για το σημείο (x i +1,y) έχουμε: a y = a b b (x i +1), οπότε: d Ι,i = -a b + b (x i +1) + a y i + a (y i 1) (Γ) 44

Υπολογισμός μεταβλ. απόφασης στο βήμα i+1 Στη συνέχεια ορίζουμε το d Ι,i+1 ως προς το d Ι,i : d Ι,i+1 = -a b + b (x i+1 +1) + a y i+1 + a (y i+1 1) = -a b + b ((x i +1)+1) + a y i+1 + a (y i+1 1) = -a b + b (x i +1) + b + 4b (x i +1) + a y i+1 + a (y i+1 1) Από (Γ): -a b + b (x i +1) = d Ι,i a y i a (y i 1) Άρα: d Ι,i+1 = d Ι,i + a y i+1 + a (y i+1 1) a y i a (y i 1) + b + 4b (x i +1) 45

Σχεδίαση Έλλειψης d Ι,i+1 = d Ι,i + a y i+1 + a (y i+1 1) a y i a (y i 1) + b + 4b (x i +1) Αν d Ι,i > a /, τότε y i+1 = y i 1 από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) 4a (y i 1) Αν d Ι,i a /, τότε y i+1 = y i από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) 46

Αρχική τιμή περιοχή Ι Εύρεση αρχικής τιμής: d Ι,0 βρίσκεται αντικαθιστώντας τις συντεταγμένες του 1 ου pixel της περιοχής Ι (0,b) για τα (x i,y i ) στην εξίσωση (Γ): d Ι,0 = -a b + b (0+1) + a b + a (b 1) = -a b + b + a b + a (b b + 1) = b + a (1-b) 47

Συνθήκη μετάβασης Κριτήριο αλλαγής περιοχής Στηρίζεται στην τιμή της συνάρτησης d για το σημείο (x i +1,y i 3/) Αν πραγματική έλλειψη περνάει κάτω από αυτό αλλαγή περιοχής Θέτοντας ε = 3/ στην (Α): d(3/) = -a (3/) + 4a y i (3/) + a a y i = 4a (y i 1) + a / Αν d 4a (y i 1) + a /, τότε παραμένουμε στην περιοχή Ι, διαφορετικά μεταβαίνουμε στην περιοχή ΙΙ. 48

Μεταβλητή απόφασης περιοχής ΙΙ Παρομοίως βρίσκουμε τη μεταβλητή απόφασης της περιοχής ΙΙ: d ΙΙ,i Περιοχή ΙΙ: άξονας κύριας κίνησης ο Υ Ορίζουμε: d 1 =(x i +1)-x, d =x -x i και θέτουμε: d=d 1 d Με επιλογή του pixel Α στη γραμμή i, η d=b (d 1 -d ) καθορίζει την επιλογή στην επόμενη γραμμή μεταξύ των C και D: Αν d <= b /, τότε επιλέγουμε το pixel D Αν d > b /, τότε επιλέγουμε το pixel C 49

Μεταβλητή απόφασης περιοχής ΙΙ Αν d ΙΙ,i > b /, τότε x i+1 = x i, οπότε: d ΙI,i+1 = d ΙI,i + Αν d ΙI,i b /, τότε x i+1 = x i +1, οπότε: d ΙI,i+1 = d ΙI,i + + Η αρχική τιμή: d ΙI,0 βρίσκεται αντικαθιστώντας τις συντεταγμένες του 1ου pixel της περιοχής IΙ = τελευταίο pixel της περιοχής Ι. 50

Υλοποίηση 1/3 Ellipse (a,b,colour) int a,b,colour; { int a_sqr,b_sqr,a,b,a4,b4; int x_slope,y_slope,d,mida,midb,x,y; x=0; y=b; a_sqr=a*a; b_sqr=b*b; a = a_sqr + a_sqr; b = b_sqr + b_sqr; a4 = a+a; b4 = b+b; x_slope = b4*(x+1); /* x_slope==(4*b^)*(x+1) πάντα */ y_slope = a4*(y-1); /* y_slope==(4*a^)*(y-1) πάντα */ 51

Υλοποίηση /3 mida=a_sqr>>1; midb=b_sqr>>1; d=b-a_sqr-(y_slope>>1)-mida; /* αφαιρούμε a^/ για βελτιστοποίηση */ /* περιοχή Ι */ while (d<=y_slope) {setpixel(x,y,colour); if (d>0) {d=d-y_slope; y--; y_slope=y_slope-a4;} d=d+b+x_slope; x++; x_slope=x_slope+b4;} 5

Υλοποίηση 3/3 /*Αλλαγή περιοχής*/ d=d-(x_slope+y_slope)>>1+(b_sqra_sqr)+(mida-midb); /* περιοχή ΙΙ */ while (y>=0) {setpixel (x,y,colour); if (d<=0) { d=d+x_slope; x++; x_slope=x_slope+b4;} d=d+a-y_slope; y--; y_slope=y_slope-a4;} } 53

Παράδειγμα Έστω έλλειψη με κέντρο την αρχή των αξόνων (0,0) και τις παραμέτρους: a=8, b=6 Τότε, έχουμε: dy/dx = -1 = -b x/a y => b =7, a =18, a /=3 => αρχικό σημείο (x0,y0)=(0,b)=(0,6) 54

Παράδειγμα Για την περιοχή Ι, το αρχικό σημείο της έλλειψης θα είναι το (x 0, y 0 ) = (0, 6) και η αρχική τιμή της παραμέτρου απόφασης: d Ι,0 = b + a (1-b) = *36+64-*6*64 = -63 55

Παράδειγμα Αν d Ι,i > a /=3, τότε y i+1 = y i 1 από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) 4a (y i 1) = d Ι,i + 7 + 144(x i +1) 56(y i 1) Αν d Ι,i a /=3, τότε y i+1 = y i από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) = d Ι,i + 7 + 144(x i +1) i d I,i (x i+1, y i+1 ) d I,i+1 0-63 (1, 6) -416 1-416 (, 6) -56-56 (3, 6) 448 3 448 (4, 5) -184 4-184 (5, 5) 607 5 607 (6, 4) 519 6 519 (7, 3) 56

Παράδειγμα Σε αυτό το σημείο φεύγουμε από την περιοχή Ι, γιατί: b x > a y, αφού: (*36*7 =) 504 > 384 (= *64*3) Για την περιοχή ΙΙ, το αρχικό σημείο θα είναι το: (x 0, y 0 ) = (7, 3) οπότε υπολογίζουμε την αρχική παράμετρο απόφασης d II,0 και στην συνέχεια επαναληπτικά τις τιμές των υπόλοιπων pixels της περιοχής ΙΙ. Τελικά: 57

Παράδειγμα i d IΙ,i (x i+1, y i+1 ) d IΙ,i+1 0 (8, ) 1... (8, 1) (8, 0) - Stop όταν y = 0 6 5 4 3 1 0 0 1 3 4 5 6 7 8 58

Σχεδίαση Έλλειψης - Γενικά Μέχρι τώρα η υπόθεση εργασίας μας ήταν ότι η έλλειψη είχε κέντρο το (0,0). Εν γένει, η εξίσωση έλλειψης με κέντρο (h,k) δίνεται από την εξίσωση: (x - h) + (y - k) = 1 a b 59

Σχεδίαση Έλλειψης - Γενικά όπου: (h, k) = το κέντρο της έλλειψης a = μήκος του κύριου άξονα b = μήκος του μικρού άξονα y (x - h) + (y - k) = 1 a b k b a κέντρο (h, k) h x 60

Σχεδίαση Έλλειψης - Γενικά Αν ακολουθήσουμε πιστά την πολυωνυμική μέθοδο, η τιμή του x θα αυξάνει κατά μία μονάδα από το h στο a. Για κάθε βήμα αύξησης του x, κάθε τιμή του y προκύπτει από την εξίσωση: y = b 1 (x h) + k a Αυτή η μέθοδος δεν είναι υπολογιστικά αποδοτική, διότι πρέπει να υπολογιστούν τα τετράγωνα του a και της ποσότητας (x h), καθώς και η ακριβή υπολογιστικά πράξη της διαίρεσης. 61

Σχεδίαση Έλλειψης - Γενικά Εναλλακτικά μπορούμε να θεωρήσουμε την τριγωνομετρική μέθοδο. Οι ακόλουθες εξισώσεις ορίζουν μία έλλειψη με τριγωνομετρικό τρόπο: x = a cos(θ) + h και y = b sin(θ) + k όπου: (x, y) = οι τρέχουσες συντεταγμένες a = το μήκος του κύριου άξονα b = το μήκος του μικρού άξονα θ = τρέχουσα γωνία 6

Σχεδίαση Έλλειψης - Γενικά Η τιμή της θ ποικίλλει μεταξύ 0 και π/ radians. Τα υπόλοιπα σημεία βρίσκονται μέσω συμμετρίας. y (acos(θ)+h, bsin(θ)+k) k b θ a h x 63

Σχεδίαση Έλλειψης - Γενικά Ο αλγόριθμος που μάθαμε εφαρμόζεται μόνο στην ειδική περίπτωση που: η έλλειψη είναι κεντραρισμένη στο (0,0) και ο μεγάλος και ο μικρός άξονάς της είναι παράλληλοι στους άξονες του συστήματος συντεταγμένων. 64

Ερωτήσεις - Απορίες 65