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

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

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

Τι είναι Αποκοπή (clip)?

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

Γραφικά με Η/Υ Αποκοπή

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

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

Γραφικά με Η/Υ Αποκοπή

Αποκοπή 4.1. Εργα: : & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ - ΥΠΕΠΘ) Τµήµα Πληροφορικής 1 2 (SCS) Θέση παρατηρητή. Θέσεις αντικειµένων και φωτεινών πηγών

Γραφικά Υπολογιστών & Εικονική Πραγματικότητα. Μετασχηματισμός απεικόνισης & Αλγόριθμοι αποκοπής

Στο Κεφάλαιο 5 µελετώντας την προβολή του τρισδιάστατου χώρου στο επίπεδο της κάµερας εξετάστηκε

Ένας απλός και γρήγορος αλγόριθμος για την αποκοπή γραμμών στο Scratch

ΚΕΦΑΛΑΙΟ 5: ΑΠΕΙΚΟΝΙΣΗ ΚΑΙ ΑΠΟΚΟΠΗ

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

Αποκοπή ευθυγράμμων τμημάτων

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

ΣΧΕΔΙΟ ΣΤΟΝ Η/Υ. Ενότητα 4: Εντολή σχεδίασης Arc Εντολές επεξεργασίας Copy, Explode. Παπαδόπουλος Χρήστος Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων

Εισαγωγή στους Αλγορίθμους

Διαλέξεις #13-#14 Εισαγωγικά στοιχεία Προοπτική, Παράλληλη, Πλάγια Υπολογισμός Παράλληλης Προβολής Υπολογισμός Προοπτικής Προβολής Παραδείγματα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Τεχνικό Σχέδιο

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

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

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

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

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

Τεχνολογία Ψυχαγωγικού Λογισμικού και Εικονικοί Κόσμοι Ενότητα 4η - 3Δ γραφικά

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

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

ΣΧΕΔΙΟ ΣΤΟΝ Η/Υ. Ενότητα 2: Εντολές σχεδίασης Rectangle, Circle, εντολές επεξεργασίας Offset, Trim, Erase.

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών

Φροντιστηριακές Ασκήσεις Απεικόνισης - Αποκοπής

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

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Αλγόριθμοι Περικοπής και Απομάκρυνσης Κρυμμένων Επιφανειών

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

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

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΓΩΓΗΣ - ΡΟΜΠΟΤΙΚΗ

Τεχνικό Σχέδιο. Ενότητα 2: Μηχανολογικό Σχέδιο - Σχεδίαση όψεων

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

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

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

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Ειδικά Θέματα Δημογραφίας: Χωρικές Διαστάσεις Δημογραφικών Δεδομένων

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

ΣΧΕΔΙΟ ΣΤΟΝ Η/Υ. Ενότητα 5: Εντολή Array. Παπαδόπουλος Χρήστος Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων

Τεχνικό Τοπογραφικό Σχέδιο

Λογική Δημήτρης Πλεξουσάκης Ασκήσεις στον Κατηγορηματικό Λογισμό Τμήμα Επιστήμης Υπολογιστών

Κλασσική παρατήρηση & παρατήρηση με υπολογιστή

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

ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ. Λογισμός 4. Ενότητα 1: Εισαγωγή. Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών

Εισαγωγή στους Αλγορίθμους

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

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

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

Πρόβλημα συντομότερης διαδρομής - Shortest path problem. Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ

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

Πληροφορική ΙΙ Θεματική Ενότητα 5

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Τεχνικό Σχέδιο

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Νεκτάριος Κοζύρης ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ

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

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

Γραφικά Ι. Ενότητα 4: Προβολές και Μετασχηματισμοί Παρατήρησης. Θεοχάρης Θεοχάρης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Τεχνικό Σχέδιο

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 4 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

Βέλτιστος Έλεγχος Συστημάτων

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

Εισαγωγή στους Αλγορίθμους

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

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

ΜΑΘΗΜΑ: ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ

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

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

Μέθοδοι Βελτιστοποίησης

ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ. ΕΝΟΤΗΤΑ: Αναγωγή _ Εξαγωγή & Έλεγχος. ΔΙΔΑΣΚΟΝΤΕΣ: Βλάμος Π. Αυλωνίτης Μ. ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΤΙΣ ΚΑΤΑΣΚΕΥΕΣ. 11o Mάθημα: Εισαγωγή στο ANSYS workbench

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Μηχανολογικό Σχέδιο Ι

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

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

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

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

