ΚΕΦΑΛΑΙΟ 5: ΑΠΕΙΚΟΝΙΣΗ ΚΑΙ ΑΠΟΚΟΠΗ Ένα γεωμετρικό μοντέλο είναι μια αριθμητική περιγραφή ενός αντικειμένου, που περιλαμβάνει το μέγεθος, το σχήμα, καθώς και άλλες ιδιότητές του. Η περιγραφή του μοντέλου επιτυγχάνεται σε ένα (άπειρο) καρτεσιανό σύστημα συντεταγμένων, όπου οι μονάδες (μεγέθους, κλπ) μπορούν να συσχετιστούν με τιμές των συντεταγμένων και. Προκειμένου να δημιουργήσουμε τη γραφική εικόνα ενός γεωμετρικού μοντέλου σε μια επιμέρους συσκευή οθόνης, απαιτείται μια προσέγγιση που περιλαμβάνει δύο βήματα: Βήμα 1 ο : Το μοντέλο μετατρέπεται σε ένα σύστημα συντεταγμένων που ταιριάζει στη συγκεκριμένη οθόνη. Βήμα 2 ο : Λαμβάνονται οι αποφάσεις σχετικά με το τμήμα του μοντέλου περιγραφής του αντικειμένου που θα εμφανιστεί, καθώς και τη θέση εμφάνισής του πάνω στην οθόνη. 5.1 Μετασχηματισμός συντεταγμένων Για να εκτελέσουμε το πρώτο βήμα (της προσέγγισης που αναφέραμε παραπάνω), χρησιμοποιούμε, αρχικά, δύο συστήματα συντεταγμένων: 1. Το Παγκόσμιο Σύστημα Συντεταγμένων (World Coordinate Sstem - W), στο οποίο αναφέρονται οι ακριβείς συντεταγμένες ενός αντικειμένου, όπως φαίνεται στην εικόνα 5.1. 2. Το Σύστημα Συντεταγμένων της Συσκευής (Device Coordinate Sstem - U), που αντιστοιχεί στην επιμέρους συσκευή που χρησιμοποιείται και σχετίζεται με την επιφάνειά της, 1
world world Εικόνα 5.1 Παγκόσμιο σύστημα συντεταγμένων Ο μετασχηματισμός από τις παγκόσμιες συντεταγμένες στις συντεταγμένες συσκευής εξαρτάται από τον τύπο της οθόνης που χρησιμοποιείται. Γι αυτό το λόγο, ένα πρόγραμμα εφαρμογής που έχει αναπτυχθεί για ένα συγκεκριμένο σύστημα υπολογιστή μπορεί να μη δουλεύει σε ένα άλλο, εκτός αν χρησιμοποιηθεί ένας κατάλληλος οδηγός που θα μετασχηματίζει τα γεωμετρικά δεδομένα, αποτυπώνοντας το μοντέλο στις συγκεκριμένες συντεταγμένες της κάθε συσκευής. Αυτή η διαφοροποίηση προκαλεί δυσκολίες στη χρήση των διαφόρων εφαρμογών λογισμικού λόγω της μεταφερσιμότητας που θα πρέπει να υποστηρίζεται. Σε μια προσπάθεια να παραβλεφθούν οι λεπτομέρειες που σχετίζονται με την κάθε συσκευή, έχει αναπτυχθεί μια ομοιόμορφη διεπιφάνεια (interface) για εφαρμογές μέσω μιας συσκευής - ανεξάρτητης οδηγού και η οποία περιγράφεται σε ένα κατάλληλο σύστημα συντεταγμένων, όπως οι κανονικοποιημένες συντεταγμένες. Οι κανονικοποιημένες συντεταγμένες συσκευής, (Normalized Device Coordinates - N) είναι ορισμένες για μια ιδανική συσκευή γραφικών. Η επιφάνεια της συσκευής θεωρείται ότι αντιστοιχεί σε ένα μοναδιαίο τετράγωνο, που η αρχή του βρίσκεται στη χαμηλότερη αριστερή γωνία, όπως φαίνεται στην εικόνα 5.2. 2
Y 1 0 1 X Εικόνα 5.2 To μοναδιαίο τετράγωνο Η διαδικασία μετασχηματισμού των συντεταγμένων εκτελείται ως εξής: 1. Αρχικά, το μοντέλο αποτυπώνεται σε παγκόσμιες συντεταγμένες (W). 2. Κατόπιν, το μοντέλο υφίσταται έναν μετασχηματισμό, που μετατρέπει τις συντεταγμένες του από τον χώρο του W στο χώρο του N. Με αυτόν τον τρόπο, το μοντέλο μπορεί να εμφανισθεί σε οποιοδήποτε αριθμό συσκευών παρουσίασης, γιατί ο χώρος του N είναι ανεξάρτητος από τον τύπο της συσκευής που χρησιμοποιείται. 3. Τέλος, εφαρμόζεται ένας νέος μετασχηματισμός ως προς τις συντεταγμένες U της επιμέρους συσκευής, ο οποίος αντανακλά τους περιορισμούς που αυτή εισάγει. Η αναπαράσταση τώρα εξαρτάται από το υλικό (hardware). 5.2 Εμφάνιση με αποκοπή Κατά τη διάρκεια της διαδικασίας μετασχηματισμού των συντεταγμένων, το πρόγραμμα εφαρμογής πιθανώς θα πρέπει να εμφανίσει μόνο ένα τμήμα του μοντέλου περιγραφής του αντικειμένου (μέρος μιας εικόνας). Στην περίπτωση αυτή, για να αφαιρέσουμε τα μέρη που δεν πρέπει να εμφανιστούν, εφαρμόζουμε μια διαδικασία «κοψίματος», που είναι γνωστή ως αποκοπή (clipping). 3
5.2.1 Απεικόνιση window-to-viewport Στην προηγούμενη ενότητα εξηγήσαμε ότι πρέπει να καθορίζουμε ποιά μέρη ενός αντικειμένου θα εμφανιστούν στην οθόνη και πού θα εμφανιστούν. Αυτές οι αποφάσεις λαμβάνονται επιλέγοντας 2 ορθογώνιες περιοχές: στo W, που είναι το παράθυρο (window), στo N, που είναι η περιοχή εμφάνισης (viewport). Window Viewport X Screen Συντεταγμένες συσκευής Εικόνα 5.3 Καθορισμός παραθύρου και viewport Ορίζεται ως: ένα παράθυρο (window) μια ορθογώνια περιοχή του χώρου των παγκόσμιων συντεταγμένων μια περιοχή εμφάνισης (viewport) μια ορθογώνια περιοχή του χώρου των κανονικοποιημένων συντεταγμένων συσκευής. 4
Η εικόνα 5.3 δείχνει παρaδείγματα και των δύο. Η κανονικοποίηση ή ο μετασχηματισμός εμφάνισης που φαίνεται στην εικόνα, που επίσης αναφέρεται και ως window-toviewport-mapping (απεικόνιση), σχεδιάζει το περιεχόμενο του παραθύρου στο viewport. Είναι φανερό ότι στη συνέχεια η σχεδίαση μεταφέρεται στην επιμέρους συσκευή μέσω ενός μετασχηματισμού ως προς τα συγκεκριμένα χαρακτηριστικά της. Παράθυρο (, ) w ma w ma P, ( ) w w (, ) w min w min Φυσικές Συντεταγμένες (1, 1) P (, ) N N (0, 0) Κανονικοποιημένες Συντεταγμένες Τμήμα οθόνης (, ) u ma u ma P (, ) u u (, ) u min u min Συντεταγμένες συσκευής Εικόνα 5.4 Μετασχηματισμός απεικόνισης 5
Μια window-to-viewport-απεικόνιση μπορεί να εκφραστεί με τις ακόλουθες σχέσεις, που βασίζονται στα στοιχεία που αντιστοιχούν στην εικόνα 5.4: u uma umin umin = w wma wmin wmin (5.1) και u uma umin umin = w wma wmin wmin (5.2) Έτσι ώστε ( ) u ma u min u = w wmin + u min wma (5.3) wmin + u ma u min u = ( w w min ) u min w ma (5.4) w min Οι όροι: S = uma wma umin wmin και S = uma wma umin wmin (5.5) είναι σταθεροί για όλα τα σημεία που έχουν σχεδιασθεί και είναι απλοί παραγόντες κλίμακας συντεταγμένων και, ενώ επιπλέον ισχύει ότι S = S. Αν S S τότε η εικόνα υφίσταται παραμορφώσεις, οπότε σε αυτήν την περίπτωση χρησιμοποιούμε τον λόγο εικόνας (aspect ratio) AR. Για το (ορθογώνιο) παράθυρο ή το viewport, που αναφέραμε προηγουμένως, ο λόγος εικόνας (του καθενός) δίνεται από το λόγο του πλάτους προς το ύψος AR = ma ma min min (5.6) 6
Αν ο λόγος εικόνας AR και των δύο (δηλαδή, του παραθύρου και του viewport) είναι ίδιος, τότε S = S και δεν υπάρχει παραμόρφωση της εικόνας. Ειδική φροντίδα πρέπει να δοθεί στην περίπτωση των κυκλικών παραστάσεων, καθώς οι κύκλοι μπορεί να εμφανιστούν ως ελλείψεις στην οθόνη. Οι εξισώσεις 5.3 και 5.4 μπορούν να ξαναγραφούν ως εξής: u u = ( w = ( w wmin wmin ) s ) s + + u min u min ή με μορφή πινάκων: [ u u 1] = [ w w 1] s 0 0 0 s 0 ( s wmin + u min ) ( s wmin + u min ) 1 Στην εικόνα 5.5 παρουσιάζονται παραδείγματα απεικονίσεων window-to-viewport για διαφορετικές συνθήκες. Παρατηρείστε ότι οι παράμετροι μέσα στις παρενθέσεις είναι (X min, X ma, Y min, Y ma ). Το αποτέλεσμα της μεγέθυνσης που φαίνεται στην εικόνα 5.5δ έχει επιτευχθεί με τη σχεδίαση ενός μικρότερου παραθύρου σε ολόκληρο το viewport δίνοντας έτσι την εντύπωση ότι ο χρήστης βρίσκεται πιο κοντά στο αντικείμενο. 7
window viewport Window(-2.0,2.0,-2.0,2.0) Viewport (0.0,1.0,0.0,1.0) (α) Window(-2.0,2.0,-2.0,2.0) Viewport (0.0,0.5,0.0,0.5) (β) Window(-2.0,2.0,-2.0,2.0) Viewport (0.25,0.75,0.0,1.0) (γ) Window(0..0,2.0,0.0,2.0) Viewport (0.0,1.0,0.0,1.0) (δ) Εικόνα 5.5 Παραδείγματα απεικονίσεων window to viewport 8
Παράδειγμα 5.1 Βρες τον πίνακα μετασχηματισμού που θα σχεδιάζει σημεία που περιέχονται σε ένα παράθυρο του οποίου η χαμηλότερη αριστερή γωνία είναι στο (2,2) και η ψηλότερη δεξιά γωνία είναι στο (6,5) σε ένα κανονικοποιημένο viewport που έχει χαμηλότερη αριστερή γωνία στο (1/2,1/2) και υψηλότερη δεξιά γωνία στο (1,1). Λύση Οι παράμετροι του window/vieport είναι wmin = 2 umin = ½ wma = 6 uma = 1 wmin = 2 umin = ½ wma = 5 uma = 1 Βασισμένοι στην εξίσωση 5.3 και 5.4, 1 1 S 2 = = 6 2 1 1 S = 2 = 5 2 1 8 1 6 Άρα, ο πίνακας μετασχηματισμού είναι: [ M map ] 1 8 = 0 1 4 0 1 6 1 6 0 0 1 5.2.2 ισδιάστατη αποκοπή Όπως φαίνεται στην εικόνα 5.5 μπορεί να υπάρξουν φορές που μόνο ένα τμήμα του συνολικού μοντέλου πρόκειται να εμφανισθεί. Σε αυτήν την περίπτωση το παράθυρο χρησιμοποιείται για να συνδέσει oρατά μέρη ενός χώρου παγκόσμιων συντεταγμένων, γεγονός που μοιάζει αρκετά με την περικοπή τμήματος μιας εικόνας από ένα περιοδικό. Αυτή η διαδικασία είναι γνωστή ως αποκοπή (clipping). Μπορεί να θεωρηθεί σαν ένας γεωμετρικός μετασχηματισμός και περιλαμβάνει το κόψιμο όλων των γραμμών ή των 9
καμπύλων που τέμνουν τα όρια του παραθύρου. Στην οθόνη παρουσιάζονται μόνο τμήματα της κάθε οντότητας. Γι αυτό το λόγο, η αποκοπή χωρίζει κάθε στοιχείο της εικόνας σε ορατά και μη ορατά τμήματα και απορρίπτει τα τμήματα που δεν είναι ορατά. Αν η αποκοπή δεν εφαρμοστεί, το τμήμα της εικόνας που πέφτει έξω από τα όρια εμφάνισης μπορεί να εμφανιστεί στην απέναντι πλευρά, όπως φαίνεται στην εικόνα 5.6, που πρέπει να αποφεύγεται. Οι αλγόριθμοι που χρησιμοποιούνται στην διαδικασία clipping βασίζονται ολοκληρωτικά στο σχήμα του παραθύρου. Για εκπαιδευτικούς λόγους, σε αυτό το κεφάλαιο θα θεωρείται ότι το παράθυρο είναι ορθογώνιο με πλευρές παράλληλες στους βασικούς άξονες. Εικόνα 5.5 Επιπτώσεις αποκοπής 5.2.2.1 Αποκοπή σημείου Η αποκοπή σημείου μπορεί εύκολα να επιτευχθεί ελέγχοντας τις συντεταγμένες του σημείου έναντι των ορίων του παραθύρου. Αν το παράθυρο έχει ορισθεί με τις 4 γωνίες: αριστερή (L), δεξιά (R), επάνω(t) και κάτω (Β), όπως φαίνεται στην εικόνα 5.7, τότε το σημείο Ρ(,) θα είναι ορατό αν όλες οι ακόλουθες ανισότητες ικανοποιούνται: L R (5.7) B T (5.8) Αν δεν ισχύει μια από τις παραπάνω ανισότητες, τότε το σημείο δεν θα εμφανιστεί. 10
Παρόλο που αυτή είναι μια απλή απόφαση, είναι άσκοπο να εξετάσουμε (για τους σκοπούς της εμφάνισης) ένα αντικείμενο ως προς όλα τα σημεία του. Υπάρχουν περισσότερο αποδοτικοί αλγόριθμοι που παίρνουν υπόψη τους την ύπαρξη γραμμών και πολυγώνων στη δομή του αντικειμένου. (X ) R, r (X ) L, R Εικόνα 5.7 Όρια παραθύρου 5.2.2.2 Αποκοπή γραμμής Οι αλγόριθμοι που χρησιμοποιούνται για αποκοπή γραμμής μπορούν να χωρισθούν σε δύο μέρη: 1. Έλεγχος όλων των ευθύγραμμων τμημάτων και εντοπισμός αυτών που τέμνουν τα όρια του παραθύρου. 2. Εφαρμογή αποκοπής στα ευθύγραμμα τμήματα που έχουν εντοπισθεί στο βήμα 1, με υπολογισμό των τομών τους με τα όρια του παραθύρου. 11
N M D C (X Y) R, r G H A B E F K J (XL, R) I L Εικόνα 5.8 Τοποθέτηση διαφόρων ευθύγραμμων τμημάτων σε σχέση με τα όρια του παραθύρου Το βήμα 1 μπορεί να επιτευχθεί χωρίζοντας όλα τα ευθύγραμμα τμήματα στις ακόλουθες κατηγορίες. 1. Ορατά. Και τα δύο άκρα του τμήματος ανήκουν στα όρια του παραθύρου. Το ευθύγραμμο τμήμα ΑΒ στην εικόνα 5.7 βρίσκεται σ αυτήν την κατηγορία. Αυτή η γραμμή εμφανίζεται χωρίς περαιτέρω ελέγχους. 2. Μη ορατά. Αν και τα δύο άκρα είναι έξω από τα όρια του παραθύρου, τότε το ευθύγραμμο τμήμα έχει απομακρυνθεί από την οθόνη. Ένα ευθύγραμμο τμήμα από το Ρ 1 ( 1, 1 ) στο Ρ 2 ( 2, 2 ) δεν είναι ορατό, αν μία από τις ακόλουθες ανισότητες ισχύει: 1 και 2 < L 1 και 2 > R 1 και 2 < B 1 και 2 > Τ 12
Τα ευθύγραμμα τμήματα CD και EF της εικόνας 5.7 ικανοποιούν μία από αυτές τις ανισότητες. 3. Ακαθόριστα. Το ευθύγραμμο τμήμα που δεν ανήκει σε καμία από τις προηγούμενες κατηγορίες και θα πρέπει να ληφθεί υπόψη στην αποκοπή. Τα τμήματα GH, IJ και KL της εικόνας 5.8 είναι παραδείγματα μιας τέτοιας περίπτωσης. 5.2.2.2.1 Αλγόριθμος Gohen-Sutherland Ο αλγόριθμος του Gohen-Sutherland είναι μια απλή και αποδοτική διαδικασία για να καθορίζουμε την κατηγορία στην οποία εμπίπτει ένα συγκεκριμένο ευθύγραμμο τμήμα ως προς τα όρια του ορθογωνίου παραθύρου. Ο αλγόριθμος περιλαμβάνει δύο στάδια: 1001 1000 1010 0001 (0000) 0010 Wind ow 0101 0100 0110 Εικόνα 5.9 Κώδικες για τις γειτονικές περιοχές του παραθύρου 1. Εκχωρείται ένας κώδικας 4-bit σε κάθε ένα από τα άκρα του ευθύγραμμου τμήματος που εξετάζεται, με βάση τις 9 περιοχές που περιβάλλουν το παράθυρο, όπως φαίνεται στην εικόνα 5.9. Κάθε bit αυτού του κώδικα τίθεται σε 1 (αληθές) ή 0 (ψευδές), αρχίζοντας από το αριστερότερο, ως εξής: Bit1 = 1, όταν το άκρο του ευθύγραμμου τμήματος βρίσκεται επάνω από το παράθυρο. 13
Βit2 = 1, όταν το άκρο του ευθύγραμμου τμήματος βρίσκεται κάτω από το παράθυρο. Bit3 = 1, όταν το άκρο του ευθύγραμμου τμήματος βρίσκεται στα δεξιά του παραθύρου. Βit4 = 1, όταν το άκρο του τμήματος βρίσκεται στα αριστερά του παραθύρου. Είναι προφανές ότι αν ο κώδικας 4-bit είναι (0000), το άκρο βρίσκεται μέσα στο παράθυρο ή πάνω από τα όριά του. Όλοι οι κώδικες 4-bit εκχωρούνται στα άκρα των ευθύγραμμων τμημάτων συγκρίνοντας κάθε συντεταγμένη των άκρων με τις συντεταγμένες των ορίων του παραθύρου. 2. Εξετάζονται τα άκρα του ευθύγραμμου τμήματος συγκρίνοντας το ένα με το άλλο: Αν και στα δύο άκρα έχει τεθεί το ίδιο bit σε 1 (αληθές), τότε το τμήμα είναι μη ορατό. Ένα τέτοιο παράδειγμα είναι το ευθύγραμμο τμήμα EF με κωδικούς άκρων (1010) και (0010), που είναι τοποθετημένο στα δεξιά του παραθύρου, όπως φαίνεται στην εικόνα 5.10. Αν και οι δύο κωδικοί των άκρων είναι (0000), τότε το ευθύγραμμο τμήμα είναι μέσα στο παράθυρο. Ένα τμήμα είναι ακαθόριστο όταν έχουν τεθεί σε 1 τα bits διαφορετικών περιοχών, όπως, για παράδειγμα, τα ευθύγραμμα τμήματα ΑΒ και CD της εικόνας 5.10 με κωδικούς άκρων (1000) και (0010). Αυτά τα τμήματα είναι πιθανόν να τέμνουν τα όρια του παραθύρου. Η γραμμή ΑΒ είναι μη ορατή, ενώ η γραμμή CD είναι μερικώς ορατή και πρέπει να αποκοπεί. 14
A 1000 1010 C E D B F (0000) 0010 Wind ow Εικόνα 5.10 Παράδειγμα χρήσης κωδικών για τον έλεγχο της ορατότητας μίας γραμμής Όταν εξετάζουμε περιπτώσεις, όπως αυτές που περιγράφηκαν προηγουμένως, χρησιμοποιούμε μια ειδική λογική που ονομάζεται δυαδική λογική AND. Η λογική αυτή προϋποθέτει ότι όταν εξετάζουμε bit προς bit τους κώδικες των άκρων, ισχύουν τα ακόλουθα: πρώτο άκρο δεύτερο άκρο Λογικό AND 0 και 0 ψευδής 0 0 και 1 ψευδής 0 1 και 0 ψευδής 0 1 και 1 αληθής 1 Βασιζόμενοι σ αυτή τη λογική, η ορατότητα του τμήματος καθορίζεται ως εξής: Ορατό Και οι δύο κωδικοί των άκρων είναι (0000) Μη ορατό Το λογικό AND των κωδικών των άκρων δεν είναι (0000) Ακαθόριστο Το λογικό AND των κωδικών των άκρων είναι (0000), αλλά κανένας κωδικός άκρου δεν είναι (0000) 15
Γραμμή Κωδικοί άκρων Λογικοί AND Ορατότητα 1 1000 1001 1000 Μη ορατό 2 0101 0100 0100 Μη ορατό 3 0000 0000 0000 Ορατό 4 1001 0110 0000 Ακαθόριστο (προς έλεγχο) 5 0001 1000 0000 Ακαθόριστο (προς έλεγχο) Πίνακας 5.1. Παράδειγμα υπολογισμών Χρησιμοποιώντας το λογικό AND, εξετάζονται όλα τα άκρα των ευθυγράμμων τμημάτων με αυτόν τον τρόπο. Στον πίνακα 5.1 παρατίθενται τέτοια παραδείγματα υπολογισμών. Έτσι, αν το λογικό AND είναι (0000), η γραμμή θα είναι ορατή μόνο αν και τα δύο άκρα έχουν κωδικό (0000). ιαφορετικά, είναι πιθανόν να υπάρξει μερική ορατότητα. Σε αυτήν την περίπτωση, η εξέταση των άκρων περνάει σε μια άλλη διαδικασία που καθορίζει τα σημεία τομής με τα όρια του παραθύρου. 5.2.2.2.2 Υπολογισμοί τομών και αποκοπή Ένας από τους απλούστερους τρόπους εύρεσης του σημείου τομής ενός ευθύγραμμου τμήματος και του ορίου του παραθύρου, είναι να λύσουμε τις εξισώσεις που αναπαριστούν και τη γραμμή και το όριο. Για ένα ορθογώνιο παράθυρο που είναι ευθυγραμμισμένο με τους άξονες συντεταγμένων, δεν χρειάζεται να εξετάσουμε και τις τέσσερις πλευρές. Αν προσδιορίσουμε το bit του κώδικα του κάθε άκρου που δεν είναι μηδέν, τότε το όριο (πλευρά) του παραθύρου όπου πιθανώς θα υπάρξει η τομή βρίσκεται ως εξής: για bit1 = 1 πιθανή τομή με = T για bit2 = 1 πιθανή τομή με = B για bit3 = 1 πιθανή τομή με = B για bit4 = 1 πιθανή τομή με = L 16
Η εικόνα 5.11 δείχνει τη διαδικασία για δύο ευθύγραμμα τμήματα. Η τομή βρίσκεται καθορίζοντας τις παραμετρικές εξισώσεις για το ευθύγραμμο τμήμα και το όριο του παραθύρου. C (1000) Τομή με = g Y= γ Τομή με = R D (0010) A(0000) Y= β B(0100) X= L X= X R Τομή με = B Εικόνα 5.11 Απομόνωση των κατάλληλων ορίων του παραθύρου για τους υπολογισμούς των τομών Για ένα ευθύγραμμο τμήμα που ενώνει τα Ρ 1 ( 1, 1 ) και Ρ 2 ( 2, 2 ) οι εξισώσεις είναι: = 1 + t( 2-1 ) (5.10) 0 t 1 = 1 + t( 2-1 ) (5.11) Στα όρια του παραθύρου έχουμε = ορίου = σταθερά ή = ορίου = σταθερά, οπότε το σημείο τομής βρίσκεται υπολογίζοντας την τιμή του t είτε στην εξίσωση 5.10 ή 5.11 και αντικαθιστώντας το στην άλλη εξίσωση, οπότε ανάλογα υπολογίζουμε το ή το της τομής. 17
Αν προκύψει τιμή ή της τομής εκτός των ορίων του παραθύρου, τότε απορρίπτουμε την υπολογισθείσα τομή και επαναλαμβάνουμε με το επόμενο μη μηδενικό bit του κώδικα του άκρου. Παράδειγμα 5.2 Για τα όρια του ορθογωνίου παραθύρου, που δίνονται ως L =2, B =2, R =8, T =8, εξετάστε την ορατότητα των ακόλουθων τμημάτων χρησιμοποιώντας τον αλγόριθμο Gohen-Sutherland και, αν είναι απαραίτητο, αποκόψτε τα μέσα στα κατάλληλα όρια του παραθύρου. Ευθύγραμμο τμήμα AB : A(3, 10) B(6, 12) Ευθύγραμμο τμήμα CD : C(4, 1) D(10, 6) Λύση Βήμα 1. Καθορισμός των κωδικών άκρων των δύο ευθύγραμμων τμημάτων. Ευθύγραμμο τμήμα AB A(3, 10) (1000) B(6, 12) (1000) Λογικό AND (1000) ΜΗ ΟΡΑΤΟ Ευθύγραμμο τμήμα CD C(4,1) (0100) D(10, 6) (0010) Λογικό AND (0000) ΑΚΑΘΟΡΙΣΤΟ Βήμα 2. Αποκοπή του ευθύγραμμου τμήματος CD. (a) Το άκρο C έχει κωδικό (0100). Αφού το bit 2 δεν είναι μηδέν, η τομή θα πρέπει να βρεθεί στο όριο = B = 2. Η παραμετρική εξίσωση της ευθύγραμμου τμήματος CD είναι: 18
= 4 + t(10-4) = 4 + 6t (1) = 1 + t(6-1) = 1 + 5t (2) Αντικαθιστώντας με = 2 στην εξίσωση (2), η τιμή του t γίνεται: t = 1/5 = 0,2 Οπότε: = 4 + 1/5(6) = 5,2 Άρα, το σημείο τομής είναι: I 1 (5,2, 2) (b) Το άκρο D έχει κωδικό (0010). Αφού το bit bit 3 δεν είναι μηδέν, η τομή θα πρέπει να βρεθεί στο όριο = R = 8. Αντικαθιστώντας με = 8 στην εξίσωση (1) έχουμε: 8 = 4 + 6t t = 4/6 = 0,667 και = 1 + 5(2/3) =(3+10)/3 = 4,33 Άρα, το σημείο τομής είναι: Ι 2 (8, 4,33) Αφού και τα δύο Ι 1 και Ι 2 βρίσκονται στα όρια του παραθύρου, οι κωδικοί των άκρων είναι (0000) και (0000) αντίστοιχα. Για αυτό το λόγο, το ευθύγραμμο τμήμα ανάμεσα στα 2 σημεία τομής είναι ορατό. 19
5.2.2.2.3 Υποδιαίρεση μεσαίων σημείων Η υποδιαίρεση μεσαίων σημείων είναι μία χρήσιμη μέθοδος της αριθμητικής ανάλυσης, που μπορεί να χρησιμοποιηθεί εναλλακτικά για την εύρεση του σημείου τομής ανάμεσα στο ευθύγραμμο τμήμα και στα όρια του παραθύρου. Το ευθύγραμμο τμήμα χωρίζεται στο μέσον του και τα δύο τμήματα που προκύπτουν εξετάζονται για ορατότητα και πιθανή αποκοπή. Αν δεν είναι πλήρως ορατό ή μη ορατό, το ευθύγραμμο τμήμα διχοτομείται πάλι και η διαδικασία συνεχίζεται μέχρι η τομή με το όριο του παραθύρου να βρεθεί μέσα στα καθορισμένα πλαίσια ανοχής. Η εικόνα 5.12 δίνει ένα παράδειγμα αυτής της διαδικασίας. Αν τα άκρα του ευθύγραμμου τμήματος είναι Ρ 1 ( 1, 1 ) και P 2 ( 2, 2 ), κάθε μέσο P m ( m, m ) υπολογίζεται με την ακόλουθη έκφραση: m = ( 1 + 2 )/2 m = ( 1 + 2 )/2 (5.12) Η υποδιαίρεση μεσαίων σημείων μπορεί να υλοποιηθεί αποτελεσματικά με hardware, γιατί η διαίρεση με το 2 επιτυγχάνεται με μια απλή μετατόπιση (shift) ενός bit προς τα δεξιά. Για παράδειγμα, το (0100) αποτελεί τη δυαδική αναπαράσταση με 4 bit του αριθμού τέσσερα (4). Μια μετατόπιση προς τα δεξιά δίνει (0010), που παριστάνει τον αριθμό δύο (2). Όταν υλοποιείται με hardware, η διαδικασία υποδιαίρεσης μεσαίων σημείων περιλαμβάνει μόνον ακέραιες τιμές. P 1 Pm 1 Pm 2 P 2 Τομή Εικόνα 5.12 Υποδιαίρεση μεσαίου σημείου 20
Παράδειγμα 5.3 Έστω ένα παράθυρο που ορίζεται από τις συντεταγμένες χαμηλότερης αριστερής γωνίας (2,2) και υψηλότερης δεξιάς γωνίας (8,6). Ένα ευθύγραμμο τμήμα, από το άκρο Α(4, 3) μέχρι το άκρο Β(10, 5), πρέπει να αποκοπεί ως προς το παράθυρο αυτό. Βρείτε τους κωδικούς άκρων της γραμμής και το λογικό AND της τομής τους. Αν χρειαστεί υπολογίστε τα σημεία τομής της γραμμής με τα όρια του παραθύρου χρησιμοποιώντας την μέθοδο υποδιαίρεσης μεσαίων σημείων. Λύση Βάσει των συντεταγμένων των ορίων του παραθύρου, οι κωδικοί άκρων των γραμμών είναι : Α (0000) Β (0010) Το λογικό AND της τομής τους είναι (0000). Άρα η γραμμή πρέπει να ελεγχθεί για αποκοπή. Ο ακόλουθος πίνακας 5.2 εφαρμόζει τη μέθοδο της υποδιαίρεσης μεσαίων σημείων. Όταν είναι διχοτομημένο το ευθύγραμμο τμήμα, εξετάζονται και τα δύο κομμάτια ως προς τα όρια του παραθύρου για περαιτέρω πιθανή υποδιαίρεση. 21
Μέσο Νέο τμήμα 1 (7, 4) (7, 4) (10, 5) 2 (8.5, 4.5) (7, 4) (8.5, 4.5) 3 (7.75, 4.25) (7.75, 4.25) (8.5, 4.5) 4 (8.13, 4.38) (7.75, 4.25) (8.13, 4.38) 5 (7.94, 4.31) (7.94, 4.31) (8.13, 4.38) 6 (8.03, 4.34) (7.94, 4.31) (8.03, 4.34) 7 (7.99, 4.33) Πίνακας 5.2. Παράδειγμα εφαρμογής της μεθόδου υποδιαίρεσης μεσαίων σημείων Εφόσον η συντεταγμένη, στο όριο του παραθύρου, είναι ίση με 8, η τομή μπορεί να προσεγγισθεί με την τιμή (8, 4.33). 5.2.2.3 Σύγκριση των μεθόδων Αποκοπής Γραμμής. Το μέρος της διαδικασίας αποκοπής που παίρνει πιο πολύ υπολογιστικό χρόνο είναι ο υπολογισμός της τομής με τα όρια του παραθύρου. Ο αλγόριθμος του Gohen- Sutherland μειώνει αυτούς τους υπολογισμούς, απορρίπτοντας πρώτα τις γραμμές, που μπορεί να είναι ξεκάθαρα αποδεκτές ή μη αποδεκτές. Κατόπιν, βρίσκεται η τομή με τα όρια του παραθύρου και χρησιμοποιείται για να διασπάσει την αρχική γραμμή σε δύο καινούρια τμήματα που ελέγχονται ξανά για πιθανή ξεκάθαρη αποδοχή ή απόρριψη. Η διαδικασία συνεχίζεται μέχρι να εξετασθούν όλα τα ευθύγραμμα τμήματα, αρχικά και καινούρια. Η υποδιαίρεση μεσαίων σημείων είναι μια ειδική περίπτωση του αλγόριθμου Gohen- Sutherland, όπου ο υπολογισμός της τομής δεν γίνεται με λύση εξίσωσης αλλά με μια μέθοδο προσέγγισης του μέσου. Αυτή η μέθοδος είναι ιδιαίτερα κατάλληλη για υλοποίηση με hardware, επειδή είναι πολύ γρήγορη και αποτελεσματική. 22
Επίσης έχουν αναπτυχθεί και άλλοι αλγόριθμοι για αποκοπή γραμμής, όπως αυτοί των Crus-Beck και των Liang-Barski. 5.2.2.4 Αποκοπή κειμένου Υπάρχουν τρεις διαφορετικές δυνατότητες αποκοπής κειμένου, που αναφέρονται ενδεικτικά στη συνέχεια: 1. Τα γράμματα θεωρούνται εικόνες και στη συνέχεια μπορούν να αποκοπούν. Κ Ε Ι Μ Ε Ν Ο Α Π Ο Κ Ο Π Η Σ 2. Το κείμενο ολόκληρο θεωρείται σαν μια μονάδα και ορίζεται ένα ορθογώνιο που το περιβάλλει. Όταν το περιβάλλον ορθογώνιο περιέχεται μέσα στο παράθυρο, το κείμενο εμφανίζεται, αλλιώς όχι. Κ Ε Ι Μ Ε Ν Ο Α Π Ο Κ Ο Π Η Σ 23
3. Κάθε γράμμα θεωρείται σαν μια μονάδα και ορίζεται ένα ορθογώνιο που το περιβάλλει. Ένα γράμμα εμφανίζεται όταν το ορθογώνιό του είναι πλήρως ορατό, αλλιώς αποκόπτεται. Κ Ε Ι Μ Ε Ν Ο Α Π Ο Κ Ο Π Η Σ 24