1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Εμφάνιση σε 2D Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr
2 Περιεχόμενα Έννοιες παραθύρων (windowing) Αποκοπή (clipping) Εισαγωγή Brute Force Αλγόριθμος αποκοπής Cohen-Sutherland Επιφάνεια αποκοπής (Area Clipping) Αλγόριθμος αποκοπής Sutherland-Hodgman
3 Παράθυρο (Windowing) I Μια σκηνή αποτελείται από μια συλλογή από αντικείμενα που ορίζονται σε παγκόσμιες συντεταγμένες Παγκόσμιες συντεταγμένες
4 Παράθυρο (Windowing) II Εμφανίζουμε μια σκηνή μόνο με αντικείμενα που βρίσκονται μέσα σε ένα συγκεκριμένο παράθυρο. wy max Παράθυρο wy min wx min wx max Παγκόσμιες συντεταγμένες
5 Παράθυρο (Windowing) III Η σχεδίαση αντικειμένων στην οθόνη είναι χρονοβόρα γι αυτό αποκόπτουμε οτιδήποτε βρίσκεται εκτός παραθύρου. wy max Παράθυρο wy min wx min wx max Παγκόσμιες συντεταγμένες
6 Αποκοπή (clipping) Ποια σημεία και γραμμές θα παραμείνουν και ποια σημεία και γραμμές θα αποκοπούν P 4 wy max Window P 3 P 6 P 2 P 7 P 5 P 1 wy min P 9 P 8 P 10 wx min wx max
7 Αποκοπή σημείου Ένα σημείο (x,y) δεν αποκόπτεται εάν: (Point Clipping) wx min x wx max και wy min y wy max άλλως αποκόπτεται wy max wy min Αποκόπτεται P 7 P 5 Window P 9 P 4 Αποκόπτεται P 1 Σημεία μέσα στο παράθυρο δεν αποκόπτονται Αποκόπτεται P 2 Αποκόπτεται P 8 Αποκόπτεται P 10 wx min wx max
8 Αποκοπή γραμμής (Line clipping) Πιο περίπλοκο εξετάζουμε τα άκρα κάθε γραμμής, εάν είναι μέσα στο «παράθυρο» ή όχι Περίπτωση Λύση Παράδειγμα Και τα δυο άκρα μέσα στο παράθυρο window Το ένα άκρο μέσα στο παράθυρο και το άλλο έξω Και τα δυο άκρα έξω από το παράθυρο -- Αποκοπή εξέταση
9 Brute Force (Line clipping) Ο αλγόριθμος Brute force για αποκοπή γραμμών περιγράφεται παρακάτω: - Δεν αποκόπτουμε γραμμές με τις δύο άκρες μέσα στο παράθυρο. - Υπολογίζουμε το σημείο τομής (χρησιμοποιώντας την εξίσωση γραμμής) και αποκόπτουμε το κομμάτι εκτός του παραθύρου
10 Brute Force Line Clipping (2) Εξετάζουμε την γραμμή για τομή με όλα τα όρια του παραθύρου (window boundaries) αποκόπτουμε τα κομμάτια εκτός παραθύρου Ο υπολογισμός εύρεσης τομών είναι υπολογιστικώς ακριβός Σε σκηνές με πολλές γραμμές η αποκοπή γραμμών είναι αργή διαδικασία
11 Αλγόριθμος αποκοπής Cohen- Sutherland Ο αλγόριθμος των Cohen-Sutherland είναι ένας αποτελεσματικός (efficient) αλγόριθμος αποκοπής γραμμών. Το κύριο πλεονέκτημα είναι ότι μειώνει δραστικά τον αριθμό των τομών (γραμμών) που πρέπει να υπολογισθούν
12 Cohen-Sutherland: World Division Ο παγκόσμιος χώρος (world space) διαιρείται σε περιοχές με βάση τα όρια του παραθύρου Κάθε περιοχή έχει ένα μοναδικό 4-bit κώδικα περιοχής Οι κωδικοί δείχνουν την θέση των περιοχών σε σχέση με το παράθυρο 1001 1000 1010 3 2 1 0 above below right left Region Code Legend 0001 0000 Window 0010 0101 0100 0110
13 Cohen-Sutherland: Κωδικοποίηση (Labelling) Κάθε άκρο παίρνει τον κατάλληλο κωδικό περιοχής wy max wy min P 3 [0001] P 7 [0001] P 4 [1000] Window P 6 [0000] P 5 [0000] P 9 [0000] P 11 [1010] P 12 [0010] P 8 [0010] P 10 [0100] P 13 [0101] P 14 [0110] wx min wx max
14 Cohen-Sutherland: Μέσα στο παράθυρο Γραμμές που βρίσκονται (ολόκληρες) μέσα στα όρια του παραθύρου παίρνουν κώδικα περιοχής [0000] και για τα δυο άκρα => δεν αποκόπτονται. wy max wy min P 3 [0001] P 7 [0001] P 4 [1000] Window P 6 [0000] P 5 [0000] P 9 [0000] P 11 [1010] P 12 [0010] P 8 [0010] P 10 [0100] P 13 [0101] P 14 [0110] wx min wx max
15 Cohen-Sutherland: Έξω από το παράθυρο Γραμμές με τα δυο άκρα σε κοινούς κώδικες περιοχών, αποκόπτονται Με την && (boolean and) λειτουργία μπορούμε να το ελέγξουμε αυτό P 4 [1000] P 11 [1010] wy max wy min P 3 [0001] P 7 [0001] Window P 6 [0000] P 5 [0000] P 9 [0000] P 12 [0010] P 8 [0010] P 10 [0100] P 13 [0101] P 14 [0110] wx min wx max
16 Cohen-Sutherland: Άλλες γραμμές Γραμμές που δεν μπορούν να ταυτοποιηθούν αν είναι ολόκληρες μέσα στο παράθυρο ή ολόκληρες έξω από το παράθυρο είναι πιθανόν να τέμνουν ή να μη τέμνουν το εσωτερικό (interior) του παραθύρου. Αυτές οι γραμμές επεξεργάζονται ως ακολούθως: Σύγκρινε ένα άκρο της γραμμής που είναι έξω από το παράθυρο με ένα όριο του παραθύρου (διάλεξε την σειρά των ορίων πχ. left, right, bottom, top) και καθόρισε το κομμάτι που μπορεί να απορριφθεί (discarded) Αν η υπόλοιπη γραμμή είναι ολόκληρη μέσα ή έξω από το παράθυρο, τότε μένει ή αποκόπτεται αντιστοίχως
17 Cohen-Sutherland: Other Lines (cont ) Διαφορετικά, συγκρίνεται το υπόλοιπο της γραμμής με άλλα όρια του παραθύρου Η διαδικασία συνεχίζεται μέχρις ότου η γραμμή είτε αποκόπτεται είτε ένα κομμάτι της βρίσκεται μέσα στο παράθυρο. Μπορούμε να χρησιμοποιήσουμε τους κωδικούς περιοχών για να καθορίσουμε πιο όριο του παραθύρου θα πρέπει να εξετάσουμε για πιθανή τομή Για να ελεγχθεί εάν μια γραμμή τέμνει ένα συγκεκριμένο όριο (boundary) συγκρίνουμε τα κατάλληλα bits στις περιοχές (κωδικών) που βρίσκονται τα άκρα της γραμμής Εάν ένα από αυτά είναι 1 και το άλλο είναι 0 τότε η γραμμή τέμνει το όριο
18 Cohen-Sutherland Παράδειγμα 1 Έστω η γραμμή από το P 9 ως το P 10 Αρχή στο P 10 Από του κωδικούς περιοχών των δυο άκρων γνωρίζουμε ότι η γραμμή δεν τέμνει ούτε το αριστερό ούτε το δεξιό όριο Υπολογίζουμε την τομή της γραμμής στο κάτω όριο και βρίσκουμε το σημείο P 10 wy max wy min wx min Η γραμμή P 9 - P 10 είναι ολόκληρη μέσα στο Window P 9 [0000] P 10 [0000] P 10 [0100] wx max
19 Cohen-Sutherland Παράδειγμα 2 Έστω η γραμμή από το P 3 έως το P 4 Αρχή στο P 4 Από του κωδικούς περιοχών των δυο άκρων γνωρίζουμε ότι η γραμμή τέμνει το αριστερό όριο Υπολογίζουμε το σημείο τομής και βρίσκουμε το σημείο P 4 wy max wy min P 4 [1001] P 3 [0001] wx min P 4 [1000] Window Η γραμμή P 3 - P 4 είναι ολόκληρη εκτός παραθύρου και αποκόπτεται wx max
20 Cohen-Sutherland Παράδειγμα 3 Έστω η γραμμή από το P 7 έως το P 8 Αρχή στο P 7 Από του κωδικούς περιοχών των δυο άκρων γνωρίζουμε ότι η γραμμή τέμνει το αριστερό όριο Υπολογίζουμε το σημείο wy min τομής και βρίσκουμε το σημείο P 7 wy max Window P 7 [0000] P 7 [0001] P 8 [0010] P 8 [0000] wx min wx max
21 Cohen-Sutherland Παράδειγμα 3 (2) (συνέχεια) Έστω η γραμμή από το P 7 έως το P 8 Αρχή στο P 8 Υπολογίζουμε το σημείο τομής με το δεξιό όριο και βρίσκουμε το σημείο P 8 P 7 - P 8 είναι μέσα στο παράθυρο και παραμένει wy max wy min wx min Window P 7 [0000] P 7 [0001] P 8 [0010] P 8 [0000] wx max
22 Υπολογισμός Τομών Γραμμής (Line Intersections) Σημεία τομής με τα όρια του παραθύρου υπολογίζονται με την χρήση των παραμέτρων της εξίσωσης-γραμμών Γραμμή με άκρα (x 1, y 1 ) και (x 2, y 2 ) Η τιμή της y συντεταγμένης μιας τομής με το κάθετο όριο του παραθύρου υπολογίζεται ως: y = y 1 + m (x boundary - x 1 ) όπου x boundary είναι wx min ή wx max
23 Υπολογισμός Τομών Γραμμής (2) Η τιμή της x συντεταγμένης μιας τομής με το οριζόντιο όριο του παραθύρου υπολογίζεται ως: x = x 1 + (y boundary - y 1 ) / m όπου y boundary παίρνει τιμή wy min ή wy max το m είναι η κλήση της γραμμής και υπολογίζεται ως m = (y 2 - y 1 ) / (x 2 - x 1 )
24 Αποκοπή περιοχής (Area clipping) Όμοια με την αποκοπή γραμμών έτσι και οι περιοχές (επιφάνειες) αποκόπτονται στα όρια του παραθύρου. Πρέπει να αποφασισθεί για το ποια κομμάτια από μια περιοχή θα αποκοπούν
25 Αλγόριθμος Αποκοπής Περιοχής Sutherland-Hodgman Μια τεχνική για αποκοπή περιοχών αναπτύχθηκε από τους Sutherland & Hodgman. Το πολύγωνο αποκόπτεται συγκρίνοντάς το με όλα τα όρια Αρχική Περιοχή Αποκοπή Αριστερα Αποκοπή Δεξια Αποκοπή Πάνω (Top) Αποκοπή Κάτω (Bottom)
26 Αλγόριθμος Αποκοπής Περιοχής Sutherland-Hodgman (2) Για την αποκοπή μιας περιοχής σε σχέση με ένα συγκεκριμένο όριο: Εξετάζουμε κάθε σημείο-κορυφή (vertex) διαδοχικά σε σχέση με το παράθυρο Τα σημεία κορυφές (vertices) μέσα στο παράθυρο σώζονται για αποκοπή (σε σχέση με το επόμενο όριο) Vertices έξω από το παράθυρο αποκόπτονται Εάν προχωράμε από ένα σημείο εντός παραθύρου σε ένα σημείο εκτός, τότε το σημείο τομής της γραμμής με το παράθυρο σώζεται. Εάν προχωράμε από ένα σημείο εκτός παραθύρου σε ένα σημείο εντός, τότε το σημείο τομής της γραμμής με το παράθυρο σώζεται.
27 Κάθε εικόνα δείχνει: Το σημείο που είναι για επεξεργασία (P) και το προηγούμενο σημείο (S). Τα σημεία (points) που σώθηκαν (saved) ορίζουν την περιοχή που αποκόπηκε στα όρια του παραθύρου Sutherland-Hodgman: Παράδειγμα S S P I P Save Point P Save Point I P S I P S No Points Saved Save Points I & P
28 Αλλά θέματα που αφορούν αποκοπή Η αποκοπή κοίλων (concave) περιοχών μπορεί να είναι λίγο περισσότερο δύσκολη διαδικασία καθώς «αχρείαστες» (περιττές) γραμμές πρέπει να αποκοπούν. Window Window Window Window Αποκοπή κυρτών περιοχών είναι πιο περίπλοκη Για τον κύκλο πρέπει να βρούμε τα δυο σημεία τομής με τα όρια του παραθύρου
29 Σύνοψη Αντικείμενα μέσα σε μια σκηνή στον χώρο πρέπει να αποκοπούν για να εμφανίσουμε την σκηνή σε ένα παράθυρο. Καθώς υπάρχουν πολλά αντικείμενα που αποκόπτονται, η αποκοπή πρέπει να είναι εξαιρετικά αποτελεσματική. Ο αλγόριθμος των Cohen-Sutherland μπορεί να χρησιμοποιηθεί στην αποκοπή γραμμών. Ο αλγόριθμος των Sutherland-Hodgman μπορεί να χρησιμοποιηθεί στην αποκοπή περιοχών.