3 'ΓΡΑΦΙΚΑ ΚΑΙ ΕΙΚΟΝΙΚΗ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ' Μουστάκας Κ., Παλιόκας Ι., Τσακίρης A., Τζοβάρας Δ.








next

Περιεχόμενα

Πατήστε πάνω στους τίτλους των υποκεφαλαίων ή μεταφερθείτε στην αρχική σελίδα.

Πλοήγηση 


2015

ΚΕΦΑΛΑΙΟ 3: ΓΕΩΜΕΤΡΙΚΟΙ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΙ ΚΑΙ ΠΡΟΒΟΛΕΣ
img
  • 3.1. Εισαγωγή
  • 3.2. Γραμμικοί Μετασχηματισμοί
  • 3.3. Γεωμετρικοί Μετασχηματισμοί Συντεταγμένων
  • 3.4. Ομογενείς Συντεταγμένες
  • 3.5. 3Δ Ομογενείς Μετασχηματισμοί
  • 3.6. Προβολές
  • 3.7. Προτεινόμενες Ασκήσεις και Προβλήματα
  • 3.8. Αναφορές



icon

Σύνοψη

Το παρόν κεφάλαιο είναι θεμελιώδες για τα συστήματα γραφικών. Αποτελεί τη βάση για την υλοποίηση πολλών πιο πολύπλοκων διαδικασιών όπως ο φωτισμός, η προβολή και η συνθετική κίνηση. Αρχικά παρουσιάζονται οι γραμμικοί μετασχηματισμοί και οι ιδιότητές τους. Στη συνέχεια περιγράφονται οι δισδιάστατοι μετασχηματισμοί συντεταγμένων και γίνεται μια εισαγωγή στις ομογενείς συντεταγμένες. Ακολουθεί η ανάλυση των ευρύτατα χρησιμοποιούμενων στην πράξη τρισδιάστατων ομογενών συντεταγμένων και το κεφάλαιο κλείνει με τους μετασχηματισμούς προοπτικής και ορθογραφικής προβολής.

Προαπαιτούμενη γνώση

Βασικό υπόβαθρο στη Γραμμική Άλγεβρα. Ευχέρεια στη Διανυσματική Ανάλυση. Στοιχειώδεις γνώσεις Γεωμετρίας και Τριγωνομετρίας.


3.1. Εισαγωγή

Η κίνηση και γενικότερα η δυναμική είναι σήμερα ένα εγγενές στοιχείο των συστημάτων γραφικών. Έτσι πρέπει να υπάρχει η δυνατότητα να αλλάζουν κάποιες ιδιότητες πολλών εκ των αντικειμένων μιας σκηνής. Για παράδειγμα ένα αυτοκίνητο εν κινήσει «μεταφέρει» και «περιστρέφει» τη γεωμετρία του στον εικονικό κόσμο. Ακόμα είναι δυνατό να χρησιμοποιούνται αντίγραφα ενός αντικειμένου (π.χ. δένδρο) σε διαφορετικές κλίμακες και σε διαφορετικές θέσεις. Το μαθηματικό εργαλείο για την υλοποίηση όλων των παραπάνω παραδειγμάτων είναι οι μετασχηματισμοί, οι οποίοι συνθέτουν μία από τις πλέον θεμελιώδεις έννοιες των συστημάτων γραφικών.


3.2. Γραμμικοί Μετασχηματισμοί

Έστω ένα 3Δ σύστημα συντεταγμένων Σ1, στο οποίο ένα σημείο P εκφράζεται μέσω των συντεταγμένων του (x,y,z). Έστω τώρα ένα δεύτερο σύστημα συντεταγμένων Σ2, στο οποίο το ίδιο σημείο εκφράζεται μέσω των συντεταγμένων (a,b,c), οι οποίες μπορούν να εκφραστούν ως γραμμικός συνδυασμός των συντεταγμένων (x,y,z) του Σ1.

a=w1x+w2y+w3z+t1
b=w4x+w5y+w6z+t2
c=w7x+w8y+w9z+t3 {Εξ. 3.1}

Οι παραπάνω σχέσεις ορίζουν ένα γραμμικό μετασχηματισμό του Σ1 στο Σ2 που μπορεί να γραφεί ως:

abc=w1w2w3w4w5w6w7w8w9xyz+t1t2t3

