ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΕΞΟΧΙΚΗΣ ΚΑΤΟΙΚΙΑΣ ΜΕ ΧΡΗΣΗ OpenGL Περιστερίδου Καλλιόπη

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΕΞΟΧΙΚΗΣ ΚΑΤΟΙΚΙΑΣ ΜΕ ΧΡΗΣΗ OpenGL Περιστερίδου Καλλιόπη"

Transcript

1 ΤΕΙ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΕΞΟΧΙΚΗΣ ΚΑΤΟΙΚΙΑΣ ΜΕ ΧΡΗΣΗ OpenGL Περιστερίδου Καλλιόπη ΣΕΠΤΕΜΒΡΙΟΣ 2010 ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ Παπαδημητρίου Στέργιος Εκπονηθείσα πτυχιακή εργασία απαραίτητη για την κτήση του βασικού πτυχίου

2 Πρόλογος Η πτυχιακή εργασία είναι σχεδιασμένη με την χρήση της ΟρβηΘΙ η οποία είναι μία βιβλιοθήκη γραφικών. Στην συγκεκριμένη εργασία θα δούμε μία ξύλινη εξοχική κατοικία η οποία είναι στο δάσος. Αρχίσει με νυχτερινό τοπίο και σιγά σιγά καθώς ξημερώνει θα βλέπουμε και το εσωτερικό της κατοικίας. Καθ όλη τη διάρκεια της αναπαραγωγής της εφαρμογής ακούγεται και μουσική καθώς και πέφτει χιόνι. Αφού ολοκληρωθεί η περιήγηση στον εσωτερικό χώρο του σπιτιού θα ανοίξει η πόρτα για θα δούμε και τον εξωτερικό χώρο και το εξωτερικό τοπίο. Για αρχή για γίνει επεξήγηση της ΟρβηΘΙ με λίγα λόγια σαν θεωρητικό κομμάτι καθώς και για τις εντολές, τις συναρτήσεις, τα αντικείμενα και άλλες χρήσιμες πληροφορίες οι οποίες χρειάστηκαν για την υλοποιήσει αυτής της εργασίας. Στο τέλος θα δοθεί το πρόγραμμα ακριβώς όπως γράφτηκε μαζί με λίγα λόγια για να γίνει η λεπτομερή περιγραφή κάθε ενότητας του προγράμματος. Η πτυχιακή αυτή έγινε για να κατανοηθεί η ΟρβηΘΙ, να δούμε που την χρησιμοποιούμε και για να δημιουργήσουμε ένα όμορφο περιβάλλον με την χρήση της. Σελίδα 2 από 342

3 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Πίνακας περιεχομένων Πρόλογος...2 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ... 2 Ευχαριστίες...7 Εισαγωγή...8 Κεφάλαιο 1 Εισαγωγή στην OpenGL Τι είναι η OpenGL; (Open Source Graphics Library)... 9 Τι είναι ένα API συσκευή;...11 Τι είδους API είναι η OpenGL; Ποια είναι μερικά οφέλη για η OpenGL; Τι άλλες πληροφορίες που χρειάζεται να ξέρω;...12 Τι είναι ένα παράδειγμα για την OpenGL; Τι είναι το Direct3D; Είναι OpenGL; Τ ύποι δεδομένων OpenGL Βιβλιοθήκες OpenGL graphics pipeline Εντολές και συναρτήσεις Πρωταρχικά Αντικείμενα Γραφικών (Graphics Primitives) Στοιχειώδη αντικείμενα γραφικών Σύνθετοι τύποι γραμμών Πολύγωνα Συνεχόμενη σχεδίαση (strips and fans) Κεφάλαιο 2 Μετασχηματισμοί Αντικειμένων Γεωμετρικοί Μετασχηματισμοί Αντικειμένων Αφινικοί Μετασχηματισμοί (Affine Transformations) Ορθογώνιοι Μετασχηματισμοί Ομοιογενής Φορμαλισμός (homogeneous coordinates) Σύνθεση Μετασχηματισμών (Concatenation)...37 Αντίστροφοι Αφινικοί Μετασχηματισμοί...38 Ειδικές περιπτώσεις Περιστροφής Κεφάλαιο 3 Μετασχηματισμοί στην OpenGL Μετακίνηση Περιστροφή Κλίμακα Τοποθέτηση κάμερας Εφαρμογή των μετασχηματισμών στην OpenGL Σελίδα 3 από 342

4 3.6 Στοίβα πινάκων Μετασχηματισμός προβολής Κεφάλαιο 4 Υφές(textures) Απεικόνιση Υφής και Ανάγλυφου Απεικόνιση Χάρτη Υφής (Image Mapping) Συναρτήσεις Απεικόνισης Planar Mapping Cylindrical Mapping Spherical Mapping Shrink Mapping (προσανατολισμένη απεικόνιση) Box Mapping (απεικόνιση κύβου): Δημιουργώντας την υφή Παραμετροποίηση μιας υφής Mipmapping Μη ισοτροπικό φιλτράρισμα υφών (Anisotropic Filtering) Συνδυασμός χρώματος υφής και χρώματος αντικειμένου Μετασχηματισμοί συντεταγμένων υφής...63 Κεφάλαιο 5 Σκιές και Ανακλάσεις Ανακλάσεις στην OpenGL Σκιές με προβολή O stencil buffer Κεφάλαιο 6 Το εκτελέσιμο πρόγραμμα Christmas Tree.cpp αρχείο CScene.cpp...86 GdBase.cpp GdBlendedObject.cpp GdCamera.cpp GdCube.cpp GdCylinder.cpp GdFace.cpp GdFrame.cpp GdLensFlare.h.cpp GdLight.cpp GdMotion.cpp Σελίδα 4 από 342

5 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης ΟόΜοίΙοπΒ8ρίΙπθ.ορρ ΟάΜονθ8όίθ.ορρ ΟάΟ^θοί.ορρ ΟάΡ8ΓίΙοίθ.ορρ ΘάΡοΙπΙορρ ΟάΡπβη.ορρ ΟάΡγΓ8ηΙάθ..ορρ ΟάΟϋ8ά.ορρ Θά8ή8ρθ.ορρ Οά8ί8ΓΟοπθ.ορρ ΟάΤθχΙ.ορρ ΟάΤΓϋΠθ8ίθάΟοπθ.ορρ ΟάΤΓϋΠθ8ίθάΡΓΙ8η.ορρ ίοό8ί.ορρ Ο8οθπθ.Ιί άΒ8βθ.ή ΟόΒίθπάθάΟ^θοί.ή Θάθ8ΠθΓ8.ή ΘάΟοπθ.ή ΘάΟϋόθ.ή ΟάΟγΙΙπάθΓ.ή ΟάΡ8θθ.Ιι ΘάΡΓ8Πθ.ή ϋάιθπβρ^γθ.ή Οάϋςήί.ή ΘάΜοίΙοπ.ή ΟόΜΟίΙοπΒ8ρίΙπθ.ή ΘάΜονθ8όίθ_ή ΟάΟ^θοί.ή ΟάΡ8ΓίΙοίθ.ή ΘάΡοΙπί.ή ΘάΡΓΙβη.ή Σελίδα 5 από 342

6 GdPyramide.h GdQuad.li GdShape.h GdStarcone.h GdText.li GdTruncatedCone.h GdTruncatedPrism.h Global.h Σελίδα 6 από 342

7 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Ευχαριστίες Με την ολοκλήρωση της παρούσας πτυχιακής εργασίας, νοιώθω την ανάγκη να ευχαριστήσω κάποιους ανθρώπους οι οποίοι συνετέλεσαν με τον δικό τους τρόπο σε όλη αυτή την πορεία. Αρχικά θέλω να πω ένα μεγάλο ευχαριστώ στον καθηγητή κύριο Αναστάσιο Μαρκουλίδη, ο οποίος ήταν ο αρχικά επιβλέπον αυτής της εργασίας, πρώτον για την ευκαιρία που μου έδωσε να δουλέψω κοντά του, την καθοδήγησή του και την εμπιστοσύνη του προς το πρόσωπό μου, και φυσικά για την μεγάλη βοήθεια που μου προσέφερε ώστε να υλοποιηθεί η εργασία μου. Στη συνέχεια της εργασία συνεργάστηκα με τον καθηγητή κύριο Παπαδημητρίου Στέργιο τον οποίο ευχαριστώ για την μεγάλη βοήθειά του καθώς και γιατί με δέχτηκε ώστε να μπορέσω να τελειώσω με επιτυχία το θέμα που μου δόθηκε. Κλείνοντας, θα ήμουν τουλάχιστον αγνώμων αν δεν έλεγα το μεγαλύτερο ευχαριστώ στους γονείς μου για τον τρόπο που με μεγάλωσαν, για τη στήριξή τους και για την εμπιστοσύνη που μου έδειχναν πάντα, ακόμα και όταν ούτε εγώ η ίδια πίστευα στον εαυτό μου, για την ψυχολογική και οικονομική τους βοήθεια όλα τα χρόνια των σπουδών μου. Όπως επίσης και τον σύζυγο μου που έκανε μεγάλη υπομονή ώσπου να τελειώσω τις σπουδές μου και με βοήθησε πάρα πολύ κυρίως δίνοντας μου δύναμη και θέληση για να συνεχίσω. Σελίδα 7 από 342

8 Εισαγωγή Σ αυτή την πτυχιακή θα δούμε πως μπορούμε να σχεδιάσουμε μια εξοχική κατοικία καθώς το εσωτερικό και εξωτερικό της περιβάλλον. Για αρχή στο πρώτο μας κεφάλαιο θα γνωρίσουμε την OpenGL, τους τύπους δεδομένων της, τις βιβλιοθήκες της και άλλα τα οποία είναι χρήσιμα στο να την κατανοήσουμε και να μπορέσουμε να την χρησιμοποιήσουμε. Στη συνέχεια καθώς πηγαίνουμε στο δεύτερο κεφάλαιο θα δούμε τους μετασχηματισμούς των αντικειμένων και στο τρίτο κεφάλαιο θα γνωρίσουμε τους μετασχηματισμούς στην OpenGL, συγκεκριμένα την μετακίνηση, την περιστροφή ακόμη και την τοποθέτηση της κάμερας, την στοίβα των πινάκων και άλλα πολλά. Στο τέταρτο κεφάλαιο θα μας απασχολήσουν οι υφές, από την δημιουργία τους, την απεικόνιση τους, την παραμετροποίηση τους κ.α. Σκιές και ανακλάσεις θα δούμε καθώς προχωράμε παρακάτω, στο πέμπτο κεφάλαιο της εργασίας. Θα γίνει μια λεπτομερή ανάλυση στις ανακλάσεις και στις σκιές ακόμη και στο stencil buffer. Έτσι κάπως τελειώνει και το θεωρικό μέρος της πτυχιακής εργασίας και έρχεται το έκτο κεφάλαιο, θα δούμε το πρόγραμμα που γράφτηκε ώστε να γίνει ο σχεδιασμός του περιβάλλοντος με την κατοικία. Σε κάποιες εντολές δίνονται κ εξηγήσεις ώστε να γίνει ποιο κατανοητό κ πρόγραμμα. Σελίδα 8 από 342

9 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Κεφάλαιο 1 Εισαγωγή στην OpenGL Για αρχή θα γίνει μία λεπτομερής αναφορά για το τι ακριβώς είναι η OpenGL, που είναι χρήσιμη, τα χαρακτηριστικά της, τις βιβλιοθήκες, τις εντολές και πολλά άλλα μαζί με ένα παράδειγμα για το πώς είναι ένα τυπικό πρόγραμμα. 1.1 Τι είναι η OpenGL; (Open Source Graphics Library) Η OpenGL είναι βιβλιοθήκη γραφικών ανεξάρτητη από την πλατφόρμα (vs Direct3D - windows only). Με τον όρο OpenGL δεν αναφερόμαστε σε μια συγκεκριμένη βιβλιοθήκη αλλά σε ένα πρότυπο υλοποίησης βιβλιοθηκών σχεδίασης γραφικών. Εμπεριέχει δηλαδή το σύνολο των συναρτήσεων που πρέπει να υλοποιεί μία βιβλιοθήκη γραφικών προκειμένου να είναι συμβατή με αυτό. Το πρότυπο αυτό λοιπόν καθορίζει μια προγραμματιστική διεπιφάνεια (application programming interface ή API). Είναι Open Source και χρησιμοποιείται για τη δημιουργία 3D γραφικών. Επίσης είναι πολύ διαδεδομένη για παραγωγή 3Δ γραφικών όπως σε video games, ταινίες, κτλ. Είναι προφανές ότι δεν υπάρχει περιορισμός ως προς τη γλώσσα προγραμματισμού στην οποία θα υλοποιηθεί το πρότυπο της OpenGL. Ενδεικτικά αναφέρουμε την ύπαρξη βιβλιοθηκών σε γλώσσες προγραμματισμού Fortran και C. Εφόσον με το όρο OpenGL δεν αναφερόμαστε σε μια συγκεκριμένη βιβλιοθήκη αλλά σε ένα πρότυπο που ορίζει τη λειτουργικότητα μιας βιβλιοθήκης σχεδίασης, μπορούμε να ακολουθήσουμε τις ίδιες συμβάσεις σε όλες τις υλοποιήσεις του προτύπου (τις ίδιες εντολές). Αυτό σημαίνει ότι, εάν βασιστούμε στο πρότυπο της OpenGL, ο κώδικας που συντάσσουμε είναι ανεξάρτητος πλατφόρμας (platform independent) και μπορεί να εκτελεστεί σε ευρεία γκάμα περιβαλλόντων προγραμματισμού χωρίς ριζική τροποποίηση της δομής του. Σελίδα 9 από 342