Γραφικά Υπολογιστών: Αποκοπή στις 3D Διαστάσεις

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

Ακτομηχανική και λιμενικά έργα

Τεχνικό Σχέδιο - CAD

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Transcript:

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο Γραφικά με υπολογιστές Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #08 Αποκοπή (εισαγωγή) Σημειακή Αποκοπή Αποκοπή Ευθύγραμμων Τμημάτων (line clipping) Αλγόριθμος Μέσου Αλγόριθμος Cohen-Sutherland (2D) Φοίβος Μυλωνάς Γραφικά με υπολογιστές 1

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

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

Εισαγωγή Το οπτικό μας πεδίο είναι περιορισμένο ενώ παράλληλα υπάρχει παρεμπόδιση μεταξύ αντικειμένων βλέπουμε ένα πολύ μικρό κομμάτι των αντικειμένων που αποτελούν τον κόσμο! Οι αλγόριθμοι αποκοπής αφαιρούν αντικείμενα που δεν σχετίζονται με τη δημιουργία της εικόνας συγκεκριμένου καρέ, επειδή: Βρίσκονται εκτός του οπτικού πεδίου (αποκοπή στο οπτικό πεδίο) Παρεμποδίζονται από άλλα αντικείμενα (αποκοπή παρεμποδιζομένων) Παρεμποδίζονται από έμπροσθεν όψεις του ίδιου αντικειμένου (περικοπή πίσω όψεων) 4

Graphics Output Pipeline 2D εικόνα 5

Εισαγωγή H 3D αποκοπή γίνεται για 2 βασικούς λόγους: αποφυγή της λανθασμένης εμφάνισης αντικειμένων που βρίσκονται πίσω από τον παρατηρητή μείωση του όγκου των δεδομένων προς το στάδιο της απεικόνισης Αποκοπή: Ενός αντικειμένου (ευθύγραμμου τμήματος, πολύγωνου) ως προς συγκεκριμένο αντικείμενο αποκοπής (ορθογώνιο, πυραμίδα, κύβο). Το αντικείμενο αποκοπής ορίζει το τμήμα του χώρου που ενδιαφέρει τον παρατηρητή αναφορικά με τις επιφάνειες που μπορεί αυτός να δει. Αποκοπή στο οπτικό πεδίο: Αφαιρεί τα στοιχειώδη αντικείμενα εκτός του πεδίου παρατήρησης Υλοποιείται με 3D αλγόριθμους αποκοπής 6

Εισαγωγή Αποκοπή πίσω όψεων: Αφαιρεί τα στοιχειώδη σχήματα που αποκρύπτονται από μπροστινά στοιχειώδη σχήματα του ίδιου αντικειμένου Χρησιμοποιεί γι αυτό τα κανονικά διανύσματα Αποκοπή παρεμποδιζομένων: Καθορισμός των ορατών αντικειμένων σε κάθε τμήμα της εικόνας Επιλύεται με τον υπολογισμό του πρώτου αντικειμένου που τέμνεται από κάθε ακτίνα προερχόμενη από το σημείο παρατήρησης Για σωστή δημιουργία εικόνας πρέπει να λυθεί το πρόβλημα της παρεμπόδισης 7

Εισαγωγή 1 ο βήμα: εφαρμογή σε 2 διαστάσεις αργότερα γενίκευση των αλγορίθμων σε 3D χρήση σε 2D πακέτα, αντιτάυτιση, παράλληλη επεξεργασία, κ.α. αντικείμενο αποκοπής: ορθογώνιο παραλληλόγραμμο «παράθυρο αποκοπής» «περιοχή σχεδίασης»... 8

Εισαγωγή before clipping after clipping 9

Σημειακή Αποκοπή Εξετάζουμε αν το σημείο P(x,y) βρίσκεται εντός ή εκτός του παραθύρου. Ορισμός παραθύρου: Α(x min,y min ) C(x max,y max ) Σε κάθε άλλη περίπτωση, το P(x,y) είναι εκτός και αποκόπτεται! Εντός, αν: x min x x max και y min y y max. 10

Σημειακή Αποκοπή Τετριμμένη: Έλεγχος αν το σημείο (x,y) είναι εντός του αντικειμένου αποκοπής. Αν το αντικείμενο αποκοπής είναι ορθογώνιο παραλληλόγραμμο: εκμετάλλευση των διαγώνιων κορυφών: (x min,y min ), (x max,y max ) 11