{Εξ. 3.2}

Υπό την προϋπόθεση ότι ο μετασχηματισμός είναι αντιστρέψιμος, ο γραμμικός μετασχηματισμός του Σ2 στο Σ1 προκύπτει ως:

xyz=w1w2w3w4w5w6w7w8w9-1abc-t1t2t3

{Εξ. 3.3}

Το διάνυσμα t=(t1, t2, t3) αντιστοιχεί στη μεταφορά της αρχής των αξόνων του Σ1, ώστε αυτή να συμπέσει με αυτή του Σ2, ενώ ο πίνακας W, συνήθως, σε επανυπολογισμό των διανυσμάτων βάσης. Στις επόμενες παραγράφους και πιο συγκεκριμένα στους ομογενείς μετασχηματισμούς θα δούμε έναν έξυπνο τρόπο να συνδυάσουμε έναν μετασχηματισμό που απαρτίζεται από έναν 3x3 πίνακα W και ένα διάνυσμα t σε έναν και μόνο πίνακα διάστασης 4x4.


3.3. Γεωμετρικοί Μετασχηματισμοί Συντεταγμένων

Στην παράγραφο αυτή θα συζητήσουμε τους βασικότερους απλούς μετασχηματισμούς, αρχικά στις 2 διαστάσεις και στη συνέχεια θα γενικεύουμε και στις 3 διαστάσεις, περιγράφοντας τις διαφορές που παρουσιάζονται. Οι κύριοι μετασχηματισμοί συντεταγμένων είναι η μεταφορά, η αλλαγή κλίμακας και η περιστροφή.


3.3.1. Μεταφορά

Ο μετασχηματισμός μεταφοράς περιγράφει τη μετακίνηση προς συγκεκριμένη κατεύθυνση κατά συγκεκριμένη απόσταση. Σημαντική πληροφορία για την υλοποίηση του μετασχηματισμού μεταφοράς είναι η ποσότητα της μετακίνησης tx και ty στον άξονα των x και των y αντίστοιχα. Στις 2Δ, ένα σημείο p1=(x,y) μπορεί να μεταφερθεί κατά t=(tx,ty) και το νέο σημείο p2 προκύπτει ως εξής:

p2=p1+t=xy+txty=x+txy+ty

{Εξ. 3.4}

Στην Εικόνα 3.1 παρουσιάζεται ένα παράδειγμα μεταφοράς ενός σχήματος στις δύο διαστάσεις.

pixel

Εικόνα 3.1. Μεταφορά αντικειμένου με διάνυσμα μετατόπισης (6, -1)

Ο μετασχηματισμός μεταφοράς γενικεύεται εύκολα στις τρεις διαστάσεις, όπως περιγράφει η παρακάτω σχέση:

p2=p1+t=xyz+txtytz=x+txy+tyz+tz

{Εξ. 3.5}


3.3.2. Αλλαγή Κλίμακας

Ο μετασχηματισμός αλλαγής κλίμακας επηρεάζει και μεταβάλλει εξ’ ορισμού το μέγεθος των αντικειμένων. Σημαντική πληροφορία για την υλοποίηση του μετασχηματισμού αλλαγής κλίμακας είναι η ποσότητα της μεγέθυνσης ή σμίκρυνσης sx και sy στον άξονα των x και των y αντίστοιχα. Στις 2Δ, ένα σημείο p1=(x,y) μπορεί να κλιμακωθεί με τη χρήση ενός πίνακα κλιμάκωσης S και το νέο σημείο p2 προκύπτει ως εξής:

p2=S·p1=sx00syxy=sx·xsy·y

{Εξ. 3.6}

Στην περίπτωση όπου sx=sy=s, μιλάμε για ομοιόμορφη αλλαγή κλίμακας, όπου η κλιμάκωση λαμβάνει χώρα με τον ίδιο τρόπο και ως προς τους δύο άξονες. Στην περίπτωση αυτή ο πίνακας S μπορεί να αντικατασταθεί με τη βαθμωτή ποσότητα s.

p2=S·p1=s00sxy=s1001xy=s·I·p1=s·p1

{Εξ. 3.7}