10 Οι βιβλιοθήκες των περισσότερων νέων μεταγλωττιστών εμπεριέχουν (ή υπάρχει η δυνατότητα να ενσωματωθεί σε αυτούς) μια υλοποίηση της OpenGL. Η OpenGL στην ουσία είναι ένα σύνολο εντολών (API) που μας επιτρέπει την δημιουργία τριδιάστατων γραφικών. Δεν είναι γλώσσα προγραμματισμού αλλά μπορεί να χρησιμοποιηθεί με μια πληθώρα γλωσσών προγραμματισμού (C, C++, Java, Visual Basic, Delphi και άλλες) και σε μια πληθώρα λειτουργικών συστημάτων (Windows, Unix, Linux, Mac OS). Είναι σχεδιασμένη ώστε να είναι ανεξάρτητο από το υλικό (hardware) και από λειτουργικό σύστημα - παραθυρικό περιβάλλον. Δηλαδή μας παρέχει ένα σύνολο εντολών για την επικοινωνία με το υλικό και υποστηρίζεται από όλες τις εταιρείες κατασκευής καρτών γραφικών. Είναι το τρέχον standard παρά τις προσπάθειες της Microsoft με το DirectX. Για αυτό το λόγο χρησιμοποιείται ευρέως σε πολλές εφαρμογές και παιχνίδια. Προσφέρει πάνω από 300 εντολές για δημιουργία γραφικών και δρα σαν ένα ενδιάμεσο στρώμα ανάμεσα στην εφαρμογή και στη κάρτα γραφικών που θα αναλάβει τα απεικονίσει τα γραφικά στην οθόνη, κρύβοντας λεπτομέρειες υλοποίησης του υλικού και των οδηγών του. [28] Εικόνα 1.1: Οδηγοί γραφικών [28] Σελίδα 10 από 342

11 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Προγράμματα που χρησιμοποιούν OpenGL μπορούν να τρέξουν και χωρίς επιταχυντή γραφικών (3D graphics card), θα είναι όμως πολύ πιο αργά και πιθανώς να μην υποστηρίζουν όλες τις λειτουργίες της OpenGL. Είναι το πρώτο ευρέως διαδεδομένο API για γραφικά. Η OpenGL αναπτύχθηκε απο την εταιρία Silicon Graphics το Το OpenGL είναι μια μηχανή καταστάσεων (state machine) με την έννοια ότι είμαστε διαρκώς σε μια κατάσταση μέχρι με μια εντολή να μεταβούμε σε κάποια άλλη. Για παράδειγμα, όταν χρωματίζουμε αντικείμενα, μπορούμε να θέσουμε το χρώμα σε κόκκινο, κίτρινο κ.α. και θα χρησιμοποιούμε το ίδιο χρώμα συνέχεια, μέχρι να ορίσουμε ένα καινούριο χρώμα. Η OpenGL αντιπροσωπεύει την Open Graphics Βιβλιοθήκη και αποτελείται από περίπου 150 διαφορετικές εντολές. Η OpenGL είναι ένα API που χρησιμοποιείται συνήθως για ένα πλήθος εφαρμογών και συσκευών σε έναν υπολογιστή. Κυριότερα χαρακτηριστικά της είναι: Μόνο για τον σχεδιασμό δεν κάνει αυτόματους υπολογισμούς φυσικής/μαθηματικών κτλ Δημιουργία ενός νέου παραθύρου και σχεδιασμός σε αυτό Στοχεύει στον σχεδιασμό εικόνας σε πραγματικό χρόνο Εκμεταλλεύεται τις δυνατότητες του υλικού (hardware) όπου είναι δυνατόν (Graphics Card Acceleration). Δουλεύει με States - καταστάσεις Συμφωνήθηκε και χρησιμοποιείται από τις μεγαλύτερες εταιρείες. Τι είναι ένα API συσκευή; Μια συσκευή API είναι ένας τρόπος για να δημιουργήσει το λογισμικό που χρησιμοποιεί εφαρμογές. Είναι μια καθορισμένη μέθοδο που μπορεί να κάνει την έξοδό της δημιουργίας λογισμικού πολύ ευκολότερη και επιτρέπει την καλύτερη ποιότητα των γραφικών, τόσο δισδιάστατο και τρισδιάστατο. Σελίδα 11 από 342

12 Τι είδους API είναι η OpenGL; Η OpenGL είναι ένα API που ειδικεύεται στην προσέγγιση των γραφικών, κυρίως τρισδιάστατα γραφικά, στη ζωή. Ένας τεράστιος αριθμός των αιτήσεων που εξαρτώνται από την χρήση και το OpenGL. Είναι ένας αποτελεσματικός τρόπος για την εξοικονόμηση χρημάτων και χρόνου κατά τη δημιουργία λογισμικού. Ποια είναι μερικά οφέλη για η OpenGL; Επειδή η OpenGL χρησιμοποιείται ευρέως από πολλούς διαφορετικούς φορείς ανάπτυξης λογισμικού, είναι πολύ πιο ευκολότερο να εφαρμοστεί. Επιπλέον, η OpenGL είναι χρονοβόρα δοκιμάζεται, αλλάζει συνεχώς προς το καλύτερο και θα μπορεί να χρησιμοποιηθεί σε ένα πλήθος διαφορετικών τρόπων. Τι άλλες πληροφορίες που χρειάζεται να ξέρω; Αν είστε δημιουργός του υλικού, οι άδειες που θα πρέπει να λαμβάνεται πριν αρχίσει να χρησιμοποιεί OpenGL. Το ίδιο δεν ισχύει και για εκείνους που απλά θέλουν τη μέθοδο λογισμικού. Τι είναι ένα παράδειγμα για την OpenGL; Ένας αριθμός των ηλεκτρονικών παιχνιδιών χρησιμοποιούν η OpenGL μέθοδος για γραφικά. Αυτά τα παιχνίδια περιλαμβάνουν δημοφιλείς τίτλους όπως Doom 3, World of Warcraft, και το Quake σειρά. Τι είναι το Direct3D; Είναι OpenGL; Για να ανταγωνιστούν την OpenGL προϊόντος, η Microsoft γίνει δικό τους γραφικά μέθοδος ονομάζεται Direct3D. Με πολλούς τρόπους, Direct3D είναι η ίδια μέθοδος που είναι OpenGL. Ωστόσο, υπάρχουν σημαντικές διαφορές μεταξύ των δύο, και δεν είναι απλά διαφορετικά ονόματα για το ίδιο προϊόν. Σελίδα 12 από 342

13 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης 1.2 Τύποι δεδομένων OpenGL Χάριν ομοιομορφίας, και για να μπορέσει να υποστηρίξει διαφορετικές πλατφόρμες, η OpenGL ορίζει μια σειρά από τύπους δεδομένων οι κυριότεροι των οποίων φαίνονται στο παρακάτω πίνακα: Τύπος δεδομένων OpenGL Ορίζεται ως Αντιστοιχία με τύπο δεδομένων στη C GLbyte Ακέραιος 8-bit signed char b GLshort Ακέραιος 16-bit short s GLint Ακέραιος 32-bit int i GLdouble GLubyte GLushort GLuint Κινητής υποδιαστολής 64- bit Θετικός 8-bit Θετικός 16-bit Θετικός 32-bit ακέραιος ακέραιος ακέραιος double unsigned char unsigned short unsigned int GLchar Χαρακτήρας 8-bit char - GLfloat GLboolean Κινητής υποδιαστολής 32- bit Θετικός 8-bit ακέραιος float unsigned char Πίνακας 1:Τύποι δεδομένων Επίθεμα H OpenGL εγγυάται ότι για παράδειγμα ένας GLShort αριθμός θα έχει εύρος 16-bit ανεξάρτητα αν το λειτουργικό σύστημα είναι Windows, Unix ή κάποιο άλλο. Το επίθεμα είναι το γράμμα που βρίσκουμε στο τέλος μιας OpenGL εντολής και που δείχνει τον τύπο δεδομένων των παραμέτρων. d ub us ui f Σελίδα 13 από 342

14 1.3 Βιβλιοθήκες Στην ενότητα αυτή περιγράφουμε τις κατηγορίες βιβλιοθηκών που συναντά κανείς σε υλοποιήσεις της OpenGL, καθώς και συμβάσεις σε ό,τι αφορά το συμβολισμό εντολών και σταθερών. α) Βασική βιβλιοθήκη (OpenGL core library): H βασική βιβλιοθήκη της OpenGL περιέχει τις κύριες εντολές σχεδίασης. Όλες οι εντολές της βιβλιοθήκης αυτής διακρίνονται από το πρόθεμα g l. Πολλές από τις συναρτήσεις της δέχονται προκαθορισμένα ορίσματα (συμβολικές σταθερές) τα οποία έχουν οριστεί στη βιβλιοθήκη και αντιστοιχούν σε διάφορες παραμέτρους ή καταστάσεις λειτουργίας. Κατά σύμβαση, οι σταθερές αυτές ξεκινούν με το πρόθεμα GL_. β) OpenGL Utility Library (GLU): Περιλαμβάνει συναρτήσεις που εκτελούν σύνθετους αλγορίθμους όπως π.χ. τον καθορισμό μητρώων προβολής και το σχηματισμό σύνθετων καμπυλών και επιφανειών. Κάθε υλοποίηση της OpenGL εμπεριέχει τη βιβλιοθήκη GLU. Όλες οι εντολές της βιβλιοθήκης GLU ξεκινούν με το πρόθεμα glu. γ) OpenGL Utility Toolkit (GLUT): Όπως αναφέραμε το πρότυπο της OpenGL είναι ανεξάρτητο πλατφόρμας. Ωστόσο μια αυτονόητη απαίτηση ενός προγραμματιστή είναι να έχει τη δυνατότητα να δει το αποτέλεσμα των προγραμμάτων του αλλά και να έχει δηλαδή τη δυνατότητα αλληλεπίδρασης με αυτό. Χρειάζεται δηλαδή εντολές εισόδου-εξόδου. Ωστόσο οι εντολές αλληλεπίδρασης δεν είναι ανεξάρτητες πλατφόρμας και για το λόγο αυτό οι προγραμματιστές σε OpenGL χρησιμοποιούν μία ακόμη βιβλιοθήκη που τους προσφέρει εντολές εισόδου-εξόδου. Μία από τις βιβλιοθήκες που προσφέρει τη λειτουργικότητα αυτή είναι το OpenGL Utility Toolkit (GLUT). Η βιβλιοθήκη αυτή περιλαμβάνει εντολές απεικόνισης παραθύρων στην οθόνη, δημιουργίας menus, διαχείρισης γεγονότων κλπ. Όλες οι εντολές της ξεκινούν με το πρόθεμα glut. Σελίδα 14 από 342

15 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης 1.4 OpenGL graphics pipeline Σε αυτή την ενότητα θα δούμε σχηματικά τα βήματα που κάνει η OpenGL από την στιγμή που πάρει τις εντολές γραφικών από την εφαρμογή μας μέχρι την στιγμή δημιουργίας της τελικής εικόνας (rendered image). Εικόνα 1.2: Δημιουργία τελικής εικόνας [28] H OpenGL χρησιμοποιεί μια μηχανή καταστάσεων (state machine) για να επικοινωνεί με την εφαρμογή. Σε αυτή την μηχανή καταστάσεων η OpenGL παραμένει διαρκώς σε μια κατάσταση μέχρι να αλλάξει η εφαρμογή την κατάσταση. Παράδειγμα αν θέσουμε το χρώμα που θα χρησιμοποιεί η OpenGL για να ζωγραφίσει ένα μοντέλο, το χρώμα θα παραμείνει στη μνήμη και θα χρησιμοποιείται μέχρι να το αλλάξουμε ή να κλείσουμε την εφαρμογή. Εφόσον λοιπόν η εφαρμογή καθορίσει το περιβάλλον που θα χρησιμοποιήσει η OpenGL για να απεικονίσει το μοντέλο μας (χρώματα, υφές, πηγές φωτός, κάμερα κλπ), περνάει στο πρώτο στάδιο κατά το οποίο θα μετασχηματίσει και θα φωτίσει (transform and lighting) τα σημεία(vertices) του μοντέλου. Στην συνέχεια η OpenGL περνά στο στάδιο της ψηφιοποίησης το οποίο λαμβάνει όλες τις πληροφορίες και την γεωμετρία από το προηγούμενο στάδιο (του μετασχηματισμού) και παράγει την τελική, ψηφιακή, εικόνα. Η εικόνα αντιγράφεται στην μνήμη του frame buffer και φτάνει έτσι στην οθόνη του υπολογιστή. [28] Αυτή η ακολουθία βημάτων που ακολουθεί η OpenGL για να απεικονίσει το μοντέλο λέγεται graphics pipeline (διασωλήνωση). Σελίδα 15 από 342