Αποκοπή Ευθ. Τμημάτων - Line clipping Ευθύγραμμο τμήμα που ορίζεται από 2 σημεία: P 1 (x 1,y 1 ) και P 2 (x 2,y 2 ). Σημείο P(x,y) του επιπέδου. P(x,y) P 2 (x 2,y 2 ) Περιοχή σχεδίασης P 1 (x 1,y 1 ) 12

Line Clipping Τι συμβαίνει όταν το ένα ή και τα δύο άκρα ενός γραμμικού τμήματος δεν είναι εντός της καθορισμένης περιοχής σχεδίασης? Περιοχή σχεδίασης 13

Line Clipping Στρατηγικές αποκοπής (clipping): a) Έλεγξε (επαναληπτικά) αν κάθε σημείο του ευθύγραμμου τμήματος είναι εντός Δουλεύει, αλλά...αργά! if (x x min and x x max and y y min and y y max ) drawpoint(x,y,c); b) Βρες τομή της γραμμής με το όριο/σύνορο Πιο αποδοτικό. Clip line to intersection 14

Line Clipping Θεωρούμε την αναπαράσταση: x = x1 + u (x 2 x 1 ) y = y 1 + u ( y 2 y1), 0 u 1 Αν η τιμή του u για μια τομή με κάποιο όριο (ακμή) του ορθογωνίου είναι εκτός του [0,1], τότε το ευθύγραμμο τμήμα δεν τέμνει το όριο. Αν η τιμή του u είναι εντός του [0,1], τότε το ευθύγραμμο τμήμα τέμνει το όριο αυτό. 15

Line Clipping - Παράδειγμα Βρίσκουμε το u αντικαθιστώντας: x = x max στο x = x 1 + u (x 2 x 1 ) 5 = 4 + u (7 4) u = 1/3 Η τιμή του u είναι εντός του [0,1], οπότε το ευθύγραμμο τμήμα τέμνει το όριο x = x max. Βρίσκουμε το y αντικαθιστώντας το u στην: y=y 1 +u(y 2 y 1 ) y = 2 + 1/3 (3 2) = 2.33 Άρα το σημείο τομής στο x max είναι το: (5, 2.33) 16

Line Clipping: Πιθανές περιπτώσεις 1. Και τα δύο τελικά σημεία βρίσκονται εντός της περιοχής (γραμμή AB) Δεν χρειάζεται clipping 2. 1 τελικό σημείο εντός, 1 εκτός (γραμμή CD) Αποκοπή στο σημείο τομής 3. Και τα δύο σημεία εκτός περιοχής: a. Καμία τομή (γραμμές EF, GH) b. Γραμμή τέμνει την περιοχή (γραμμή IJ) Αποκοπή γραμμής και στα δύο σημεία τομής F J I A C B E G H D 17

Αλγόριθμος Μέσου 18

Line Clipping: Αλγόριθμος Μέσου Χαρακτηριστικά: Διαδοχική διάσπαση ευθυγράμμου τμήματος στη μέση (ολίσθηση) Χρήση «φθηνών» ελέγχων εντός / εκτός Κωδικοποίηση 9 περιοχών του επιπέδου Τέλος, αν P 1 P 2 < pixel! 19

Αλγόριθμος Μέσου (midpoint subdivision) Σε κάθε σημείο P(x,y) του επιπέδου αντιστοιχούμε 2 παραμέτρους ΙΧ και ΙΥ με πιθανές τιμές: ΙΧ = -1, 0, +1 ΙΥ = -1, 0, +1 P 1 :ΙΧ1, ΙΥ1 P 2 :ΙΧ2, ΙΥ2 20

Αλγόριθμος Μέσου (midpoint subdivision) /* Θεωρώντας ότι έχουμε ορίσει τη δομή: */ typedef struct {float x, y} point; midpoint (P1, P2, xmin, xmax, ymin, ymax) point P1, P2; float xmin, xmax, ymin, ymax; { point M; /* Υπολογισμός ΙΧ1, ΙΥ1, ΙΧ2, ΙΥ2 */ if ((IX1==0)&&(IY1==0)&&(IX2==0)&&(IY2==0)) /* τότε το P1P2 είναι εντός του παραθύρου */ else if ((IX1==IX2)&&(IX1!=0)) ((IY1==IY2)&&(IY1!=0)) /* τότε τo P1P2 είναι εκτός του παραθύρου */ else { M.x = ( P1.x + P2.x) / 2; M.y = ( P1.y + P2.y) / 2; midpoint(p1, M, xmin, xmax, ymin, ymax); midpoint(m, P2, xmin, xmax, ymin, ymax); } } 21