Όταν ο συντελεστής κλιμάκωσης έχει τιμή ίση με τη μονάδα, τότε δεν υπάρχει αλλαγή κλίμακας, ενώ μιλάμε για μεγέθυνση ή σμίκρυνση όταν έχει τιμή μεγαλύτερη ή μικρότερη της μονάδας αντίστοιχα. Στην Εικόνα 3.2 παρουσιάζεται ένα παράδειγμα κλιμάκωσης ενός σχήματος στις δύο διαστάσεις.

pixel

Εικόνα 3.2. Κλιμάκωση αντικειμένου με διάνυσμα κλιμάκωσης (3, 2)

Η κλιμάκωση ως μετασχηματισμός πολλαπλασιάζει με ένα συντελεστή τις συντεταγμένες ενός αντικειμένου. Έστω τώρα το μαύρο τετράγωνο στο παρακάτω σχήμα, το οποίο θέλουμε να μετασχηματίσουμε ώστε να συμπίπτει με το κόκκινο τετράγωνο. Με μια πρώτη ματιά παρατηρούμε ότι το μέγεθος του αντικειμένου έχει διπλασιαστεί. Άρα ένας μετασχηματισμός ομοιόμορφης κλιμάκωσης κατά 2 S(2,2) ίσως να μας έδινε την απάντηση στο πρόβλημά μας. Δεν είναι όμως έτσι, διότι ο μετασχηματισμός εφαρμόζεται στις συντεταγμένες κάθε σημείου του αντικειμένου. Έτσι αν εφαρμόσουμε την παραπάνω κλιμάκωση αντί να πάρουμε το επιθυμητό αποτέλεσμα της Εικόνας 3.3, θα πάρουμε αντί αυτού το αποτέλεσμα που φαίνεται στην Εικόνα 3.4.

pixel

Εικόνα 3.3. Κλιμάκωση αντικειμένου με στόχο το διπλασιασμό του μεγέθους του. Δεν είναι σωστή η επιλογή του μετασχηματισμού S(2,2) διότι πέρα από την κλιμάκωση θα έχουμε και μεταφορά του αντικειμένου επειδή αυτό δεν είναι «κεντραρισμένο» στην αρχή των αξόνων.

Για να μπορέσουμε τώρα να εφαρμόσουμε κλιμάκωση θα πρέπει να χρησιμοποιήσουμε σύνθετους μετασχηματισμούς. Πρέπει, δηλαδή, αρχικά να μεταφέρουμε το αντικείμενο στην αρχή των αξόνων, στη συνέχεια να εκτελέσουμε την επιθυμητή κλιμάκωση και τέλος να το επαναφέρουμε στην επιθυμητή θέση. Οι σύνθετοι μετασχηματισμοί θα αναλυθούν σε επόμενη παράγραφο. Ο μετασχηματισμός κλιμάκωσης γενικεύεται εύκολα στις τρεις διαστάσεις, όπως περιγράφει η παρακάτω σχέση:

p2=S·p1=sx000sy000szxyz=sx·xsy·ysz·z

{Εξ. 3.8}

pixel

Εικόνα 3.4. Η κλιμάκωση επιφέρει ταυτόχρονα και μεταφορά σε περίπτωση που ένα αντικείμενο δεν είναι τοποθετημένο στην αρχή των αξόνων


3.3.3. Περιστροφή στις 2Δ

Η περιστροφή στις δύο διαστάσεις περιστρέφει ένα αντικείμενο γύρω από την αρχή των αξόνων. Σημαντική πληροφορία για την υλοποίηση του μετασχηματισμού περιστροφής στις δύο διαστάσεις είναι η γωνία περιστροφής θ. Ακόμα υιοθετούμε τη σύμβαση ότι θετική είναι μία περιστροφή κατά φορά αντίθετη αυτής των δεικτών του ρολογιού. Έστω, λοιπόν, το σημείο p1=(x,y) το οποίο, όπως απεικονίζει η Εικόνα 3.5 πρέπει να περιστραφεί κατά θ μοίρες και να μετασχηματιστεί στο σημείο p2=(a,b).

pixel

Εικόνα 3.5. Περιστροφή κατά θ στις δύο διαστάσεις

Παρατηρώντας την Εικόνα 3.5 και έχοντας υπόψη ότι κατά την περιστροφή το μήκος του διανύσματος Οp παραμένει σταθερό, μπορούμε να εξάγουμε εύκολα τις παρακάτω σχέσεις:

a=p cos(φ+θ)=p (cosφcosθ-sinφsinθ)=xcosθ-ysinθb=p sin(φ+θ)=p (cosφsinθ+sinφcosθ)=xsinθ-ycosθ

{Εξ. 3.9}

Η παραπάνω σχέση μπορεί να εκφραστεί και σε μορφή πίνακα ως εξής:

p2=ab=cosθ-sinθsinθcosθxy=R(θ)·p1

{Εξ. 3.10}

όπου R(θ) ο πίνακας περιστροφής:

R(θ)=cosθ-sinθsinθcosθ

{Εξ. 3.11}

Η παρακάτω εικόνα παρουσιάζει ένα παράδειγμα 2Δ περιστροφής ενός αντικειμένου.

pixel

Εικόνα 3.6. Περιστροφή αντικειμένου κατά θ στις δύο διαστάσεις

Όπως και η κλιμάκωση έτσι και η περιστροφή ως μετασχηματισμός επηρεάζει τις συντεταγμένες ενός αντικειμένου. Έστω τώρα το μαύρο τετράγωνο στο παρακάτω σχήμα, το οποίο θέλουμε να μετασχηματίσουμε στο κόκκινο τετράγωνο. Θέλουμε, δηλαδή, να εκτελέσουμε μία περιστροφή 90ο γύρω από το κέντρο βάρους του. Ένας μετασχηματισμός R(90) θα έδινε τη λύση στο πρόβλημά μας; Η απάντηση είναι όχι, διότι ο μετασχηματισμός εφαρμόζεται στις συντεταγμένες κάθε σημείου του αντικειμένου και η περιστροφή λαμβάνει χώρα γύρω από την αρχή των αξόνων. Έτσι, εφαρμόζοντας την παραπάνω περιστροφή αντί να πάρουμε το επιθυμητό αποτέλεσμα (Εικόνα 3.6), θα πάρουμε αντί αυτού το αποτέλεσμα που απεικονίζεται στην Εικόνα 3.7.

pixel

Εικόνα 3.7. Περιστροφή αντικειμένου κατά 90o γύρω από το κέντρο βάρους του

Για να μπορέσουμε τώρα να εφαρμόσουμε την περιστροφή πρέπει να χρησιμοποιήσουμε σύνθετους μετασχηματισμούς. Πρέπει, δηλαδή, αρχικά να μεταφέρουμε το αντικείμενο στην αρχή των αξόνων στη συνέχεια να εκτελέσουμε την επιθυμητή περιστροφή και τέλος να το επαναφέρουμε στην επιθυμητή θέση.


3.3.4. Περιστροφή στις 3Δ

Η σημαντικότερη θεμελιώδης διαφορά της περιστροφής στις τρεις διαστάσεις σε σχέση με τις δύο είναι ότι στις τρεις διαστάσεις δεν ορίζεται περιστροφή γύρω από σημείο, αλλά μπορεί να οριστεί περιστροφή γύρω από άξονα. Έτσι σημαντική πληροφορία για την υλοποίηση του μετασχηματισμού περιστροφής στις τρεις διαστάσεις είναι η γωνία περιστροφής θ και ο άξονας περιστροφής v.

Για την περίπτωση περιστροφής γύρω από έναν από τους τρεις άξονες βάσης του συστήματος συντεταγμένων τα πράγματα είναι απλά. Θεωρώντας την περίπτωση της περιστροφής γύρω από τον άξονα z, τότε έχουμε πρακτικά μια περιστροφή δύο διαστάσεων, κατά την οποία αλλάζουν οι συντεταγμένες x και y, ενώ παραμένει σταθερή η z. Αυτό μπορεί να μοντελοποιηθεί επεκτείνοντας τον 2x2 πίνακα περιστροφής σε πίνακα 3x3 με τη χρήση του μοναδιαίου πίνακα για την τρίτη διάσταση, όπως περιγράφει η παρακάτω σχέση:

Rz(θ)=cosθ-sinθ0sinθcosθ0001

{Εξ. 3.12}

Κατά αναλογία μπορούν να οριστούν και οι πίνακες που εκτελούν περιστροφή κατά γωνία θ γύρω από τον άξονα των x και y αντίστοιχα.

Rx(θ)=1000cosθ-sinθ0sinθcosθ Ry(θ)=cosθ0-sinθ010sinθ0cosθ