16 1.5 Εντολές και συναρτήσεις main.cpp Στο αρχείο main.cpp η main ξεκινά με τη συνάρτηση glutinit(). Η glutinit() αρχικοποιεί τη βιβλιοθήκη glut η οποία κάνει το προγραμματισμό για τη δημιουργία του παραθύρου πιο εύκολο και μεταφέρσιμο. Η glutinitdisplaymode() με την οποία επιλέγουμε αν θα έχουμε χρώμα κατά το μοντέλο RGB (κόκκινο- πράσινο-μπλε) ή με παλέτα, αν θα έχουμε μονό ή διπλό buffer, και αν θα έχουμε διάφορους άλλους buffer (βάθους, κτλ). Στο παράδειγμά μας με τις παραμέτρους GLUT_RGBA GLUT_DOUBLE επιλέγουμε να έχουμε χρώμα κατά το μοντέλο κόκκινο- πράσινο-μπλε και διπλό buffer. Εδώ πρέπει να αναφέρουμε πώς αναπαριστάται το χρώμα στο μοντέλο κόκκινο - πράσινο - μπλε. Στο μοντέλο αυτό κάθε χρώμα είναι ένας γραμμικός συνδυασμός των τριών βασικών χρωμάτων: κόκκινο, πράσινο, μπλε. Το κάθε χρώμα παίρνει τιμές από 0 έως 255, δηλαδή 256 τιμές, άρα για να το αποθηκεύσουμε χρειαζόμαστε 28 τιμές = 8 bits = 1 byte. Οπότε και για τα τρία χρώματα χρειαζόμαστε 3 bytes. Αν επιπλέον αποθηκεύουμε και διαφάνεια (παράγοντας άλφα (Α) ) θα χρειαστούμε ένα byte επιπλέον. Τότε λέμε ότι έχουμε RGBA μοντέλο. Όσον αφορά τη χρήση διπλού buffer (double buffering), αυτό χρησιμοποιείται για να αποφύγουμε το «τρεμόπαιγμα» (flickering) της σκηνής όταν έχουμε κίνηση. Αυτό επιτυγχάνεται ως εξής: Έχουμε δύο buffers στους οποίους «ζωγραφίζουμε» τη σκηνή μας. Ο ένας δείχνεται στο χρήστη όσο εμείς ζωγραφίζουμε στον άλλο. Ύστερα με μια εντολή οι δύο buffer αλλάζουν ρόλους και εμείς ζωγραφίζουμε πλέον στον buffer που πριν από λίγο έβλεπε ο χρήστης. Με τη χρήση της τεχνικής αυτής το κάθε καρέ δείχνεται μόνο όταν είναι πλήρως ζωγραφισμένο. Ο χρήστης του προγράμματός μας δε βλέπει ποτέ ένα ημιτελές καρέ. glutinitwindowsize(x,y); Η glutinitwindowsize μας λέει πόσα pixel θα έχει πλάτος και ύψος το παράθυρο μας. glutinitwindowposition(x,y); Σελίδα 16 από 342

17 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Με την glutinitwindowposition το τοποθετούμε στην οθόνη. Οι συντεταγμένες οθόνης ξεκινάνε από την πάνω αριστερά γωνία (0,0) και αυξάνονται προς τα κάτω και δεξιά, π.χ. (50,50). Αντίθετα στην OpenGL οι συντεταγμένες ξεκινάνε (0,0) στην κάτω αριστερή γωνία και αυξάνονται προς τα πάνω και δεξιά, όπως φαίνεται στο ακόλουθο σχήμα. Συντεταγμένες κατά ΟρβηΘΙ Εικόνα 1.3: Συντεταγμένες glutcreatewindow Τέλος, αφού έχουμε επιλέξει το μέγεθος και τη θέση του παραθύρου το δημιουργούμε με την glutcreatewindow. Το αλφαριθμητικό που παίρνει σαν παράμετρος είναι ο τίτλος που θα έχει το παράθυρο. glutmamloop0 Η συνάρτηση glutmainloop0 εκτελεί συνεχώς ένα βρόχο που τερματίζει όταν κλείσουμε το παράθυρο και στον οποίο καλούνται οι συναρτήσεις. glmatrixmode(gl_projection); glloadidentity(); Για να κατανοήσουμε τι κάνουν οι εντολές αυτές πρέπει πρώτα να εμβαθύνουμε λίγο στη λειτουργία του OpenGL. Το OpenGL αποθηκεύει πληροφορίες για τους μετασχηματισμούς ^ των αντικειμένων, ^ των υφών και ^ των προβολών Σελίδα 17 από 342

18 σε πίνακες. Με την εντολή glmatrixmode καθορίζουμε σε ποιον από τους πίνακες αυτούς θα αναφέρονται οι μετασχηματισμοί που θα ακολουθήσουν. Με το GL_PROJECTION αναφερόμαστε στον πίνακα για τους μετασχηματισμούς προβολών. Η εντολή glloadidentity φορτώνει το μοναδιαίο πίνακα στον πίνακα που αναφερόμαστε glcolor3f(x, y, z); Με την εντολή glcolor3f(1.0, 0.5, 0.2); θέτουμε το χρώμα που θέλουμε να χρησιμοποιήσουμε. Οι παράμετροι της glcolor3f είναι πραγματικοί αριθμοί από 0.0 έως 1.0 που καθορίζουν την ένταση των χρωμάτων κόκκινο, πράσινο, μπλε με τη σειρά που εμφανίζονται. 1.6 Πρωταρχικά Αντικείμενα Γραφικών (Graphics Primitives) Τα πιο απλά αντικείμενα γραφικών αποτελούν τα σημεία (points) και τα ευθύγραμμα τμήματα (lines). Με την σύνθεση των παραπάνω προκύπτουν πολύπλοκα αντικείμενα που αποτελούν, επίσης, πρωταρχικά αντικείμενα σχεδίασης. Για τον ορισμό και την σχεδίαση των αντικειμένων γραφικών χρησιμοποιείται η έννοια του vertex (κορυφή γεωμετρικού αντικειμένου) το οποίο δηλώνει ένα «ουσιώδες» σημείο για την περιγραφή του αντικειμένου glvertex*( ) Κάθε αντικείμενο γραφικών έχει κάποιες ιδιότητες με τις οποίες παρουσιάζεται στην οθόνη ή το διαχειρίζεται το σύστημα. Οι ιδιότητες αυτές υλοποιούνται μέσω ειδικών εντολών ή με την εντολή ενεργοποίησης glenable (και gldisable για απενεργοποίηση) Οι ιδιότητες των αντικειμένων, από τη στιγμή που θα δηλωθούν στο πρόγραμμα (με την εκτέλεση της αντίστοιχης εντολής), παραμένουν ενεργές έως ότου αλλαχθούν ή απενεργοποιηθούν από παρόμοιες εντολές. Σελίδα 18 από 342

19 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Η σχεδίαση ενός ή περισσοτέρων αντικειμένων ταυτόχρονα γίνεται μέσα στο block σχεδίασης glbegin( GL_type) decleration_of_vertices glend() GL_type : Το είδος γραφικού που θα σχεδιαστεί decleration_of_vertices : ένα σύνολο από κορυφές (vertices) τα οποία δηλώνουν το αντικείμενο ή τα αντικείμενα προς σχεδίαση. Σελίδα 19 από 342

20 1.6.1 Στοιχειώδη αντικείμενα γραφικών GL_POINTS : Σχεδίαση σημείων. Ένα σημείο ορίζεται από ένα μοναδικό vertex και καταλαμβάνει στην οθόνη χώρο ίσο με ένα pixel. Άρα κάθε vertex στο block σχεδίασης ορίζει και ένα σημείο. ΙΔΙΟΤΗΤΕΣ ΣΗΜΕΙΩΝ glcolor*(_) : χρώμα glpointsize(glfloat x) : μέγεθος >>glenable(gl_point_smooth) : ομαλοποίηση GL_LINES: Σχεδίαση ευθυγράμμων τμημάτων (ή, απλά, γραμμή). Μια γραμμή ορίζεται από δύο vertices. Άρα, κάθε ζεύγος από vertices ορίζει και μια γραμμή. Παρακάτω βλέπουμε ένα παράδειγμά για το κάθε αντικείμενο. glbegin(gl_points); glvertex2i(10,10); glvertex2i(30,80); glvertex2i(90,10); glvertex2i(40,90); glvertex2i(90,110); glbegin(gl_lines); glvertex2i(10,10); glvertex2i(30,80); glvertex2i(90,10); glvertex2i(40,90); glvertex2i(90,110); glend(); glendo; Πίνακας 1.1: Παραδείγματα αντικειμένων ΙΔΙΟΤΗΤΕΣ ΓΡΑΜΜΩΝ glcolor*(_) : χρώμα gllinewidth*(glfloat) : χρώμα gllinestipple(glint factor, GLushort pattern)* : στυλ γραμμής * Απαιτείται η ενεργοποίηση : glenable(gl_line_stipple); >> gllinestipple(n, 255) : Διακεκομμένη γραμμή σε κλίμακα n. Σελίδα 20 από 342

21 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Σύνθετοι τύποι γραμμών GL_LINE_STRIP GL_LINE_LOOP Πολύγωνα GL_TRIANGLES Επεξεργάζεται κάθε τρίστιχο των κορυφές ως ανεξάρτητο τρίγωνο. GL_QUADS Αντιμετωπίζει κάθε ομάδα από τις τέσσερις κορυφές ως ένα ανεξάρτητο τετράπλευρο. Vertices 4n - 3, 4n - 2, 4n - 1, και 4n ορίζουν τετράπλευρο n. N / 4 τετράπλευρα εξάγονται GL_POLYGON Σχεδιαζεται ένα ενιαίο, κυρτό πολύγωνο, αυτό το πολύγωνο καθορίζεται με κορυφές 1 έως Ν. ΤΡΟΠΟΣ ΣΧΕΔΙΑΣΗΣ glpolygonmode(glenum face, GLenum mode ) face : GL_FRONT για το μπροστινό μέρος του πολυγώνου GL_BACK για το πίσω μέρος του πολυγώνου, ή GL_FRONT_AND_BACK για το μπροστινό κ το πίσω μέρος του πολύγωνου mode: GL_POINT, GL_LINE, GL_FILL* *default value Συνεχόμενη σχεδίαση (strips and fans) GL_TRIANGLE_FAN GL_QUAD_STRIP Σελίδα 21 από 342

22 Ρ1 Ρ2 Ρ3 Line Strip Ρ1 Ρ2 Ρ3 Line Loop Ρ2 Ρ4 Ρ6 Ρ8 Quadrilateral strip Σελίδα 22 από 342

23 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Triangle Fan Ρ2 Ρ4 Ρ6 Ρ8 Triangle Strip Εικόνα 1.4: Συνεχόμενη σχεδίαση Σελίδα 23 από 342

24 OpenGL Primitives (σχεδιασμός καθορίζοντας κάθε κορυφή-vertex) Σελίδα 24 από 342

25 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης OpenGL Ρπηίίίνθβ 2 Εικόνα 1.6: OpenGL ΡΓΐηιίινθε 2 Σελίδα 25 από 342

26 Ένα τυπικό πρόγραμμα Στην παράγραφο αυτή παρουσιάζουμε και περιγράφουμε συνοπτικά τη δομή ενός τυπικού προγράμματος που βασίζεται στο πρότυπο της OpenGL. #include <glut.h> void display() glclearcolor(1,1,1,1); glclear(gl_color_buffer_bit); glbegin(gl_lines); glcolor3f(1,0,0); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); int main(int argc, char** argv) glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplaymode(glut_single GLUT_RGB); glutcreatewindow(ma sample OpenGL application"); glmatrixmode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutmainloop(); return 0; Ας ξεκινήσουμε με την περιγραφή του κώδικα που περιέχεται στη συνάρτηση main. Σελίδα 26 από 342

27 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Αρχικά προσθέτουμε την κεφαλίδα του GLUT glut.h. Γενικά, για την ανάπτυξη ενός προγράμματος που χρησιμοποιεί ρουτίνες της OpenGL, απαιτείται η προσθήκη των κεφαλίδων gl.h και glu.h, ενώ για χρήση του GLUT, απαιτείται η προσθήκη της glut.h. Ωστόσο, με τη δήλωση της κεφαλίδας glut.h δηλώνονται αυτομάτως και οι δύο προηγούμενες. Τι είναι το GLUT Η OpenGL όπως είπαμε είναι ένας γρήγορος και ευέλικτος τρόπος να επικοινωνούμε με το hardware γραφικών του υπολογιστή χωρίς να ενδιαφερόμαστε για τις λεπτομέρειες υλοποίησης του. Όμως δεν προσφέρει καθόλου λειτουργίες GUI (Graphical User Interface), δηλαδή δεν έχει την δυνατότητα να ανοίξει και να κλείσει παράθυρα στο λειτουργικό σύστημα, να ζωγραφίσει σε αυτά, ούτε να καταλάβει το πάτημα ενός πλήκτρου ή την κίνηση του ποντικιού, ούτε μπορεί να διαβάσει ένα αρχείο από το δίσκο. Αυτό έγινε επί σκοπού, μιας και η OpenGL σχεδιάστηκε να τρέχει σε πολλά λειτουργικά συστήματα τα οποία έχουν το δικό τους τρόπους επικοινωνίας με την οθόνη, το ποντίκι, το δίσκο, το πληκτρολόγιο. Για να γίνει αυτό θα πρέπει να χρησιμοποιήσουμε απευθείας τις εντολές του λειτουργικού μας συστήματος (Win32 εντολές στην περίπτωση των Windows). Εναλλακτικά μπορούμε να χρησιμοποιήσουμε μια από τις έτοιμες βιβλιοθήκες εντολών που υπάρχουν και που θα κάνουν αυτές τις λειτουργίες για εμάς εύκολα. Μια από τις πιο διαδεδομένες βιβλιοθήκες για αυτό το σκοπό είναι το GLUT (OpenGL Utility Toolkit) το οποίο είναι και αυτό σχεδιασμένο να τρέχει σε πολλά λειτουργικά συστήματα. Το GLUT προσφέρει ένα σύνολο εντολών που αναλαμβάνουν να ανοίξουν και να κλείσουν εύκολα παράθυρα, να καταγράψουν το πάτημα ενός πλήκτρου ή την κίνηση του ποντικιού. Δεν είναι κατάλληλο να γράψουμε μια κανονική εφαρμογή με αυτό (πχ ένα παιχνίδι) όμως είναι πολύ κατάλληλο για εκπαιδευτικές και πρότυπες εφαρμογές. [28] Σελίδα 27 από 342