Αλγόριθμος Cohen-Sutherland 22

Line Clipping: Αλγόριθμος Cohen-Sutherland Χαρακτηριστικά: «Φθηνός» έλεγχος για να αποφανθεί αν το τμήμα είναι εξ ολοκλήρου εντός ή εκτός του παραθύρου. αποφυγή δαπανηρού υπολογισμού τομής! Σύγκριση συντεταγμένων ευθύγραμμου τμήματος με x min, x max, y min, y max παραθύρου Κωδικοποίηση 9 περιοχών του επιπέδου 23

Line Clipping: Αλγόριθμος Cohen-Sutherland Αντιστοίχηση κωδικών σε 9 περιοχές του επιπέδου. Αρχικά «φθηνός» έλεγχος για τις απλές περιπτώσεις. π.χ. EF έξω, ΑΒ μέσα. Για τα υπόλοιπα ευθύγραμμα τμήματα, κόψιμο με όριο παραθύρου και αναδρομή. F I E A C G B J H D 24

Line Clipping: Αλγόριθμος Cohen-Sutherland Βασικός αλγόριθμος: Αποδοχή γραμμών που έχουν και τα δύο τελικά σημεία εντός της περιοχής. Απόρριψη γραμμών που έχουν και τα δύο τελικά σημεία μικρότερα από x min ή y min ή μεγαλύτερα από x max ή y max Αποκοπή των υπόλοιπων γραμμών σε ένα όριο της περιοχής και επανάληψη των προηγούμενων βημάτων στα 2 νέα (αποκομμένα) τμήματα. F I E A Trivially reject C Trivially accept G B J H D Clip and retest 25

Cohen-Sutherland: Accept/Reject Tests Θέτουμε έναν 4-bit κωδικό σε κάθε τελικό σημείο σύμφωνα με τη θέση του: 1001 1000 1010 4 th bit (1000): αν y > y max 3 rd bit (0100): αν y < y min 2 nd bit (0010): αν x > x max 1 st bit (0001): αν x < x min 0001 0000 0010 Bit 4 Bit 3 Bit 2 Bit 1 πάνω κάτω δεξιά αριστερά 0101 0100 0110 Ο κώδικας κάθε περιοχής καθορίζεται από τη θέση της σχετικά με τα ημιεπίπεδα των ακμών του παραθύρου. bit = 1, αν η περιοχή βρίσκεται στο ημιεπίπεδο της ακμής που δεν περιέχει το παράθυρο. 26

Cohen-Sutherland: Accept/Reject Tests Για κάθε άκρο ενός ευθύγρ. τμήματος, βρίσκουμε τον κώδικα της περιοχής που βρίσκεται: 4 ο bit: πρόσημο y max - y 3 ο bit: πρόσημο y - y min 2 ο bit: πρόσημο x max - x 1 ο bit: πρόσημο x - x min (Αν το πρόσημο είναι αρνητικό το bit τίθεται 1, αλλιώς 0) 1001 1000 1010 0001 0000 0010 0101 0100 0110 c 1 : κώδικας (outcode) 1 ου άκρου c 2 : κώδικας 2 ου άκρου Bit 4 Bit 3 Bit 2 Bit 1 πάνω κάτω δεξιά αριστερά 27

Cohen-Sutherland: Accept/Reject Tests 1 ο βήμα αποκοπής: if (c 1 c 2 ) = 0000 inside window accept (draw) else if (c 1 && c 2 ) 0000 outside window reject (don t draw) else clip and retest 1001 1000 1010 0001 0000 0010 0101 0100 0110 Λογικό OR (bitwise operations): 0 or 0 = 0 0 or 1 = 1 1 or 0 = 1 1 or 1 = 1 Π.χ.: 1010 or 1100 = 1110 Λογικό AND (bitwise operations): 0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1 Π.χ.: 1010 or 1100 = 1000 28

Cohen-Sutherland Accept/Reject Accept/reject/redo βασίζονται σε bit-wise boolean ops. 1001 1000 1010 0001 0000 0010 0101 0100 0110 29