{Εξ. 3.13}


3.3.5. Σύνθετοι 2Δ Μετασχηματισμοί

Πρέπει αρχικά να υπενθυμίσουμε ότι εν γένει είναι σημαντική η σειρά με την οποία εφαρμόζονται οι μετασχηματισμοί. Στις παρακάτω εικόνες απεικονίζονται οι διαφορές στην εφαρμογή με διαφορετική σειρά ενός μετασχηματισμού μεταφοράς t(-3,0) και ενός μετασχηματισμού περιστροφής R(90).

pixel

Εικόνα 3.8. Εφαρμογή μετασχηματισμού μεταφοράς t(-3,0) και έπειτα μετασχηματισμού περιστροφής R(90)

Όταν ένας μετασχηματισμός εφαρμοστεί σε ένα σημείο μίας σκηνής τότε έχουμε ως αποτέλεσμα ένα νέο σημείο στη σκηνή. Στο αποτέλεσμα μπορούν να εφαρμοστούν στη συνέχεια επιπλέον μετασχηματισμοί. Για παράδειγμα έστω ένα αντικείμενο με 100 σημεία, το οποίο θέλουμε να κλιμακώσουμε με τον πίνακα S, και να περιστρέψουμε με τον πίνακα R. Δηλαδή, κάθε σημείο του αντικειμένου θέλουμε να μετασχηματιστεί ως εξής:

p'=R(S·p)

{Εξ. 3.14}

Η πράξη αυτή ισοδυναμεί με δύο πολλαπλασιασμούς πινάκων για κάθε σημείο, άρα για τα 100 σημεία έχουμε 200 πολλαπλασιασμούς πινάκων. Ωστόσο, αντί να πολλαπλασιάσουμε τον πίνακα S με το σημείο p και στη συνέχεια το αποτέλεσμα με το R, μπορούμε να υπολογίσουμε ένα σύνθετο μετασχηματισμό ο οποίος να συμπεριλαμβάνει το R και το S σε έναν πίνακα και να πολλαπλασιάσουμε το αποτέλεσμα με όλα τα σημεία του αντικειμένου. Στην περίπτωση αυτή έχουμε 100 πολλαπλασιασμούς πινάκων συν 1 για τον υπολογισμό του σύνθετου μετασχηματισμού. Άρα έχουμε:

p'=R(S·p)=(R·s)p=M·p

{Εξ. 3.15}

pixel

Εικόνα 3.9. Εφαρμογή μετασχηματισμού περιστροφής R(90) και έπειτα μετασχηματισμού μεταφοράς t(-3,0)

Εδώ πρέπει να προσέξουμε ότι ο πολλαπλασιασμός πινάκων δεν έχει την αντιμεταθετική ιδιότητα, οπότε έχει σημασία η σειρά με την οποία πολλαπλασιάζονται οι πίνακες. Επομένως, όταν θέλουμε να εφαρμόσουμε διαδοχικά ένα σύνολο μετασχηματισμών Μ1, Μ2,…, Μn, πρέπει να υπολογίσουμε το σύνθετο πίνακα πολλαπλασιάζοντας με αντίστροφη φορά:

M=Mn·...·M2·M1

{Εξ. 3.16}

Τι γίνεται, όμως, όταν θέλουμε στο σύνθετο μετασχηματισμό μας να εφαρμόσουμε και μεταφορά; Στην περίπτωση αυτή, δυστυχώς, η μεταφορά δεν μπορεί να εκφραστεί ως γραμμικός συνδυασμός των συντεταγμένων του σημείου, δηλαδή με την παρακάτω μορφή:

x'p=axp+bypy'p=cxp+dyp

{Εξ. 3.17}

Η μεταφορά ας θυμηθούμε ότι απλώς προσθέτει μία ποσότητα σε κάθε συντεταγμένη:

x'p=xp+txy'p=yp+ty

{Εξ. 3.18}

Συμπερασματικά δεν μπορεί να συμπεριληφθεί σε έναν σύνθετο μετασχηματισμό όπως περιγράφηκε παραπάνω. Τη λύση στο πρόβλημα αυτό δίνουν οι ομογενείς συντεταγμένες, οι οποίες περιγράφονται αναλυτικά στην επόμενη παράγραφο.