28 Μορφή εντολών OpenGL/GLUT Η OpenGL χρησιμοποιεί μια απλή, στάνταρντ, μορφή ονοματολογίας για τις εντολές της. Όλες οι εντολές της έχουν μορφή παρόμοια με: glcolor3f... Βιβλίο θήιαι OpenGL Όνομα Αριθμός παράμετρο Τύπος παραμέτρου Εικόνα 1.7: Μορφή εντολών OpenGL/GLUT [28] Οι εντολές του GLUT δεν έχουν κάποιο ιδιαίτερο χαρακτηριστικό εκτός του ότι κάθε εντολή ξεκινά με το πρόθεμα glut: glutinitwindowsize(width, Height); Η συνάρτηση glutlnit ενεργοποιεί τη βιβλιοθήκη GLUT και μέσω αυτής μπορούμε να περάσουμε παραμέτρους στην εφαρμογή μας από τη γραμμή εντολών του DOS. Η ρουτίνα glutlnitwindowposition καθορίζει τη θέση στην οθόνη, στην οποία θα εμφανιστεί το παράθυρο της εφαρμογής (συντεταγμένη της άνω αριστερής κορυφής). Η εντολή glutlnitwindowsize καθορίζει το πλάτος και ύψος του παραθύρου της εφαρμογής σε pixels. Η εντολή glutlnitdisplaymode καθορίζει παραμέτρους σχετικές με τους ενταμιευτές και το χρωματικό μοντέλο που χρησιμοποιούνται κατά τη σχεδίαση. (Η τεχνική της διπλής ενταμίευσης χρησιμοποιείται κατά κόρον σε εφαρμογές κινουμένων γραφικών). Στο παράδειγμά μας χρησιμοποιούμε το χρωματικό μοντέλο RGB (GLUT_RGB) και την εφαρμογή απλής ενταμίευσης (GLUT_SINGLE). Η χρήση διπλού buffer (double buffering) κατά την απεικόνιση μιας σκηνής είναι μια βασική μέθοδος αποφυγής «τρεμοπαίγματος»(flickering). Ο τρόπος με τον οποίο δουλεύει είναι ορίζοντας 2 ενδιάμεσες περιοχές στην Σελίδα 28 από 342

29 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης μνήμη (buffers) στις οποίες αποθηκεύουμε τις εικόνες που δημιουργούμε. Όσο η οθόνη παίρνει (απεικονίζει) την εικόνα από τον έναν buffer εμείς ζωγραφίζουμε την σκηνή στον άλλον. Έπειτα ανταλλάσουμε τους ρόλους των buffer και συνεχίζουμε. Έτσι η οθόνη δείχνει πάντα μια ολοκληρωμένη εικόνα της σκηνής. Η εντολή glutcreatewindow εμφανίζει το παράθυρο της εφαρμογής στην οθόνη και του αποδίδει έναν τίτλο. Με την εντολή glmatrixmode(gluint mode) επιλέγουμε το μητρώο το οποίο επιθυμούμε να τροποποιήσουμε. (περισσότερα για τα μητρώα στις ενότητες «Μετασχηματισμοί συντεταγμένων» και «Προβολές») Στο παράδειγμα, δίνοντας ως όρισμα τη σταθερά GL_PROJECTION επιλέγουμε το μητρώο προβολής, το οποίο καθορίζει τον τρόπο με τον οποίο προβάλλεται η σκηνή στο επίπεδο του θεατή. Σε συνδυασμό με την εντολή gluortho2d( xmin,xmax,ymin,ymax) διευκρινίζουμε ότι θα απεικονιστεί η παράλληλη προβολή της σκηνής στο επίπεδο ΧΥ (το οποίο, στο συγκεκριμένο παράδειγμα, ταυτίζεται με το παράθυρο της εφαρμογής). Το περιεχόμενο του παραθύρου περιλαμβάνει όλα τα στοιχεία του σκηνικού που εκτείνονται μεταξύ των συντεταγμένων Χ=[- 50,50] και Υ=[-50,50]. Ο θετικός άξονας X έχει φορά προς τα δεξιά και το θετικό τμήμα του άξονα Y έχει φορά προς τα πάνω. Η εντολή glutdisplayfunc(void func()) εντάσσεται σε μια ειδική κατηγορία συναρτήσεων του GLUT, οι οποίες αποκαλούνται συναρτήσεις κλήσης (callback functions). Η συγκεκριμένη συνάρτηση δέχεται ως όρισμα μια συνάρτηση στην οποία εμπεριέχεται ο κώδικας σχεδίασης γραφικών. Η συνάρτηση αυτή εκτελείται κάθε φορά που η εφαρμογή διαπιστώσει ότι απαιτείται επανασχεδιασμός της σκηνής. Η συνάρτηση δεν επιστρέφει τιμή και δεν έχει ορίσματα. Στο συγκεκριμένο παράδειγμα δίνουμε ως όρισμα τη συνάρτηση display(). Η εντολή glutmainloop() ενεργοποιεί τον κύκλο διαχείρισης γεγονότων (event processing loop). Στον κύκλο αυτό, η εφαρμογή αναμένει επ' άπειρον και ανταποκρίνεται σε γεγονότα, όπως λ.χ. στο πάτημα ενός κουμπιού, στην αλλαγή του σκηνικού ή στην κίνηση του Σελίδα 29 από 342

30 ποντικιού. Από το πρόθεμά της, παρατηρούμε ότι η συγκεκριμένη εντολή εμπεριέχεται στη βιβλιοθήκη GLUT, εφόσον το πρότυπο της OpenGL, ως πρότυπο ανεξάρτητο πλατφόρμας, δεν ορίζει διαδικασίες εισόδου-εξόδου. Ας αναλύσουμε τώρα το περιεχόμενο της συνάρτησης display. Η εντολή glclearcolor() καθορίζει το χρώμα που χρησιμοποιείται κάθε φορά που εκτελείται εντολή καθαρισμού της οθόνης. Στην OpenGL το χρώμα του φόντου είναι μία μεταβλητή κατάστασης, η οποία διατηρεί την τιμή που της ανατέθηκε την τελευταία φορά. Το χρώμα καθορίζεται από τα βάρη του στο χρωματικό μοντέλο RGB. Στο συγκεκριμένο παράδειγμα, χρησιμοποιείται το λευκό χρώμα. Η εντολή glclear() καθαρίζει ενταμιευτές (buffers), συγκεκριμένες περιοχές μνήμης του συστήματος γραφικών (frame buffer). Η μηχανή γραφικών της OpenGL ορίζει ορισμένες κατηγορίες ενταμιευτών. Με την σταθερά GL_COLOR_BUFFER_BIT δίνουμε εντολή καθαρισμού του ενταμιευτή χρωματικών τιμών (colour buffer). Αυτή περιέχει τις χρωματικές τιμές των pixels που απεικονίζονται (ή πρόκειται να απεικονιστούν) στην οθόνη. Με την εντολή glcolor3f(float r, float g, float b) ορίζουμε το τρέχον χρώμα σχεδιάσης. Πρόκειται για μία ακόμη μεταβλητή κατάστασης που καθορίζει το χρώμα που χρησιμοποιείται για τη σχεδίαση γραφικών. Στην εντολή περνάμε ως ορίσματα τις κανονικοποιημένες ως προς τη μονάδα τιμές των συνιστωσών του κόκκινου, πράσινου και μπλέ χρώματος. Στο παράδειγμα επιλέγουμε ως χρώμα σχεδιάσης το κόκκινο. Η εντολή glbegin(glenum MODE) δηλώνει την έναρξη ορισμού ενός ή περισσοτέρων γεωμετρικών σχημάτων. Αναλόγως του ορίσματος, μπορεί να προσδιοριστεί μια ποικιλία σχημάτων. Στο παράδειγμά μας, ορίζουμε ευθύγράμμα τμήματα. Η εντολή glbegin εκτελείται πάντα σε συνδυασμό με την εντολή glend() και η δεύτερη ορίζει τη λήξη της επιλεγόμενης ρύθμισης σχεδίασης. Η εντολή glvertex2i ορίζει σημεία στο διδιάστατο χώρο. Εφόσον έχει προεπιλεγεί η κατάσταση σχεδίασης ευθυγράμμων τμημάτων, τα σημεία ορίζουν ανά ζεύγη τα ευθύγραμμα τμήματα Το παραπάνω Σελίδα 30 από 342

31 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης παράδειγμα σχεδιάζει ένα ευθύγραμμο τμήμα κόκκινου χρώματος με συνταταγμένες αρχής και τέλους (20,20) (40,40). Η εντολή glflush() εξαναγκάζει την εκτέλεση των εντολών που εκκρεμούν. Η εκτέλεση του κώδικα εμφανίζει το παράθυρο του παρακάτω σχήματος. Αφού περιγράψαμε επακριβώς την OpenGL και την χρησιμότητά της δίνοντας και ένα μικρό παράδειγμα, καταλαβαίνουμε ότι είναι ένα πρότυπο υλοποίησης βιβλιοθηκών σχεδίασης γραφικών την οποία την χρησιμοποιούμε ακόμη και για την σχεδίαση video games. Όμως αυτό δεν είναι αρκετό για να κατανοήσουμε και να μάθουμε αρκετά στοιχεία γι αυτήν οπότε είναι αναγκαίο στο επόμενο κεφάλαιο να γνωρίσουμε τους μετασχηματισμούς αντικειμένων. Σελίδα 31 από 342

32 Κεφάλαιο 2 Μετασχηματισμοί Αντικειμένων 2.1 Γεωμετρικοί Μετασχηματισμοί Αντικειμένων Ένας γεωμετρικός μετασχηματισμός μπορεί να περιγραφεί με έναν μετασχηματισμό συστήματος συντεταγμένων και προβολής του στο αρχικό καρτεσιανό σύστημα. Θεωρούμε δηλαδή, τις τιμές των καρτεσιανών συντεταγμένων ως τιμές ενός συστήματος καμπυλόγραμμων συντεταγμένων. Καρτεσιανό σύστημα (χ,γ,ζ) ^ (%,q2,%) Καμπυλόγραμμο σύστημα χ = /Μ»q2, «Λ γ = ^ ζ = ^ Σχήμα 2.1: Καρτεσιανό σύστημα Κάθε ομαλό καμπυλόγραμμο σύστημα μπορεί τοπικά να προσεγγιστεί με ένα «πλαγιογώνιο» σύστημα που ορίζεται με γραμμικές συναρτήσεις ί\, ί=1,2,3 (Γραμμικός Μετασχ.) χ ' = αηχ + α12γ + α13ζ γ ' = α 2ιΧ + α22γ + α23ζ αϋ Φ ο ο η Β ΐ ζ ' = α31χ + α32γ + α33ζ Σελίδα 32 από 342