Αλγόριθμος Cohen-Sutherland Παράδειγμα: κώδικες c 1,c 2 για τα κάτωθι P 1 P 2 : A: 0001 B: 0101 C: 0000 D: 0000 E: 0100 F: 0010 G: 0001 H: 1010 Άρα: ΑΒ εκτός, αφού: 0001 && 0101 0000 CD εντός, αφού: 0000 0000 = 0000 EF και GH??? 30

Αλγόριθμος Cohen-Sutherland Προσδιορισμός σημείου τομής: Συγκρίνουμε τους κώδικες των άκρων του ευθύγραμμου τμήματος Επιλέγουμε την ευθεία μιας ακμής του παραθύρου που αντιστοιχεί σε ένα bit για το οποίο οι 2 κώδικες έχουν διαφορετικές τιμές Bit 4 Bit 3 Bit 2 Bit 1 πάνω κάτω δεξιά αριστερά Υπολογίζουμε το σημείο τομής του P 1 P 2 με την επιλεγμένη ευθεία Καλούμε τον αλγόριθμο αναδρομικά για το ευθύγραμμο τμήμα του οποίου το ένα άκρο είναι το σημείο τομής και το άλλο άκρο είναι το άκρο του αρχικού P 1 P 2 του οποίου ο κώδικας έχει 0 στο bit που αντιστοιχεί η επιλεχθείσα ευθεία αποκοπής. 31

Αλγόριθμος Cohen-Sutherland Παράδειγμα: EF κώδικες: E: 0100, F: 0010 ευθεία y = y min Υπολογίζουμε το σημείο τομής I με την επιλεγμένη ευθεία Καλούμε τον αλγόριθμο αναδρομικά για το ευθύγραμμο τμήμα FI. (γιατί το bit3 του κωδικού του F έχει τιμή 0) Bit 4 Bit 3 Bit 2 Bit 1 πάνω κάτω δεξιά αριστερά 32

Αλγόριθμος Cohen-Sutherland Παράδειγμα: GH κώδικες: G: 0001, H: 1010 ευθεία y = y max Υπολογίζουμε το σημείο τομής K με την επιλεγμένη ευθεία Καλούμε τον αλγόριθμο αναδρομικά για το ευθύγραμμο τμήμα GK. (γιατί το bit4 του κωδικού του G έχει τιμή 0) Υπολογίζουμε το σημείο τομής J Bit 4 Bit 3 Bit 2 Bit 1 πάνω κάτω δεξιά αριστερά 33

Παράδειγμα Cohen-Sutherland Γραμμή AD A: 0000 outcode D: 1001 outcode Λογικό AND των outcodes:0 => η γραμμή δεν μπορεί να απορριφθεί απευθείας Λογικό OR των outcodes: NOT 0 => η γραμμή δεν μπορεί να παραμείνει απευθείας. 1 διαφορετικό bit: 4 ο => y=y max και χρήση Β ως σημείου αναδρομικού υπολογισμού. Επιλογή του A ως αρχικού σημείου (το outcode του περιέχει 0 στο bit 4) Υπολογισμός outcode Β: 0000. Στην επόμενη επανάληψη: το AB παραμένει απευθείας (0000 0000) και απεικονίζεται. Bit 4 Bit 3 Bit 2 Bit 1 πάνω κάτω δεξιά αριστερά 34

Αλγόριθμος Cohen-Sutherland void CS(P1, P2, xmin, xmax, ymin, ymax) point P1, P2; float xmin, xmax, ymin, ymax; { int c1, c2; point I; C1 = code(p1); /* Εύρεση κώδικα P1*/ C2 = code(p2); /* Εύρεση κώδικα P2*/ if ((c1 c2)==0) /* Το P1P2 είναι εντός παραθύρου */ else if ((c1&&c2)!=0) // Το P1P2 είναι εκτός παραθύρου else { intersect (P1,P2,I,xmin,xmax,ymin,ymax); if exoteriko(p1) CS(I, P2, xmin, xmax, ymin, ymax); else CS(P1, I, xmin, xmax, ymin, ymax); } } 35

Αλγόριθμος Cohen-Sutherland Προσδιορισμός σημείου τομής: Έστω ευθύγραμμο τμήμα: (x 1,y 1 ),(x 2,y 2 ) με m = (y 2 y 1 )/(x 2 -x 1 ) Η τομή με κάθετο όριο x=x min ή x=x max υπολογίζεται ως: y = y 1 + m(x-x 1 ) Η τομή με οριζόντιο όριο y=y min ή y=y max υπολογίζεται ως: x = x 1 + (y-y 1 )/m 36

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