Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Γραφικα Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Ακ Έτος 2016-17
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Σύνοψη του σημερινού μαθήματος 1 Εισαγωγή 2 Αποκοπή ευθείας σε 2Δ 3 Αποκοπή πολυγώνου σε 2Δ 4 Αποκοπή σε 3Δ
Εισαγωγή Εισαγωγή Μια βασική πράξη στα γραφικά είναι η αποκοπή (clipping) Η αποκοπή ενός αντικειμένου (πχ ευθύγραμμου τμήματος, πολυγώνου) γίνεται ως προς συγκεκριμένο αντικείμενο αποκοπής (πχ ορθογώνιο παραλληλόγραμμο, πυραμίδα, κύβος) Το αντικείμενο αποκοπής ορίζει το τμήμα του χώρου που ενδιαφέρει τον παρατηρητή σχετικά με το ποιες επιφάνειες μιας σκηνής μπορεί αυτός να δει
Εισαγωγή Χρησιμότητα Αποκοπής Η αποκοπή είναι πολύ χρήσιμη για τους εξής λόγους Αποφυγή της λανθασμένης (αντεστραμμένης) εμφάνισης αντικειμένων που βρίσκονται πίσω από τον παρατηρητή Μείωση του όγκου των δεδομένων που προωθούνται προς την αναπαράσταση στην οθόνη Το ενδιαφέρον της αποκοπής εστιάζεται στα αντικείμενα της σκηνής που τέμνουν το αντικείμενο αποκοπής και όχι σε αυτά που βρίσκονται πλήρως εντός ή εκτός της σκηνής
Αποκοπή ευθείας σε 2Δ Αποκοπή στις 2 διαστάσεις Για απλούστερη διατύπωση των αλγορίθμων, αλλά και επειδή το τελικό μέσο παράστασης (οθόνη) είναι ορθογώνιο παραλληλόγραμμο, χρησιμοποιείται εδώ ως αντικείμενο αποκοπής ένα ορθογώνιο παραλληλόγραμμο το οποίο και θα αποκαλείται παράθυρο αποκοπής (window)
Αποκοπή ευθείας σε 2Δ Σημειακή Αποκοπή Στην περίπτωση αυτή εξετάζεται αν το σημείο P(x, y) βρίσκεται εντός ή εκτός του Ā B C D παραθύρου που ορίζεται από τα σημεία Ā(x min, y min ) και C(x max, y max ) Εάν x min x x max και y min y y max, τότε το P(x, y) βρίσκεται εντός του παραθύρου, διαφορετικά αποκόπτεται
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Μέσου Ο απλούστερος αλγόριθμος αποκοπής ευθύγραμμου τμήματος είναι ο αλγόριθμος μέσου Έστω P 1 (x 1, y 1 ) και P 2 (x 2, y 2 ) τα δύο άκρα ενός ευθύγραμμου τμήματος Σε κάθε σημείο P(x, y) του επιπέδου αντιστοιχούν δύο παράμετροι IX, IY με βάση το παράθυρο Οι πιθανές τιμές για τα IX, IY είναι 1, 0, +1 Το επίπεδο χωρίζεται σε 9 περιοχές
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Αποκοπή ευθείας σε 2Δ Αλγόριθμος Μέσου Στο σημείο P 1 (x 1, y 1 ) αντιστοιχούνται οι παράμετροι IX 1, IY 1 και στο P 2 (x 2, y 2 ) οι παράμετροι IX 2, IY 2
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Μέσου typedef struct {float x,y} point; midpoint (P1,P2,xmin,xmax,ymin,ymax) point P1,P2; float xmin,xmax,ymin,ymax; point M // calculate IX1,IY1,IX2,IY2 if ((IX1==0)&&(IY1==0)&&(IX2==0)&&(IY2==0)) // P1P2 is inside the window else if ((IX1==IX2)&&(IX1!=0)) ((IY1==IY2)&&(IY1!=0)) //P1P2 is outside the window else Mx=(P1x+P2x)/2; My=(P1y+P2y)/2; midpoint (P1,M,xmin,xmax,ymin,ymax); midpoint (M,P2,xmin,xmax,ymin,ymax);
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Ο αλγόριθμος αρχικά σαν 1ο βήμα εκτελεί έναν υπολογιστικά φθηνό έλεγχο για να αποφανθεί κατά πόσον το ευθύγραμμο τμήμα είναι εξ ολοκλήρου εντός ή εκτός του παραθύρου Εάν μπορεί να ληφθεί μια απόφαση, αποφεύγεται ο δαπανηρός υπολογισμός της τομής
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Εύκολα φαίνεται ότι το Ā B είναι εκτός, αφού οι x συντεταγμένες των άκρων του είναι μικρότερες από x m in Εύκολα φαίνεται ότι το C D είναι εντός, αφού όλες οι συντεταγμένες των άκρων του είναι μεταξύ από x min, x max και y min, y max
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Δεν μπορεί να εξαχθεί συμπέρασμα για τα Ḡ H και Ē F Αναζητείται κάποια πλευρά του παραθύρου που τέμνει είτε η ίδια είτε προέκτασή της το ευθύγραμμο τμήμα Υπολογίζεται το σημείο τομής Εφαρμόζεται αναδρομικά ο αλγόριθμος στα ευθύγραμμα τμήματα που προκύπτουν (πχ για το Ē F τα ĒĪ, Ī F)
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Για να γίνουν αποδοτικά οι έλεγχοι, το επίπεδο του παραθύρου χωρίζεται σε 9 περιοχές Σε κάθε περιοχή αντιστοιχεί ένας κώδικας Ο κώδικας καθορίζεται απο τη θέση της περιοχής σχετικά με τα ημιεπίπεδα των ακμών του παραθύρου
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Κάθε ένα από τα 4 bits του κώδικα έχει τιμή 1 αν η περιοχή βρίσκεται στο ημιεπίπεδο της ακμής που ΔΕΝ περιέχει το παράθυρο, αλλιώς έχει την τιμή 0 1ο bit = 1: περιοχή πάνω από την ευθεία y = y max 2ο bit = 1: περιοχή κάτω από την ευθεία y = y min 3ο bit = 1: περιοχή δεξιά από την ευθεία x = x max 4ο bit = 1: περιοχή αριστερά από την ευθεία x = x max
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Για κάθε άκρο (x, y) ενός ευθυγράμμου τμήματος υπολογίζεται ο κώδικας της περιοχής στην οποία βρίσκεται Αυτό γίνεται αποδοτικά ως εξής: το 1ο bit αντιστοιχεί στο πρόσημο της παράστασης y max y το 2ο bit αντιστοιχεί στο πρόσημο της παράστασης y y min το 3ο bit αντιστοιχεί στο πρόσημο της παράστασης x max x το 4ο bit αντιστοιχεί στο πρόσημο της παράστασης x x min Έχοντας υπολογίσει τους κώδικες c 1, c 2 των άκρων κάποιου ευθύγραμμου τμήματος, το 1ο βήμα της αποκοπής είναι Αν C 1 C 2 = 0000, τότε το ευθύγραμμο τμήμα είναι εντός του παραθύρου Αν C 1 C 2 0000, τότε το ευθύγραμμο τμήμα είναι εκτός του παραθύρου
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Στην περίπτωση που δεν ισχύει κάτι από τα παραπάνω, προσδιορίζεται ένα σημείο τομής ως εξής Συγκρίνοντας τους κώδικες των άκρων του ευθύγραμμου τμήματος, επιλέγεται η ευθεία μιας ακμής του παραθύρου που αντιστοιχεί σε ένα bit για το οποίο οι κώδικες έχουν διαφορετικές τιμές Υπολογίζεται το σημείο τομής του ευθύγραμμου τμήματος με την ευθεία αυτή Ο αλγόριθμος καλείται αναδρομικά για το ευθύγραμμο τμήμα του οποίου το ένα άκρο είναι το σημείο τομής και το άλλο είναι εκείνο το άκρο του ευθύγραμμου τμήματος του οποίου ο κώδικας έχει τιμή 0 στο bit που αντιστοιχεί στην ευθεία αποκοπής
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland CS (P1,P2,xmin,xmax,ymin,ymax) point P1,P2; float xmin,xmax,ymin,ymax; int c1,c2; point I; c1=code(p1); //find P1 code c2=code(p2); //find P2 code if ((c1 c2)==0) // P1P2 is inside the window else if ((c1&&c2)!=0) // P1P2 is outside the window else intersect (P1,P2,I,xmin,xmax,ymin,ymax); if outside(p1) CS(I,P2,xmin,xmax,ymin,ymax); else CS(P1,I,xmin,xmax,ymin,ymax);
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Cohen-Sutherland Σημειώνεται ότι ο υπολογισμός των σχέσεων C 1 C 2 == 0000, C 1 C 2! = 0000 μπορεί να γίνει με τη βοήθεια ειδικών ρουτινών Η intersect υπολογίζει στο Ī σημείο τομής μεταξύ των P 1 P 2 και μιας ευθείας του παραθύρου Η outside υπολογίζει αν το P 1 βρίσκεται στο ημιεπίπεδο εκείνο της ευθείας τομής στο οποίο βρίσκεται και το παράθυρο
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Liang-Barsky Βασίζεται στην παραμετρική εξίσωση ευθείας Για P 1 (x 1, y 1 ) και P 2 (x 2, y 2 ), η παραμετρική εξίσωση των P 1, P 2 είναι P = P 1 + t ( P 2 P 1 ), t [0, 1] ή x = x 1 + t x, y = y 1 + t y με x = x 2 x 1, y = y 2 y 1 Για t [, + ] προκύπτει ολόκληρη η ευθεία που περνάει από τα P 1 και P 2
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Liang-Barsky Για δοσμένο παράθυρο αποκοπής, θα ισχύει ή x min x 1 + t x x max, t x x 1 x min, y min y 1 + t y y max t y y 1 y min t x x max x 1, t y y max y 1
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Liang-Barsky Οι προηγούμενες ανισότητες μπορούν να τεθούν στην κοινή μορφή t p i q i, i = 1, 2, 3, 4, όπου p 1 = x, q 1 = x 1 x min p 2 = x, q 2 = x max x i p 3 = y, q 3 = y 1 y min p 4 = y, q 4 = y max y 1
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Αποκοπή ευθείας σε 2Δ Αλγόριθμος Liang-Barsky Αρίθμηση των ακμών Liang-Barsky (x = x min : 1, x = x max : 2, y = y min : 3, y = y max : 4) Ορισμός ορατού και μη ορατού ημιεπιπέδου ακμής
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Liang-Barsky Κάθε πλευρά του παραθύρου ορίζει μια ημιευθεία, η οποία χωρίζει το επίπεδο σε δύο ημιεπίπεδα Ορατό ημιεπίπεδο: αυτό που περιέχει το παράθυρο Μη Ορατό ημιεπίπεδο: αυτό που δεν περιέχει το παράθυρο Το παράθυρο πλέον μπορεί να οριστεί ως η τομή των 4 ορατών ημιεπιπέδων
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Liang-Barsky Κάθε μία ανισότητα δίνει την περιοχή τιμών του t η οποία αντιστοιχεί στο ορατό μέρος του ευθύγραμμου τμήματος αναφορικά με την αντίστοιχη ακμή Εάν p i 0, τότε το σημείο τομής της ευθείας που ορίζουν τα P 1, P 2 με την i πλευρά του παραθύρου δίνεται για t = q i p i, i = 1, 2, 3, 4 Το πρόσημο του q i καθορίζει το ημιεπίπεδο της πλευράς i στο οποίο βρίσκεται το P 1 q i 0 P 1 βρίσκεται στο ορατό ημιεπίπεδο q i < 0 P 1 βρίσκεται στο μη ορατό ημιεπίπεδο Εάν p i = 0, τότε η ευθεία είναι παράλληλη στην ακμή i, = 1, 2, 3, 4 Εάν p i < 0, τότε η προσανατολισμένη ευθεία P 1 P 2 μεταβαίνει από το μη ορατό προς το ορατό ημιεπίπεδο της πλευράς i Εάν p > 0, τότε η προσανατολισμένη ευθεία P P
Αποκοπή ευθείας σε 2Δ Αλγόριθμος Liang-Barsky Ο αλγόριθμος υπολογίζει δύο τιμές t 1 και t 2 της παραμέτρου t, οι οποίες καθορίζουν τα δύο άκρα του τμήματος του P 1 P 2 που βρίσκεται μέσα στο παράθυρο t 1 = max({ q i p i p i < 0, i = 1, 2, 3, 4} {0}) (1) και t 2 = min({ q i p i > 0, i = 1, 2, 3, 4} {1}) (2) p i Τα μονοσύνολα {0}, {1} εξασφαλίζουν την επιλογή των άκρων P 1, P 2 στην περίπτωση που τα σημεία τομής της ευθείας με τις πλευρές του παραθύρου βρίσκονται εκτός του P 1, P 2 Εάν t 1 > t 2, τότε το ευθύγραμμο τμήμα βρίσκεται εκτός του παραθύρου, διαφορετικά οι τιμές t 1, t 2 χρησιμοποιούνται για τον υπολογισμό Πανεπιστήμιο των σημείων Θεσσαλίας Τμήμα τομής Πληροφορικής
Αποκοπή πολυγώνου σε 2Δ Αποκοπή Πολυγώνων Η αποκοπή 2Δ πολυγώνων είναι βασική πράξη στα γραφικά Οι χρήσεις της περιλαμβάνουν Αλγόριθμους αντιτάυτισης (αποκοπή στα όρια του pixel) Αλγόριθμους απόκρυψης Χωρικό διαχωρισμό πολυγώνων σε συστήματα πολυεπεξεργασίας Οι 3Δ αλγόριθμοι αποκοπής είναι συνήθως γενικεύσεις των 2Δ αλγόριθμων αποκοπής Ο αλγόριθμος Sutherland-Hodgman είναι κατάλληλος για την αποκοπή οποιουδήποτε πολυγώνου με κυρτό πολύγωνο αποκοπής Ο αλγόριθμος Greiner-Hormann μπορεί να εφαρμοστεί για γενικευμένα πολύγωνα
Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Sutherland-Hodgman Ο αλγόριθμος Sutherland-Hodgman μπορεί να αποκόψει ένα κυρτό ή μη κυρτό πολύγωνο ως προς ένα κυρτό πολύγωνο (παράθυρο) αποκοπής Αν το παράθυρο έχει m πλευρές, ο αλγόριθμος αποτελείται από m βήματα Το βήμα i, i = 1, 2,, m, αφορά την αποκοπή του πολυγώνου ως προς την ευθεία που περιέχει την πλευρά i του παραθύρου Η είσοδος στο 1ο βήμα είναι το αρχικό πολύγωνο Η είσοδος στο i-οστό βήμα είναι το πολύγωνο που προκύπτει μετά την αποκοπή στο i-1-οστό βήμα
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Sutherland-Hodgman Βήματα εφαρμογής του αλγορίθμου Sutherland-Hodgman
Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Sutherland-Hodgman Το πολύγωνο αρχικά ορίζεται από τις κορυφές του P 1, P 2, P 3,, P n Θεωρείται ότι η κίνηση κατά μήκος της περιμέτρου του πολυγώνου γίνεται με θετική φορά Οι κορυφές ορίζουν τις πλευρές P 1 P 2, P 2 P 3,, P n 1 P n, P n P 1 Για κάθε πλευρά S P του πολυγώνου το οποίο προέκυψε από το προηγούμενο βήμα αποκοπής, προστίθενται στη λίστα κορυφών του νέου πολυγώνου 0,1 ή 2 κορυφές, ανάλογα με τη θέση της πλευράς S P σε σχέση με την ευθεία αποκοπής
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Sutherland-Hodgman Περιπτώσεις αποκοπής με την εφαρμογή του αλγορίθμου Sutherland-Hodgman
Αποκοπή πολυγώνου σε 2Δ Βήμα Αποκοπής Αλγορίθμου Sutherland-Hodgman Η θέση μιας κορυφής P(r, t) σε σχέση με την ευθεία που ορίζεται από την πλευρά K(x 1, y 1 ) L(x 2, y 2 ) ορίζεται ως Εάν η εξίσωση της ευθείας αποκοπής είναι y sx c = 0 με s = y 2 y 2 x 2 x 1, c = y 1x 2 y 2 x 1 x 2 x 1 τότε η κορυφή P θα είναι εσωτερική, αν t sr c < 0 εξωτερική, αν t sr c > 0
Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Sutherland-Hodgman Στην περίπτωση που η πλευρά του παραθύρου είναι παράλληλη με κάποιον άξονα, τότε ο παραπάνω έλεγχος απλουστεύεται σε μια σύγκριση Αποφεύγεται ο υπολογισμός των s, c Ο αλγόριθμος Sutherland-Hodgman είναι κατάλληλος για υλοποίηση σε hardware
Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Greiner-Hormann Ο αλγόριθμος των Greiner-Hormann είναι κατάλληλος για γενικευμένα πολύγωνα Το πολύγωνο αποκοπής C και το πολύγωνο προς αποκοπή S μπορεί να είναι οποιαδήποτε κλειστά πολύγωνα (ακόμη και μη κυρτά, αυτά που τέμνουν την περιφέρειά τους κλπ) Η απόφαση του εάν ένα σημείο είναι εντός ή εκτός του πολυγώνου είναι έυκολη στην περίπτωση που το πολύγωνο είναι κυρτό (Greiner-Hodgman) Για τη γενικευμένη περίπτωση, ο αλγόριθμος χρησιμοποιεί την έννοια του δείκτη περιστροφών
Αποκοπή πολυγώνου σε 2Δ Δείκτης Περιστροφών Για μια κλειστή καμπύλη γ και ένα σημείο Ā, ο αριθμός περιστροφών ω(γ, Ā) μετρά πόσες στροφές ολοκληρώνει μια ακτίνα που ξεκινά από το Ā και διαγράφει την περιφέρεια της καμπύλης γ μια φορά Για κάθε ολοκληρωμένη στροφή με τη φορά των δεικτών του ρολογιού, ο δείκτης μειώνεται κατά 1 Για κάθε ολοκληρωμένη στροφή με αντίθετη φορά από αυτή των δεικτών του ρολογιού, ο δείκτης αυξάνεται κατά 1 Ορίζεται ως ω(γ, Ā) = 1 2π dϕ
Αποκοπή πολυγώνου σε 2Δ Δείκτης Περιστροφών Ο δείκτης περιστροφής δεν αλλάζει εφόσον δεν μεταβάλλεται η τοπολογική σχέση του Ā με την γ Αν το Ā είναι εκτός της καμπύλης, τότε ω(γ, Ā) = 0 Αν το Ā μετακινηθεί και διασταυρώσει μία φορά την γ, τότε το ω(γ, Ā) αυξάνεται ή μειώνεται κατά 1 Αν το Ā βρίσκεται εντός της γ, τότε το ω(γ, Ā) είναι περιττός, αλλιώς είναι άρτιος
Αποκοπή πολυγώνου σε 2Δ Δείκτης Περιστροφών Από τα παραπάνω μπορεί να εξαχθεί το συμπέρασμα ότι κάθε φορά που το μονοπάτι του Ā τέμνει την γ, περνά είτε από το εξωτερικό στο εσωτερικό της, είτε αντίστροφα Αυτό είναι αντίστοιχο με το μέτρημα των τομών της γ με την ημιευθεία από το Ā προς το άπειρο
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Greiner-Hormann - Παράδειγμα Έστω το πολύγωνο αποκοπής C και το πολύγωνο προς αποκοπή S
Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Greiner-Hormann - Βήμα 1 Εκκίνηση από μια κορυφή του S και ακολουθείται η περίμετρος του Χρησιμοποιείται μια γραφίδα (αναμμένη ή σβηστή) Αρχικά, είναι αναμμένη αν η κορυφή είναι εντός του C, σβηστή αν είναι εκτός του C Κάθε φορά που διασταυρώνεται με το C, αλλάζει κατάσταση Διαγράφονται τα τμήματα του S μέσα στο C
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Greiner-Hormann - Βήμα 2 Το ίδιο με το βήμα 1, αλλάζει μόνο ο ρόλος των C, S Δημιουργούνται τα τμήματα του C που βρίσκονται μέσα στο S
Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Greiner-Hormann - Βήμα 3 Ενώνονται όλα τα τμήματα που προέκυψαν από τα βήματα 1 και 2 S
Αποκοπή πολυγώνου σε 2Δ Αλγόριθμος Greiner-Hormann Το αποτέλεσμα της αποκοπής μπορεί να αποτελείται από 1 ή περισσότερα μη συνεκτικά πολύγωνα Η αποκοπή ουσιαστικά βρίσκει την τομή των επιφανειών C,S (C S) Ο αλγόριθμος Greiner-Hormann εύκολα μετατρέπεται ώστε να υπολογίζει τα C S, C S, S C
Αποκοπή στις 3 Διαστάσεις Αποκοπή στις 3 Διαστάσεις Οι αλγόριθμοι που έχουν περιγραφεί εώς τώρα μπορούν να χρησιμοποιηθούν και για 3 διαστάσεις Θα περιγραφούν οι αλγόριθμοι Cohen-Sutherland και Sutherland-Hodgman Στις 3 διαστάσεις, το αντικείμενο αποκοπής είναι είτε η περιορισμένη πυραμίδα (προοπτική προβολή), είτε ο κύβος (παράλληλη προβολή) Προς το παρόν, θεωρούνται 6 επίπεδα αποκοπής, τα οποία και ορίζουν το 3Δ αντικείμενο αποκοπής
Αποκοπή στις 3 Διαστάσεις 3Δ Αλγόριθμος Cohen-Sutherland Απαιτείται χρήση κωδικών 6 bits για να κωδικοποιηθεί η θέση κάθε άκρου του P(x p y p z p ) σε σχέση με το αντικείμενο αποκοπής Θεωρείται ότι το αντικείμενο αποκοπής είναι κύβος με πλευρές κάθετες στους άξονες Τα επίπεδα αποκοπής θα είναι x = x min x = x max y = y min y = y max z = z min z = z max
Αποκοπή στις 3 Διαστάσεις 3Δ Αλγόριθμος Cohen-Sutherland Η σημασία κάθε bit του κώδικα είναι 01 1ο bit=1 z p > z max 02 2ο bit=1 z p < z min 03 3ο bit=1 y p > y max 04 4ο bit=1 y p < y min 05 5ο bit=1 x p > x max 06 6ο bit=1 x p < x min Όπως και στις 2Δ, αν C 1, C 2 οι κώδικες των δύο άκρων του ευθύγραμμου τμήματος, τότε C 1 C 2 = 000000 το ευθύγραμμο τμήμα είναι εντός του αντικειμένου αποκοπής C 1 C 2 000000 το ευθύγραμμο τμήμα είναι εκτός του αντικειμένου αποκοπής Διαφορετικά, το ευθύγραμμο τμήμα διασπάται ακριβώς όπως και στις 2Δ
Αποκοπή στις 3 Διαστάσεις 3Δ Αλγόριθμος Cohen-Sutherland Η εύρεση της τομής ευθύγραμμου τμήματος και επιπέδου γίνεται συνήθως με χρήση της παραμετρικής εξίσωσης του ευθυγράμμου τμήματος x(t) = x 1 + t(x 2 x 1 ) = x 1 + t x y(t) = y 1 + t(y 2 y 1 ) = y 1 + t y z(t) = z 1 + t(z 2 z 1 ) = z 1 + t z όπου t [0, 1] και P 1 (x 1, y 1, z 1 ), P 2 (x 2, y 2, z 2 ) τα άκρα του ευθύγραμμου τμήματος Για παράδειγμα, η τομή με το επίπεδο y = Y βρίσκεται ως εξής Y = y(t) = y 1 + t y t = Y y 1 y Αν t [0, 1], τότε υπάρχει σημείο τομής με συντεταγμένες (x 1 + t x, Y, z 1 + t z) = (x 1 + x y (y y 1), Y, z 1 + z y (y y 1))
Αποκοπή στις 3 Διαστάσεις 3Δ Αλγόριθμος Sutherland-Hodgman Ο αλγόριθμος Sutherland-Hodgman επεκτείνεται εύκολα στις 3 διαστάσεις, χρησιμοποιώντας 6 διαδοχικά στάδια αποκοπής αντί για 4 Κάθε στάδιο αποκόπτει με ένα από τα 6 επίπεδα του αντικειμένου αποκοπής Κάθε στάδιο λειτουργεί με τον ίδιο τρόπο, ακριβώς όπως και στη διδιάστατη περίπτωση με εξαίρεση τα εξής 01 Τον έλεγχο αν ένα σημείο P βρίσκεται στην εσωτερική ή εξωτερική πλευρά του επιπέδου αποκοπής Για επίπεδα κάθετα με τους άξονες, απλή σύγκριση Για τυχαίο επίπεδο με f(x, y, z) = ax + by + cz + d = 0, ελέγχεται το πρόσημο της f( P) 02 Τον υπολογισμό της τομής του ευθυγράμμου τμήματος με το επίπεδο αποκοπής Ένας τρόπος είναι αυτός που χρησιμοποιείται στον 3Δ Cohen-Sutherland