33 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης (x,y,z) (x,y,z ) Σχήμα 2.2: καμπυλόγραμμο σύστημα 2.2 Α φ ινικο ί Μετασχηματισμοί (Affine Transformations) Ένας αφινικός μετασχηματισμός είναι ένας γραμμικός μετασχηματισμός συνοδευόμενος και από μια μετατόπιση χ ' = αηχ + a^y + αηζ + δχ y ' = α21χ + a22y + α23ζ + δ y ζ ' = α31χ + a32y + α33ζ + δζ ή σε μορφή πινάκων ( χ ' ϊ αΐ1 α12 α13 ( χ ϊ ' δχ Λ y ' = α21 α22 α23 y + δy νζ '> Vα31 α32 α33 y ν ζ. νδζ y r ' = Ar + δ Αν δ=(0,0,0)τ και Α=Ι, τότε παίρνουμε τον ταυτοτικό μετασχηματισμό (identity) ( χ ' > r ^r χ > r 0 ^ y ' = y + 0 νζ ' y V0 0 1y νζ y ν 0 y χ ' = χ ^ y ' = y ζ ' = ζ Σελίδα 33 από 342

34 Αν δ=(δχ,δγ,δζ)τ και A=I, τότε παίρνουμε μόνο μετατόπιση (Translation) ( χ' 1 y ' Vζ ' y (1 0 0 V x1 ( δχ y ν y ν ζ y νδζ y + χ' = χ + δχ y 1= y + ^ ζ ' = ζ + δζ Αν δ=(0,0,0)τ και Α=άί8 9 8,ό,ο, τότε παίρνουμε τον μετασχηματισμό κλίμακας (scaling) ( χ ' > (α 0 0^ ( χ ^ ( 0 1 y' = 0 b 0 y + 0 νζ ' y ν 0 0 c y νζ y ν 0 y χ' = αχ ^ y ' = by ζ ' = cz 2.3 Ορθογώνιοι Μετασχηματισμοί Ορθογώνιος μετασχηματισμός ή περιστροφή (rotation) είναι ο αφινικός μετασχηματισμός με δ=(0,0,0)τ και Α ένας ορθογώνιος πίνακας A T A = A A T = I (A T = A _1) Ένας ορθογώνιος μετασχηματισμός συστήματος συντεταγμένων διατηρεί 1. την αρχή των αξόνων ( (0,0,0) fixed point) 2. την καθετότητα των αξόνων 3. την κλίμακα e' H e, = 1, V / = 1,2,3 Σελίδα 34 από 342

35 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης ^ χ ^ y' ν z J αΐ1 αΐ2 αΐ3 λ ί νλ α2ΐ a22 a23 y ν ^ j ν z j a = e ' i e j = coso) ή a12 = e' v e. = cos(ox'oy), a23 = e' ; e. = cos(oy'oz), κλπ Σχήμα 2.3: Ορθογώνιοι μετασμηματισμοί Ο πίνακας Α, στην περίπτωση περιστροφής συμβολίζεται με Κ Περιστροφή γύρω από τους άξονες Οχ, Ον και Οζ κατα γωνία θ f cos# - s in # 0 > f > f cos# 0 s in # ^ R z = s in # cos# 0, R χ = 0 cos# - s in # > Ry = ν 0 0 1J ν 0 s in# cos# j v- s in # 0 c o s # J Οι ορθογώνιοι μετασχηματισμοί μαζί με τις μετατοπίσεις ονομάζονται μετασχηματισμοί στερεού σώματος. 2.4 Ομοιογενής Φορμαλισμός (homogeneous coordinates) Για να εφαρμόσουμε έναν αφινικό μετασχηματισμό απαιτείται ο ορισμός δύο πινάκων, του Α και του δ, και δύο πράξεις, πολλαπλασιασμός και πρόσθεση πινάκων. Ο ομοιογενής φορμαλισμός συνίσταται στο να δηλώσουμε έναν αφινικό μετασχηματισμό «αντικειμένων» με έναν πίνακα Μ p = Mp Σελίδα 35 από 342

36 Σχήμα 2.3 Έστω το διάνυσμα ν και το σημείο Ρ. Και τα δύο αντικείμενα ορίζονται με τον ίδιο τρόπο ν = (χ, γ ) ρ = (χ, γ) Σε μια μετατόπιση του συστήματος συντεταγμένων το διάνυσμα ν παραμένει αναλλοίωτο όμως το Ρ μεταφέρεται στη θέση Ρ =(χ,γ )^Ρ(χ,γ). Για να διαχωρίσουμε την παραπάνω ασάφεια ορίζουμε τα διανύσματα και τα σημεία (στον 3ϋ χώρο) με τις τετράδες ν = (χ, γ, ζ, 0), Ρ = (χ, γ, ζ,1) Έτσι στην περίπτωση αυτή διανύσματα ή σημεία μπορούν να μετασχηματίζονται ως ρ' = Μρ ^ ( απ α12 α13 α14 ν χ Λ γ ζ Vί ) V 0 α21 α22 α23 α24 α α α α 0 0 γ ζ 1 Α 1) ρ ξ ν ογ Ρ ί = 0,1 Με τον παραπάνω φορμαλισμό μπορούμε να εκτελέσουμε κάθε αφινικό μετασχηματισμό. Πχ Σελίδα 36 από 342

37 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Translation Scaling x-rotation (1 0 0 δχ ^ ( a > ( Λ b cos# - sin# 0 T =, S =, Rx = δz 0 0 c 0 0 sin# cos# 0 ν ν ν Ο 4x4 πίνακας Μ ονομάζεται "Modelview Matrix και έχει 12 βαθμούς ελευθερίας. Είναι δυνατό τα μηδενικά της τελευταίας στήλης να αντικατασταθούν από μη-μηδενικές τιμές (16 βαθμοί ελευθερίας). Τότε όμως δεν θα έχουμε αφινικό μετασχηματισμό. Σύνθεση Μετασχηματισμών (Concatenation) Έστω ότι εκτελούμε δύο μετασχηματισμούς Τι, Τ2 με αυτή τη σειρά και με πίνακες Α και Β, αντίστοιχα T :(χ, y, z) <χ', y ', z ') T2 :( x ', y ', z ') (x ", y ", z ") Στον συνολικό μετασχηματισμό Τ αντιστοιχεί ο πίνακας M = B A Προσοχή : οι πίνακες πολλαπλασιάζονται με την ανάποδη σειρά. Στον προγραμματισμό της OpenGL, οι μετασχηματισμοί δηλώνονται επίσης με την ανάποδη σειρά. Εν γένει δεν ισχύει η αντιμεταθετικότητα B A φ A B Σε κάθε μετασχηματισμό με πίνακα Μ ορίζεται και ο αντίστροφος με Λ πίνακα Μ-1. Έτσι Μ 1 Μ = Ι Σελίδα 37 από 342

38 Αντίστροφοι Αφινικοί Μετασχηματισμοί T = T (δχ,δγ,δζ) ^ T-1 = T (-δχ, -δ y, -δζ ) S = S(a, b, c) ^ S-1 = S(1/a,1/ b,1/c) R = R(0) ^ R- = R(-&) Με παρόμοιο τρόπο ορίζεται η σύνθεση περισσοτέρων μετασχηματισμών και ισχύει η προσετεριστικότητα, πχ M = C (A B) = (C B) A = C B A Ειδικές περιπτώσεις Περιστροφής 1. Γενική Περιστροφή γύρω από το (0,0,0): Σύνθεση περιστροφών γύρω από τους τρεις άξονες 2. Περιστροφή γωνίας θ γύρω από τυχαίο άξονα (ευθεία) που περνάει από την αρχή των αξόνων (0,0,0) Αν ν διάνυσμα επί του άξονα περιστροφής τότε I. Περιστροφή Κγ(ω) II. Περιστροφή Κχ(φ) >> Ζ' // V III. Περιστροφή Κ2(θ) >>Απαλοιφή (αντιστροφή) των πρώτων περιστροφών Σχήμα 2.4: Σύνθεση περιστροφών γύρω από τους τρεις άξονες Σελίδα 38 από 342

39 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης IV. Περιστροφή Ηχ(-φ) V. Περιστροφή Πγ(-ω) Άρα συνολικά έχουμε Κ-ν =Κ, (~ω) Κχ (Ψ β) ** Ψ) (ω) Αν ν = (νχ, ν,, νζ) τότε ν ' = (νχ,0, νζ) και ^ ν. ^ ω = ατοοοβ ν2 + ν.2 ^ φ = ζτοοοζ^ νιν ιιν ι; 3. Περιστροφή γωνίας θ γύρω από τυχαίο άξονα (ευθεία) που περνάει από τυχών σημείο Ρ=(ρι,Ρ2,Ρ3) Εφαρμόζουμε μια μετατόπιση Τ ώστε να φέρουμε το σημείο Ρ=(Ρι,Ρ2,Ρ3) στο (0,0,0). Εφαρμόζουμε την περιστροφή ^ γύρω από τον άξονα Λ Απαλειφουμε την αρχική μετατόπιση με την Τ-1. Άρα συνολικά έχουμε ΚΡ= Τ(Ρΐ, Ρ2, ρ3) Ρ (β) Τ(-ν, - Ρ2, - Ρ3 ) Στο δεύτερο κεφάλαιο το οποίο είναι και αυτό θεωρητικό είδαμε τους μετασχηματισμούς αντικειμένων, για την ακρίβεια τους γεωμετρικούς μετασχηματισμούς όπου αναλύθηκε το καρτεσιανό σύστημα. Στη συνέχεια πήγαμε στον αφινικό μετασχηματισμό ο οποίος είναι γραμμικός και συνοδεύετε και από μια μετατόπιση. Μετά γνωρίσαμε τους ορθογώνιους μετασχηματισμούς ή αλλιώς περιστροφή και τον ομοιογενή φορμαλισμό. Στο κεφάλαιο που ακολουθεί θα αναλυθούν οι μετασχηματισμοί στην ΟΡβηΘΙ συγκεκριμένα. Σελίδα 39 από 342

40 Κεφάλαιο 3 Μετασχηματισμοί στην OpenGL Η OpenGL υποστηρίζει μια σειρά μετασχηματισμών τους οποίους μπορούμε να χρησιμοποιήσουμε για να τοποθετήσουμε τα αντικείμενα μας στην οθόνη, να τα περιστρέψουμε, να τα μεγεθύνουμε ή να τα μικρύνουμε. Η OpenGL χρησιμοποιεί ένα δεξιόστροφο σύστημα συντεταγμένων κάμερας (view space ή camera space). Εικόνα 3.1: Δεξιόστροφο σύστημα συντεταγμένων κάμερας Αυτό σημαίνει ότι αν φανταστούμε την οθόνη του υπολογιστή, ο θετικός άξονας Υ δείχνει προς τα πάνω, ο θετικός άξονας Χ προς τα δεξιά και ο αρνητικός άξονας Ζ προς τα μέσα της οθόνης (όπως παρατηρούμε στην εικόνα). Ο μετασχηματισμός που τοποθετεί την κάμερα στην κατάλληλη θέση ώστε να «φωτογραφήσουμε» την σκηνή λέγεται μετασχηματισμός κάμερας (viewing transformation). Οι μετασχηματισμοί που τοποθετούν τα αντικείμενα της σκηνής στην επιθυμητή τους θέση, τα μεγεθύνουνε/σμικρύνουνε και τα περιστρέφουνε ονομάζονται μετασχηματισμοί μοντέλου (modeling transformations). Στην ορολογία της OpenGL, ο μετασχηματισμός μοντέλου είναι ο μετασχηματισμός που τοποθετεί ένα αντικείμενο στο σύστημα Σελίδα 40 από 342

41 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης συντεταγμένων της σκηνής (κόσμου). Στην γενική ορολογία γραφικών αυτό το μετασχηματισμό το ονομάζουμε μετασχηματισμό κόσμου. Ο μετασχηματισμός που καθορίζει τι είναι ορατό στο σύστημα συντεταγμένων κάμερας (view space) και τι είδους προβολή επιθυμούμε (με προοπτική ή όχι) ονομάζεται μετασχηματισμός προβολής (projection transformation). Η OpenGL συνδυάζει του πίνακες μετασχηματισμού μοντέλου και μετασχηματισμού κάμερας σε έναν μόνο πίνακα, τον μετασχηματισμό Μοντέλου-Κάμερας (ModelView matrix). Με αυτό το μετασχηματισμό μπορούμε να τοποθετήσουμε ένα αντικείμενο κατευθείαν στο χώρο της κάμερας (χωρίς να περάσουμε από το σύστημα συντεταγμένων κόσμου). Μπορούμε να κατασκευάσουμε τον μετασχηματισμό Μοντέλου-Κάμερας με τέτοιο τρόπο ώστε να περιέχει κάθε περιστροφή, μετακίνηση και κλίμακα του αντικειμένου. [28] 3.1 Μετακίνηση Η μετακίνηση (translation) ενός αντικειμένου γίνεται με την εντολή glt ranslatef(glfloat X, GLfloat Y, GLfloat Z); H εντολή αυτή παίρνει ως παραμέτρους την μετακίνηση που επιθυμούμε κατά άξονα, κατασκευάζει ένα μετασχηματισμό μετακίνησης Τ (όπως είδαμε στην θεωρία) και τον εφαρμόζει (πολ/ζει) με τον μετασχηματισμό Μοντέλου-Κάμερας. 3.2 Περιστροφή Η περιστροφή (rotation) ενός αντικειμένου γίνεται με την εντολή glrotatef(glfloat angle, GLfloat x, GLfloat y, GLfloat z); Η εντολή αυτή κατασκευάζει ένα μετασχηματισμό περιστροφής γύρω από το διάνυσμα που ορίζεται από την τριάδα [ x, y, z ], κατά γωνία angle (μετριέται σε μοίρες 0-360) με φορά αντίθετη των δεικτών του ρολογιού. Αν μας ενδιαφέρει απλά να περιστρέψουμε το αντικείμενο γύρω από ένα άξονα (Χ, Υ ή Z) μπορούμε να ορίσουμε το διάνυσμα ως [ 1, 0, 0] για το περιστροφή γύρω από τον Χ, ως [ 0, 1, 0] για το περιστροφή γύρω από τον Υ και ως [ 0, 0, 1] για το περιστροφή γύρω από τον Ζ. Σελίδα 41 από 342

42 3.3 Κλίμακα Η μεγέθυνση/σμίκρυνση (scaling) ενός αντικειμένου γίνεται με την εντολή glscalef(glfloat x, GLfloat y, GLfloat z); όπου x, y, z η κλίμακα του αντικειμένου ανά άξονα. 3.4 Τοποθέτηση κάμερας Η OpenGL μας δίνει την δυνατότητα να τοποθετήσουμε την κάμερα στην σκηνή και να θέσουμε κατεύθυνση της με την χρήση μόνο μιας εντολής: glulookat(gldouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); Η εντολή αυτή παίρνει ως παραμέτρους 3 διανύσματα το [eyex, eyey, eyez] που ορίζει την θέση της κάμερας στην σκηνή, το [centerx, centery, centery] το οποίο καθορίζει την κατεύθυνση της κάμερας (το σημείο στο οποίο δείχνει δηλαδή) και το διάνυσμα [upx, upy, upz] που καθορίζει ποια είναι η «πάνω» κατεύθυνση της κάμερας. Για παράδειγμα αν θέλω να ορίσω μια κάμερα που βρίσκεται στο σημείο [10,10,10], «δείχνει/βλέπει» στην αρχή των αξόνων [0,0,0] και η πάνω κατεύθυνση της είναι ο Y άξονας [0 1 0] θα καλέσω την εντολή ως glulookat(10,10,10, 0,0,0 0,1,0); 3.5 Εφαρμογή των μετασχηματισμών στην OpenGL Αναφέραμε ότι η OpenGL χρησιμοποιεί μόνο ένα πίνακα, τον ModelView, για να εφαρμόσει όλους τους μετασχηματισμούς μετακίνησης, περιστροφής και κλίμακας που είδαμε. Ο πίνακας αυτός αποθηκεύεται στην μνήμη της OpenGL και παραμένει ο ίδιος μέχρι να τον αλλάξουμε με μια άλλη εντολή. Το σύνολο όλων των μεταβλητών/παραμέτρων που διατηρεί η OpenGL για την λειτουργία της ονομάζεται μηχανή καταστάσεων (state machine). Με αυτό τον τρόπο λειτουργίας μια τιμή που θέτουμε σε μια μεταβλητή παραμένει σε ισχύ μέχρι να την αλλάξουμε ξανά. Σελίδα 42 από 342

43 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης Επειδή η OpenGL χρησιμοποιεί πάνω από ένα πίνακες για να ορίσει μετασχηματισμούς πριν αρχίσουμε να κατασκευάσουμε το ModelView μετασχηματισμό πρέπει να τον ενεργοποιήσουμε. Αυτό γίνεται με την εντολή glmatrixmode(gl_modelview); H παράμετρος GL_MODELVIEW ορίζει ότι θέλουμε να ενεργοποιήσουμε τον πίνακα ModelView (μια άλλη παράμετρος που θα χρησιμοποιήσουμε είναι η GL_PROJECTION που ορίζει ως ενεργό τον πίνακα προβολής). Από την στιγμή που ενεργοποιήσουμε τον ModelView πίνακα, κάθε μετασχηματισμός που κατασκευάζουμε με τις εντολές gltranslation, glrotation και glscale εφαρμόζονται, με πολλαπλασιασμό, με τον πίνακα που έχει κάθε στιγμή ο ModelView. Για να αρχικοποιήσουμε τον ModelView πίνακα χρησιμοποιούμε την εντολή glloadidentity(); η οποία του φορτώνει τον μοναδιαίο πίνακα. Εξορισμού (αν δεν έχουμε εφαρμόσει κάποιο άλλο μετασχηματισμό) η κάμερα είναι τοποθετημένη στην αρχή των αξόνων και βλέπει προς τον άξονα Z. Παράδειγμα: glmatrixmode(gl_modelview); glloadidentity(); glulookat(10,10,10, 0,0,0, 0,1,0); gltranslate(0, 0, -6); glrotatef(45, 0, 1, 0); DrawOurModel(); Αρχικά ενεργοποιούμε τον πίνακα ModelView, τον αρχικοποιούμε με τον μοναδιαίο πίνακα Ι, κατασκευάζουμε και εφαρμόζουμε τον μετασχηματισμό κάμερας View (glulookat), κατασκευάζουμε και Σελίδα 43 από 342

44 εφαρμόζουμε μια μετακίνηση T κατά -6 κατά μήκος του άξονα Ζ και μια περιστροφή R, 45 μοίρες γύρω από τον άξονα Y. O τελικός μετασχηματισμός ModelView θα είναι : ModelView = R * T * View Η OpenGL εφαρμόζει τους μετασχηματισμούς στο αντικείμανο με αντίστροφη σειρά από ότι τους δηλώνουμε στο πρόγραμμα. Στο παραπάνω παράδειγμα το αντικείμανο πρώτα θα περιστραφεί, μετά θα μετακινηθεί και μετά θα μεταφερθεί στο χώρο της κάμερας. Αν θεωρήσουμε ένα σημείο Ρ του αντικειμένου, τότε ο μετασχηματισμός αυτός θα εφαρμοστεί ως: P = P * ModelView = P * R * T * View 3.6 Στοίβα πινάκων Είπαμε ότι ό,τι μετασχηματισμό κατασκευάζουμε με τις εντολές gltranslation, glrotation και glscale συσσωρεύεται (με πολλ/μό) στο πίνακα ModelView, o οποίος με την σειρά του μετασχηματίζει όλα τα αντικείμενα της σκηνής. Υπάρχουν περιπτώσεις που πριν «προσθέσουμε» ένα νέο μετασχηματισμό στο ModelView (μια περιστροφή που ίσως αφορά ένα μόνο αντικείμενο και όχι όλη τη σκηνή) θέλουμε να τον αποθηκεύσουμε κάπου προσωρινά ώστε μετά να τον ανακτήσουμε αναλλοίωτο από τον νέο μετασχηματισμό. Η OpenGL προσφέρει ένα τέτοιο μηχανισμό και ονομάζεται στοίβα πινάκων (matrix stack). Η στοίβα είναι μια δομή δεδομένων που μας επιτρέπει μέσω εντολών Push και Pop να προσθέσουμε και να αφαιρέσουμε ένα στοιχείο από την κορυφή της στοίβας (και μόνο). Στην OpenGL οι εντολές που αποθηκεύουν και ανακτούν τον ModelView στην κορυφή της στοίβας είναι οι: glpushmatrix(); glpopmatrix(); Σχηματικά αυτό φαίνεται ως εξής: Σελίδα 44 από 342

45 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης ν.αίτιχ ϋϊκΐί Εικόνα 3.2: Στοίβα πινάκων Παράδειγμα, αν θέλουμε να ζωγραφίσουμε 2 αντικείμενα αφού πρώτα τα μετακινήσουμε το πρώτο κατά -6 κατά μήκος του άξονα Ζ και το δεύτερο κατά 10 κατά τον άξονα Υ τότε: glmatrixmode(gl_modelview); glloadidentityo; glulookat(10,10,10, 0,0,0, 0,1,0); glpushmatπx0; gltranslate(0, 0, -6); DrawModel_1 (); glpopmatπx0; gltranslate(0, 10, 0); DrawModel_2Q; Στο παράδειγμα αφού ορίσουμε τον μετασχηματισμό κάμερας με την εντολή glulookatq αποθηκεύουμε τον ModelView στην στοίβα με την εντολή glpushmatπx0. Έπειτα μετακινούμε το πρώτο αντικείμενο κατά -6 κατά μήκος του άξονα Ζ και το ζωγραφίζουμε. Στην συνέχεια ανακτούμε από την στοίβα τον ModelView (που δεν περιέχει την μετακίνηση κατά -6) με την εντολή glpopmatπxq. Τέλος μετακινούμε το δεύτερο αντικείμενο κατά 10 κατά τον άξονα Υ και το ζωγραφίζουμε. Αν υποθέσουμε ότι δεν χρησιμοποιούμε την στοίβα για να αποθηκεύσουμε τον ModelView: Σελίδα 45 από 342

46 glmatrixmode(gl_modelview); glloadidentity(); glulookat(10,10,10, 0,0,0, 0,1,0); gltranslate(0, 0, -6); DrawModel_1 (); gltranslate(0, 10, 0); DrawModel_2(); τότε το πρώτο αντικείμενο θα μετακινούνταν σωστά κατά -6 κατά μήκος του άξονα Ζ όμως το δεύτερο αντικείμενο θα μετακινούταν πρώτα κατά -6 κατά μήκος του άξονα Ζ και έπειτα κατά 10 κατά τον άξονα Υ. Θα εφαρμόζαμε δηλαδή και τις 2 μετακινήσεις στο δεύτερο αντικείμενο αφού όπως είπαμε όλοι οι μετασχηματισμοί που κατασκευάζουμε "συσσωρεύονται στο πίνακα ModelView. H χρήση της στοίβας είναι βασική λοιπόν για την σωστή τοποθέτηση των αντικειμένων στην σκηνή. 3.7 Μετασχηματισμός προβολής Με τον μετασχηματισμό προβολής (projection transform) η OpenGL προβάλλει τα 3διάστατα αντικείμενα στις 2 διαστάσεις ώστε να δημιουργήσει την τελική διδιάστατη εικόνα. Η OpenGL υποστηρίζει 2 ειδών μετασχηματισμούς προβολών την ορθογραφική προβολή (orthographic projection) και την προβολή με προοπτική (perspective projection). Μια ορθογραφική προβολή δημιουργείται με την χρήση της εντολής glortho(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far ); Η εντολή αυτή ορίζει ένα κύβο αποκοπής παρέχοντας τις συντεταγμένες 2 διαγώνιων κορυφών. Μια προβολή με προοπτική δημιουργείται με την χρήση της εντολής gluperspective(gldouble fovy, GLdouble aspect, GLdouble znear, GLdouble zfar); Η παράμετρος fovy ορίζει την γωνία οπτικού πεδίου στην κάθετη κατεύθυνση, η aspect καθορίζει τον αναλογία μήκους/πλάτους του Σελίδα 46 από 342

47 Πτυχιακή εργασία της Περιστερίδου Καλλιόπης κοντινού πεδίου αποκοπής και οι znear και zfar την απόσταση του κοντινού (near) και μακρινού (far) πεδίου αποκοπής κατά τον άξονα Ζ. Σχηματικά η προβολή με προοπτική ορίζεται ως: Εικόνα 3.3: Μετασχηματισμός προβολής Η OpenGL αποθηκεύει τον πίνακα προβολής στον πίνακα GL_PROJECTION. Για να τον ενεργοποιήσουμε χρησιμοποιούμε και πάλι την εντολή glmatrixmodeq Παράδειγμα: 9ΐΜ8ίπχΜοόΘ(ΟΙ ΡΡΟύΕΟΤΙΟΝ); ςιιοαόιόθημγο; 9^ΡΘΐΈρΘ^ίνΘ(45, 4/3, 1, 400); Στο κεφάλαιο που μόλις τελείωσε αναφέρθηκαν οι μετασχηματισμοί στην ΟρΘηϋΙ, συγκεκριμένα κάποιες από τις ενότητες του κεφαλαίου ήταν η μετακίνηση την οποία επιθυμούμε κατά άξονα και την εντολή που χρησιμοποιούμε, την περιστροφή ενός αντικειμένου, την κλίμακα, την τοποθέτηση της κάμερας στην σκηνή και να θέσουμε την κατεύθυνση που επιθυμούμε και κάποια άλλα. Καθώς φεύγουμε από το κεφάλαιο τρία και προσχωρούμε στο τέταρτο θα αναφέρουμε τις υφές, την απεικόνιση, καθώς και που μας είναι χρήσιμη στο κτίσιμο ενός προγράμματος. Σελίδα 47 από 342

Εισαγωγή στην OpenGL

Εισαγωγή στην OpenGL Εισαγωγή στην OpenGL Ε.1 Τι είναι η OpenGL; Ένας νέος χρήστης θα υποθέσει ότι η OpenGL είναι µια βιβλιοθήκη σχεδίασης γραφικών. Ωστόσο, µε τον όρο OpenGL δεν αναφερόµαστε σε µια συγκεκριµένη βιβλιοθήκη

Διαβάστε περισσότερα

Εισαγωγή στην OpenGL

Εισαγωγή στην OpenGL Εισαγωγή στην OpenGL Περιεχόµενα εισαγωγικής ενότητας: Γενικά χαρακτηριστικά της OpenGL Βιβλιοθήκες που της OpenGL Ένα τυπικό πρόγραµµα Τι είναι η OpenGL; Η OpenGL δεν είναι µια συγκεκριµένη βιβλιοθήκη

Διαβάστε περισσότερα

Εισαγωγή στην OpenGL: μέρος 2ο

Εισαγωγή στην OpenGL: μέρος 2ο Εισαγωγή στην OpenGL: μέρος 2ο Μετασχηματισμοί στην OpenGL Η OpenGL υποστηρίζει μια σειρά μετασχηματισμών τους οποίους μπορούμε να χρησιμοποιήσουμε για να τοποθετήσουμε τα αντικείμενα μας στην οθόνη, να

Διαβάστε περισσότερα

Εισαγωγή στην OpenGL: μέρος 1ο

Εισαγωγή στην OpenGL: μέρος 1ο Εισαγωγή στην OpenGL: μέρος 1ο Τι είναι η OpenGL Η OpenGL είναι ένα σύνολο εντολών (Application Programming Interface API) που μας επιτρέπει την δημιουργία τριδιάστατων γραφικών. Δεν είναι γλώσσα προγραμματισμού

Διαβάστε περισσότερα

OpenGL. Μετασχηματισμοί. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα. Κατερίνα Παπαδοπούλου /

OpenGL. Μετασχηματισμοί. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα. Κατερίνα Παπαδοπούλου / OpenGL Μετασχηματισμοί Κατερίνα Παπαδοπούλου / pakate@unipi.gr Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα Τύποι μετασχηματισμών Μετασχηματισμοί μοντέλου (modeling transformations) με glmatrixmode

Διαβάστε περισσότερα

Προγραμματισμός γραφικών

Προγραμματισμός γραφικών Προγραμματισμός γραφικών Εισαγωγή ελάχιστου συνόλου συναρτήσεων Οχι αλληλεπίδραση από τον χρήστη Δισδιάστατα γραφικά: ειδική περίπτωση τρισδιάστατων γραφικών Παράδειγμα-εφαρμογή: η ταινίατου Sierpinski

Διαβάστε περισσότερα

OpenGL. Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα

OpenGL. Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα OpenGL Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή Κατερίνα Παπαδοπούλου / pakate@unipi.gr Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα OpenGL Εισαγωγή Είναι

Διαβάστε περισσότερα

OpenGL. Εισαγωγή. Εξάμηνο: 2014Β. Διδάσκουσα: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Ηλεκτρονική Τάξη: http://moodleforall.ictlab.edu.

OpenGL. Εισαγωγή. Εξάμηνο: 2014Β. Διδάσκουσα: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Ηλεκτρονική Τάξη: http://moodleforall.ictlab.edu. Τεχνικός Εφαρμογών Πληροφορικής Εισαγωγή OpenGL Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: http://moodleforall.ictlab.edu.gr/ Περιεχόμενα 1. Τι είναι η OpenGL 2. Μηχανή καταστάσεων 3. Η εξέλιξη της 4.

Διαβάστε περισσότερα

Οδηγίες σχεδίασης στο περιβάλλον Blender

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

Διαβάστε περισσότερα

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering)

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering) Υφή Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering) Θέσεις αντικειμένων και φωτεινών πηγών Θέση παρατηρητή 3D Μοντέλα 3Δ Μετασχ/σμοί Μοντέλου 3Δ Μετασχ/σμός Παρατήρησης Απομάκρυνση Πίσω Επιφανειών

Διαβάστε περισσότερα

Γραφικά Υπολογιστών: OpenGL

Γραφικά Υπολογιστών: OpenGL 1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: OpenGL Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιεχόμενα Τι είναι η OpenGL; Μοντέλα αντικειμένων (object modeling)

Διαβάστε περισσότερα

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί Πολλά προβλήματα λύνονται μέσω δισδιάστατων απεικονίσεων ενός μοντέλου. Μεταξύ αυτών και τα προβλήματα κίνησης, όπως η κίνηση ενός συρόμενου μηχανισμού.

Διαβάστε περισσότερα

Μετασχηµατισµοί συντεταγµένων

Μετασχηµατισµοί συντεταγµένων Μετασχηµατισµοί συντεταγµένων Περιεχόµενα ενότητας: Έννοια και χρησιµότητα του µετασχηµατισµού συντεταγµένων Μητρώα µετασχηµατισµού Συντεταγµένες µοντέλου Μετασχηµατισµός µοντέλου Στοιχειώδεις µετασχηµατισµοί

Διαβάστε περισσότερα

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ 1 η Σειρά Ασκήσεων Πλαίσια, γεωμετρικοί μετασχηματισμοί και προβολές 1. Y B (-1,2,0) A (-1,1,0) A (1,1,0)

Διαβάστε περισσότερα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

Διαβάστε περισσότερα

Εισαγωγή στο 3DS Max 2009

Εισαγωγή στο 3DS Max 2009 Μάθημα 1ο Εισαγωγή στο 3DS Max 2009 Σε αυτό το μάθημα πραγματοποιείται εκμάθηση του περιβάλλοντος του προγράμματος 3DS Max 2009. Το 3D Studio Max είναι ένα από τα ισχυρότερα προγράμματα δημιουργίας και

Διαβάστε περισσότερα

Απαραίτητες αφού 3Δ αντικείμενα απεικονίζονται σε 2Δ συσκευές. Θέση παρατηρητή. 3Δ Μετασχ/σμός Παρατήρησης

Απαραίτητες αφού 3Δ αντικείμενα απεικονίζονται σε 2Δ συσκευές. Θέση παρατηρητή. 3Δ Μετασχ/σμός Παρατήρησης Προβολές Προβολές Απαραίτητες αφού 3Δ αντικείμενα απεικονίζονται σε Δ συσκευές. Θέσεις αντικειμένων και φωτεινών πηγών Θέση παρατηρητή 3Δ Μαθηματικά Μοντέλα 3Δ Μετασχ/σμοί Μοντέλου 3Δ Μετασχ/σμός Παρατήρησης

Διαβάστε περισσότερα

Συστήματα συντεταγμένων

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

Διαβάστε περισσότερα

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

Διαβάστε περισσότερα

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή Γ Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή Η χρήση των ηλεκτρονικών υπολογιστών στο τεχνικό σχέδιο, και ιδιαίτερα στο αρχιτεκτονικό, αποτελεί πλέον μία πραγματικότητα σε διαρκή εξέλιξη, που επηρεάζει

Διαβάστε περισσότερα

Γραφικά Υπολογιστών. Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Ανατολικής Μακεδονίας και Θράκης. Γραφικά Υπολογιστών ΣΤ Εξάμηνο. Δρ Κωνσταντίνος Δεμερτζής

Γραφικά Υπολογιστών. Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Ανατολικής Μακεδονίας και Θράκης. Γραφικά Υπολογιστών ΣΤ Εξάμηνο. Δρ Κωνσταντίνος Δεμερτζής Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Ανατολικής Μακεδονίας και Θράκης ΣΤ Εξάμηνο Δρ Κωνσταντίνος Δεμερτζής 1 η Ενότητα OpenGL Τι είναι η OpenGL Η OpenGL δεν είναι μια συγκεκριμένη βιβλιοθήκη γραφικών. Είναι

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ ΠΟΛΥΜΕΣΩΝ ΚΑΙ ΓΡΑΦΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΠΟΛΥΜΕΣΩΝ ΚΑΙ ΓΡΑΦΙΚΩΝ Εισαγωγή /4 Το σχήμα και το μέγεθος των δισδιάστατων αντικειμένων περιγράφονται με τις καρτεσιανές συντεταγμένες x, y. Με εφαρμογή γεωμετρικών μετασχηματισμών στο μοντέλο

Διαβάστε περισσότερα

7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή

7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή 7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή O θόρυβος 2Δ μας δίνει τη δυνατότητα να δημιουργίας υφής 2Δ. Στο παρακάτω παράδειγμα, γίνεται σχεδίαση γραμμών σε πλέγμα 300x300 με μεταβαλόμενη τιμή αδιαφάνειας

Διαβάστε περισσότερα

Προγραμματισμός. Το περιβάλλον του scratch

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

Διαβάστε περισσότερα

5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος

5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος 5. Γραφήματα 5.1 Εισαγωγή 5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος Το Discoverer παρέχει μεγάλες δυνατότητες στη δημιουργία γραφημάτων, καθιστώντας δυνατή τη διαμόρφωση κάθε συστατικού μέρους

Διαβάστε περισσότερα

Περιεχόµενα ενότητας

Περιεχόµενα ενότητας Προβολές Περιεχόµενα ενότητας Μετασχηµατισµός αλλαγής οπτικής γωνίας Επίπεδο προβολής - Μητρώο προβολής Παράλληλη προβολή Πλάγια παράλληλη προβολή Προοπτική προβολή Πλάγια προοπτική προβολή Μετασχηµατισµός

Διαβάστε περισσότερα

Θεωρία μετασχηματισμών

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

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

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

Διαβάστε περισσότερα

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

Γραφικά με υπολογιστές. Διδάσκων: Φοίβος Μυλωνάς. Διαλέξεις #11-#12 Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο Γραφικά με υπολογιστές Διδάσκων: Φοίβος Μυλωνάς fmlonas@ionio.gr Διαλέξεις #-# Σύνθεση Δ Μετασχηματισμών Ομογενείς Συντεταγμένες Παραδείγματα Μετασχηματισμών

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»...

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»... Περιεχόμενα ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»....2 Πλοήγηση στο χάρτη... 3 Σχεδίαση στο χάρτη... 4 Εκτύπωση του χάρτη... 6 Μετρήσεις επάνω στο χάρτη... 9 Εμφάνιση

Διαβάστε περισσότερα

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Κεφάλαιο 2 Εισαγωγή Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Η Logo είναι μία από τις πολλές γλώσσες προγραμματισμού. Κάθε γλώσσα προγραμματισμού έχει σκοπό τη δημιουργία προγραμμάτων

Διαβάστε περισσότερα

Απόδοση 3D σκηνών - Κινούµενα γραφικά

Απόδοση 3D σκηνών - Κινούµενα γραφικά Απόδοση 3D σκηνών - Κινούµενα γραφικά Περιεχόµενα ενότητας Καταστολή κρυµµένων επιφανειών - Αλγόριθµος z-buffer Τρισδιάστατες επιφάνειες: Κύβος Σφαίρα Κώνος - Κύλινδρος - Κυκλικός δίσκος ακτύλιος Τοµέας

Διαβάστε περισσότερα

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος 4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Κεφάλαιο 2.3: Ρυθμίσεις των Windows Κεφάλαιο 2.3: Ρυθμίσεις των Windows 2.3.1 Βασικές πληροφορίες συστήματος Για να δούμε βασικές πληροφορίες για τον υπολογιστή μας, πατάμε το κουμπί «Έναρξη» και επιλέγουμε διαδοχικά «Πίνακας Ελέγχου», «Σύστημα

Διαβάστε περισσότερα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα Ασκήσεις της Ενότητας 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- α. Η χρήση της πένας Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα Υπάρχουν εντολές που μας επιτρέπουν να επιλέξουμε το χρώμα της πένας, καθώς και το

Διαβάστε περισσότερα

Απεικόνιση Υφής. Μέρος Α Υφή σε Πολύγωνα

Απεικόνιση Υφής. Μέρος Α Υφή σε Πολύγωνα Απεικόνιση Γραφικά ΥφήςΥπολογιστών Απεικόνιση Υφής Μέρος Α Υφή σε Πολύγωνα Γ. Γ. Παπαϊωάννου, - 2008 Τι Είναι η Υφή; Η υφή είναι η χωρική διαμόρφωση των ποιοτικών χαρακτηριστικών της επιφάνειας ενός αντικειμένου,

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Σκοπός της 10ης άσκησης είναι να μάθουμε να χρησιμοποιούμε sprites και να φτιάξουμε ένα παιχνίδι που χρησιμοποιεί συγκρούσεις. Θα δούμε επίσης μερικά

Διαβάστε περισσότερα

Οδηγίες για το CABRI - GEOMETRY II Μωυσιάδης Πολυχρόνης - Δόρτσιος Κώστας

Οδηγίες για το CABRI - GEOMETRY II Μωυσιάδης Πολυχρόνης - Δόρτσιος Κώστας Οδηγίες για το CABRI - GEOMETRY II Μωυσιάδης Πολυχρόνης - Δόρτσιος Κώστας Εκτελώντας το πρόγραμμα παίρνουμε ένα παράθυρο εργασίας Γεωμετρικών εφαρμογών. Τα βασικά κουμπιά και τα μενού έχουν την παρακάτω

Διαβάστε περισσότερα

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ Καμπυλόγραμμες Κινήσεις Επιμέλεια: Αγκανάκης Α. Παναγιώτης, Φυσικός http://phyiccore.wordpre.com/ Βασικές Έννοιες Μέχρι στιγμής έχουμε μάθει να μελετάμε απλές κινήσεις,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Μετασχηματισμοί Μοντελοποίησης (modeling transformations)

Μετασχηματισμοί Μοντελοποίησης (modeling transformations) Μετασχηματισμοί Δ Μετασχηματισμοί Μοντελοποίησης (modeling trnformtion) Καθορισμός μετασχηματισμών των αντικειμένων Τα αντικείμενα περιγράφονται στο δικό τους σύστημα συντεταγμένων Επιτρέπει την χρήση

Διαβάστε περισσότερα

Η εντολή «επανέλαβε Χ»

Η εντολή «επανέλαβε Χ» Η εντολή «επανέλαβε Χ» Όπως είδαμε πιο πάνω, η εντολή για πάντα είναι χρήσιμη σε διάφορα προγράμματα όταν π.χ. θέλουμε να δείξουμε την κίνηση της γης γύρω από τον ήλιο ή για να αναπαραστήσουμε το δίλημμα

Διαβάστε περισσότερα

αντίστοιχο γεγονός. Όταν όντως το κουμπί

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

Διαβάστε περισσότερα

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro Για να μπορέσουμε να εισάγουμε δεδομένα από το πληκτρολόγιο αλλά και για να εξάγουμε εμφανίσουμε αποτελέσματα στην οθόνη του υπολογιστή χρησιμοποιούμε τις εντολές Εισόδου και Εξόδου αντίστοιχα. Σύνταξη

Διαβάστε περισσότερα

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης 1 Λεπτομέριες τοιχοποιϊας Σχεδίαση κάτοψης Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης Ξεκινώντας το πρόγραμμα εμφανίζονται οι επιλογές σχετικά με το τι θέλετε να κάνετε. Δημιουργώντας Νέο Δωμάτιο Όταν ο

Διαβάστε περισσότερα

Βασικές αρχές σχεδίασης (Α)

Βασικές αρχές σχεδίασης (Α) Βασικές αρχές σχεδίασης (Α) Περιεχόµενα ενότητας Πρωτογενείς τύποι δεδοµένων Ονοµατολογία Συµβάσεις Η µηχανή καταστάσεων της OpenGL Περιβάλλον σχεδίασης Χρώµα Φιλοσοφία σχεδιάσης στην OpenGL Σχεδίαση σηµείων

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή

Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή Oι οπτικές επιδράσεις, που μπορεί να προκαλέσει μια εικόνα στους χρήστες, αποτελούν ένα από τα σπουδαιότερα αποτελέσματα των λειτουργιών γραφικών με Η/Υ. Τον όρο της οπτικοποίησης

Διαβάστε περισσότερα

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα 1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα 1. Σύστημα Συντεταγμένων Το σύστημα συντεταγμένων που έχουμε συνηθίσει από το σχολείο τοποθετούσε το σημείο (0,0) στο σημείο τομής των δυο αξόνων Χ και Υ.

Διαβάστε περισσότερα

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται

Διαβάστε περισσότερα

Μαθηματικό υπόβαθρο. Κεφάλαιο 3. Μαθησιακοί στόχοι. 3.1 Εισαγωγή. 3.2 Σημεία και διανύσματα

Μαθηματικό υπόβαθρο. Κεφάλαιο 3. Μαθησιακοί στόχοι. 3.1 Εισαγωγή. 3.2 Σημεία και διανύσματα Κεφάλαιο 3 Μαθηματικό υπόβαθρο Μαθησιακοί στόχοι Μετά την ολοκλήρωση αυτού του κεφαλαίου, ο αναγνώστης θα είναι σε θέση: Να γνωρίζει τις βασικές ιδιότητες και να πραγματοποιεί πράξεις των σημείων και των

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

Διαβάστε περισσότερα

Συναφείς µετασχηµατισµοί:

Συναφείς µετασχηµατισµοί: Μετασχηµατισµοί Μετασχηµατισµός: απεικόνιση ενός σηµείου ή διανύσµατος σε άλλο σηµείο ή διάνυσµα Q=T(P), v=r(u) Οµογενείς συντεταγµένες: ενιαίος ορισµός q=f(p) Γενική περίπτωση: υπολογισµός για κάθε σηµείο

Διαβάστε περισσότερα

Εισαγωγή στην επανάληψη

Εισαγωγή στην επανάληψη Εισαγωγή στην επανάληψη Στο κεφάλαιο αυτό ήρθε η ώρα να μελετήσουμε την επανάληψη στον προγραμματισμό λίγο πιο διεξοδικά! Έχετε ήδη χρησιμοποιήσει, χωρίς πολλές επεξηγήσεις, σε προηγούμενα κεφάλαια τις

Διαβάστε περισσότερα

Σχετική κίνηση αντικειμένων

Σχετική κίνηση αντικειμένων Σχετική κίνηση αντικειμένων Πως θα μπορούσε να κινηθεί ένας χαρακτήρας προς την έξοδο ενός λαβύρινθου; Πως θα μπορούσε το αυτοκινητάκι μας να κινείται μέσα στην πίστα; Πως θα μπορούσαμε να αναπαραστήσουμε

Διαβάστε περισσότερα

Σύντομος οδηγός αναφοράς Για Windows Έκδοση 4.0

Σύντομος οδηγός αναφοράς Για Windows Έκδοση 4.0 Σύντομος οδηγός αναφοράς Για Windows Έκδοση 4.0 Παράθυρα των εγγράφων Επιφάνεια του σχεδίου. Σχεδιάστε εδώ νέα αντικείμενα με τα εργαλεία σημείων, διαβήτη, σχεδίασης ευθύγραμμων αντικειμένων και κειμένου.

Διαβάστε περισσότερα

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

Τμήμα Μηχανικών Σχεδίασης Προϊόντων & Συστημάτων ΓΡΑΦΙΚΑ (6151) ΕΝΔΕΙΚΤΙΚΕΣ ΠΡΟΑΙΡΕΤΙΚΕΣ ΑΣΚΗΣΕΙΣ

Τμήμα Μηχανικών Σχεδίασης Προϊόντων & Συστημάτων ΓΡΑΦΙΚΑ (6151) ΕΝΔΕΙΚΤΙΚΕΣ ΠΡΟΑΙΡΕΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΓΡΑΦΙΚΑ (6151) ΕΝΔΕΙΚΤΙΚΕΣ ΠΡΟΑΙΡΕΤΙΚΕΣ ΑΣΚΗΣΕΙΣ Άσκηση 1 (Βαρύτητα 30%. Ομάδες: μέχρι 2 ατόμων): Ανάπτυξη 2Δ παιχνιδιού τύπου «ποδοσφαιράκι» το οποίο θα έχει τις παρακάτω λειτουργίες/δυνατότητες: Μπάλα:

Διαβάστε περισσότερα

Θέση και Προσανατολισμός

Θέση και Προσανατολισμός Κεφάλαιο 2 Θέση και Προσανατολισμός 2-1 Εισαγωγή Προκειμένου να μπορεί ένα ρομπότ να εκτελέσει κάποιο έργο, πρέπει να διαθέτει τρόπο να περιγράφει τα εξής: Τη θέση και προσανατολισμό του τελικού στοιχείου

Διαβάστε περισσότερα

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: PowerPoint Κεφάλαιο 2: Εκκίνηση του PowerPoint... 13

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: PowerPoint Κεφάλαιο 2: Εκκίνηση του PowerPoint... 13 Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 Κεφάλαιο 1: PowerPoint... 9 Κεφάλαιο 2: Εκκίνηση του PowerPoint... 13 Κεφάλαιο 3: Δημιουργία νέας παρουσίασης... 27 Κεφάλαιο 4: Μορφοποίηση κειμένου παρουσίασης...

Διαβάστε περισσότερα

Παράδειγμα «Ημίτονο και ζωγραφική!»: Έχει δει στα μαθηματικά τη γραφική παράσταση της συνάρτησης του ημιτόνου; Σας θυμίζει κάτι η παρακάτω εικόνα;

Παράδειγμα «Ημίτονο και ζωγραφική!»: Έχει δει στα μαθηματικά τη γραφική παράσταση της συνάρτησης του ημιτόνου; Σας θυμίζει κάτι η παρακάτω εικόνα; Τελεστές, συνθήκες και άλλα! Όπως έχει διαφανεί από όλα τα προηγούμενα παραδείγματα, η κατασκευή κατάλληλων συνθηκών στις εντολές εάν, εάν αλλιώς, για πάντα εάν, περίμενε ώσπου, επανέλαβε ώσπου, είναι

Διαβάστε περισσότερα

QS-LIS 2011 www.qslis-software.com

QS-LIS 2011 www.qslis-software.com QS-LIS 2011 www.qslis-software.com ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΜΕΤΡΗΣΕΙΣ ΑΠΟ ΕΙΚΟΝΕΣ ΣΧΕΔΙΟΥ Το περιεχόμενο του παρόντος τεύχους αποτελεί έργο επιστημονικού και πνευματικού μόχθου και πνευματικήν ιδιοκτησία του Γιάννη

Διαβάστε περισσότερα

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας Η πρώτη οθόνη μετά την εκτέλεση του προγράμματος διαφέρει κάπως από τα προηγούμενα λογισμικά, αν και έχει αρκετά κοινά στοιχεία. Αποτελείται

Διαβάστε περισσότερα

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό 5 ο Εργαστήριο Λογικοί Τελεστές, Δομές Ελέγχου Λογικοί Τελεστές > μεγαλύτερο = μεγαλύτερο ή ίσο!= διαφορετικό Οι λογικοί τελεστές χρησιμοποιούνται για να ελέγξουμε

Διαβάστε περισσότερα

Scratch 2.0 Προκλήσεις

Scratch 2.0 Προκλήσεις Scratch 2.0 Προκλήσεις Οι µαθητές, εκτός από τα φύλλα εργασίας και τις ασκήσεις, προτείνεται να υλοποιούν και µία προγραµµατιστική πρόκληση σε κάθε ένα από τα 12 µαθήµατα. Οι προγραµµατιστικές προκλήσεις

Διαβάστε περισσότερα

Άσκηση 6 η Ανύψωση Σχημάτων. Στόχος της άσκησης

Άσκηση 6 η Ανύψωση Σχημάτων. Στόχος της άσκησης Άσκηση 6 η Ανύψωση Σχημάτων Στόχος της άσκησης Στην παρούσα άσκηση θα δούμε πως μπορούμε να ανυψώσουμε μία διατομή κατά μήκος μίας καμπύλης spline, η οποία παίζει το ρόλο της διαδρομής, με σκοπό να δημιουργήσουμε

Διαβάστε περισσότερα

2ο Μάθημα Μετασχηματισμοί 2Δ/3Δ και Συστήματα Συντεταγμένων

2ο Μάθημα Μετασχηματισμοί 2Δ/3Δ και Συστήματα Συντεταγμένων 2ο Μάθημα Μετασχηματισμοί 2Δ/3Δ και Συστήματα Συντεταγμένων Γραφικα Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Ακ Έτος 2016-17 Σύνοψη του σημερινού μαθήματος 1 Εισαγωγή 2 Επανάληψη 3 Συσχετισμένοι 4 Γραμμικοί

Διαβάστε περισσότερα

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας Περιεχόμενα Κεφάλαιο 1 Microsoft Excel 2010... 7 Κεφάλαιο 2 Η δομή ενός φύλλου εργασίας... 19 Κεφάλαιο 3 ημιουργία νέου βιβλίου εργασίας και καταχώριση δεδομένων... 24 Κεφάλαιο 4 Συμβουλές για την καταχώριση

Διαβάστε περισσότερα

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31 Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 91 Windows Vista... 9 92 Επιφάνεια εργασίας... 18 93 Γραμμή εργασιών... 31 94 Χειρισμός παραθύρων... 53 95 Το παράθυρο Υπολογιστής... 77 96 Το μενού Έναρξη...

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0 ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0 20130510 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εγκατάσταση προγράμματος DCAD 2 2. Ενεργοποίηση Registration 2 3. DCAD 3 3.1 Εισαγωγή σημείων 3 3.2 Εξαγωγή σημείων 5 3.3 Στοιχεία ιδιοκτησίας

Διαβάστε περισσότερα

Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods)

Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods) 1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods) Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιεχόμενα

Διαβάστε περισσότερα

Συσκευές εισόδου. Φυσικές συσκευές εισόδου Λογικές συσκευές εισόδου

Συσκευές εισόδου. Φυσικές συσκευές εισόδου Λογικές συσκευές εισόδου Αλληλεπίδραση Project sketchpad: πρώτο αλληλεπιδραστικό πρόγραµµα γραφικών Αλληλεπίδραση βασικό συστατικό προγραµµάτων γραφικών Η OpenGL δεν υποστηρίζει άµεσα αλληλεπίδραση (συναρτήσεις διαχείρισης παραθύρων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 1. Σταύρος Παπαϊωάννου

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 1. Σταύρος Παπαϊωάννου ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ Μαθηματικά Σταύρος Παπαϊωάννου Ιούνιος 05 Τίτλος Μαθήματος Περιεχόμενα Χρηματοδότηση.. Σφάλμα! Δεν έχει οριστεί σελιδοδείκτης. Σκοποί Μαθήματος

Διαβάστε περισσότερα

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5) ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ Τοποθετώ μια δισκέτα στον οδηγό τη δισκέτας του υπολογιστή. Τοποθετώ τη δισκέτα που έχει το αρχείο μου στον οδηγό τη δισκέτας του υπολογιστή.

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Προγραμματισμός με Logo στο MicroWorlds Pro

Προγραμματισμός με Logo στο MicroWorlds Pro 1 Προγραμματισμός με Logo στο MicroWorlds Pro Η Logo είναι μια γλώσσα προγραμματισμού ειδικά σχεδιασμένη για τους μαθητές. Το πιο βασικό ίσως εργαλείο της Logo είναι η χελώνα. Κάποιες βασικές εντολές της

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΗ ΜΗΧΑΝΟΛΟΓΙΚΩΝ ΚΑΤΑΣΚΕΥΩΝ ΜΕ Η/Υ (Computer Aided Design)

ΣΧΕΔΙΑΣΗ ΜΗΧΑΝΟΛΟΓΙΚΩΝ ΚΑΤΑΣΚΕΥΩΝ ΜΕ Η/Υ (Computer Aided Design) ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΣΧΕΔΙΑΣΗ ΜΗΧΑΝΟΛΟΓΙΚΩΝ ΚΑΤΑΣΚΕΥΩΝ ΜΕ Η/Υ (Computer Aided Design) Ενότητα # 2: Στερεοί Μοντελοποιητές (Solid Modelers) Δρ Κ. Στεργίου

Διαβάστε περισσότερα

Γεωργάκης Αριστείδης ΠΕ20

Γεωργάκης Αριστείδης ΠΕ20 1 Εκκίνηση για πρώτη φορά Όπως συμβαίνει και με τις υπόλοιπες εφαρμογές του OpenOffice, έτσι και το Impress μπορούμε να το εκκινήσουμε μέσω της συντόμευσης που εγκαθίσταται αυτόματα στην επιφάνεια εργασίας

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 3: Πίνακες, βρόχοι, συναρτήσεις 1 Ιουνίου 2017 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία

Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία Γραφικά µε Υπολογιστές Μετασχηµατισµοί Σύνθετη Γεωµετρία Σύστηµα Συντεταγµένων Κάθε VRML κόσµος έχει το δικό του σύστηµα συντεταγµένων, το οποίο είναι ένα τρισδιάστατο καρτεσιανό σύστηµα, µε τηθετική πλευρά

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Vodafone Business Connect

Vodafone Business Connect Vodafone Business Connect Vodafone Business WebHosting Αναλυτικός Οδηγός Χρήσης Photo Album Αναλυτικός οδηγός χρήσης: Photo Album Vodafone Business Connect - Υπηρεσίες φιλοξενίας εταιρικού e-mail & web

Διαβάστε περισσότερα

Τυπικές χρήσεις της Matlab

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ

ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ Αντικείμενο: Κατανόηση και αναπαράσταση των βασικών σημάτων δύο διαστάσεων και απεικόνισης αυτών σε εικόνα. Δημιουργία και επεξεργασία των διαφόρων

Διαβάστε περισσότερα

Δημιουργία και επεξεργασία διανυσματικών επιπέδων στο QGIS

Δημιουργία και επεξεργασία διανυσματικών επιπέδων στο QGIS Δημιουργία και επεξεργασία διανυσματικών επιπέδων στο QGIS Δημιουργία επιπέδου σχεδίασης 1. Από το Menu Layer Create Layer New Shapefile Layer δημιουργούμε νέο επίπεδο. Στο παράθυρο που ανοίγει (Εικ. 1)

Διαβάστε περισσότερα

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ 2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ Η σάρωση ενός εγγράφου εισάγει στον υπολογιστή μια εικόνα, ενώ η εκτύπωση μεταφέρει στο χαρτί μια εικόνα από αυτόν. Για να αντιληφθούμε επομένως τα χαρακτηριστικά των σαρωτών

Διαβάστε περισσότερα

Τα Windows Πολύ Απλά και Πολύ Σύντομα

Τα Windows Πολύ Απλά και Πολύ Σύντομα Σαχπατζίδης Αβραάμ Καθηγητής Πληροφορικής Π.Ε 20 Master of Arts (M.A) in "Gender, New Forms of Education, New Forms of Employment and New Technologies in the Information Age". Τα Windows Πολύ Απλά και

Διαβάστε περισσότερα

Ας μετονομάσουμε τη γάτα που εμφανίζεται μόλις ανοίγουμε το Scratch. Επιλέγουμε το εικονίδιο Μορφή1 που βρίσκεται στη λίστα αντικειμένων.

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

Διαβάστε περισσότερα

Περιοχή εργασίας. Τμ. Γραφιστικής (Γραφιστική με Η/Υ - In Design) 2

Περιοχή εργασίας. Τμ. Γραφιστικής (Γραφιστική με Η/Υ - In Design) 2 Περιοχή εργασίας A. Παράθυρο εγγράφου B. Συγκέντρωση πινάκων συμπτυγμένων σε εικονίδια Γ. Γραμμή τίτλου πίνακα Δ. Γραμμή μενού E. Γραμμή επιλογών Στ. Παλέτα εργαλείων Ζ. Κουμπί σύμπτυξης σε εικονίδια Η.

Διαβάστε περισσότερα

KTurtle. KTurtle του KDE. KTurtle (καμβάς), Επεξεργαστής Κώδικα και Επιθεωρητής (Εικόνα 2.1). Στην Κονσόλα (Εκτελεστής) Επιφάνεια Εργασίας (καμβάς)

KTurtle. KTurtle του KDE. KTurtle (καμβάς), Επεξεργαστής Κώδικα και Επιθεωρητής (Εικόνα 2.1). Στην Κονσόλα (Εκτελεστής) Επιφάνεια Εργασίας (καμβάς) Το πρόγραμμα KTurtle είναι διαθέσιμο για όλες τις μεγάλες διανομές Linux καθώς και για Windows: http://windows.kde.org/ Μπορείτε να το κατεβάσετε και να το εγκαταστήσετε στον υπολογιστή σας εντελώς δωρεάν

Διαβάστε περισσότερα

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

Κλασσική παρατήρηση & παρατήρηση με υπολογιστή Κλασσική παρατήρηση & παρατήρηση με υπολογιστή Πολλέςαπότιςεργασίεςσχεδίασης (αρχιτεκτονικό, μηχανολογικό σχέδιο, κινούμενα σχέδια) γίνονται με υπολογιστή Ο χρήστης θα πρέπει να μπορεί να παράξει «κλασικές»

Διαβάστε περισσότερα

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης Φύλλα εργασίας MicroWorlds Pro Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο Β. Χ. Χρυσοχοΐδης Πρόεδρος Συλλόγου Εκπαιδευτικών Πληροφορικής Φλώρινας 2 «Σχεδίαση και ανάπτυξη δραστηριοτήτων

Διαβάστε περισσότερα