Γραφικά Υπολογιστών. Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Ανατολικής Μακεδονίας και Θράκης. Γραφικά Υπολογιστών ΣΤ Εξάμηνο. Δρ Κωνσταντίνος Δεμερτζής
|
|
- Ιδουμα Παπαδόπουλος
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Ανατολικής Μακεδονίας και Θράκης ΣΤ Εξάμηνο Δρ Κωνσταντίνος Δεμερτζής
2 1 η Ενότητα OpenGL
3
4 Τι είναι η OpenGL Η OpenGL δεν είναι μια συγκεκριμένη βιβλιοθήκη γραφικών. Είναι ένα πρότυπο που καθορίζει τις λειτουργίες που πρέπει να υποστηρίζει μία βιβλιοθήκη γραφικών ούτως ώστε να είναι συμβατή με αυτήν. Η OpenGL ορίζει μια προγραμματιστική διεπιφάνεια (Application PrograΜΜing Interface) σχεδίασης γραφικών. Χαρακτηριστικά της OpenGL Ο προγραμματιστής προγραμματίζει χρησιμοποιώντας μια υλοποίηση της OpenGL. Μια βιβλιοθήκη που υλοποιεί το πρότυπο της OpenGL μπορεί να συνταχθεί σε οποιαδήποτε γλώσσα προγραμματισμού (η OpenGL είναι πρότυπο ανεξάρτητο πλατφόρμας). Οι περισσότεροι μεταγλωττιστές εμπεριέχουν ή μπορεί να ενσωματωθεί σε αυτούς μία βιβλιοθήκη της OpenGL. Στο παρόν σεμινάριο θα χρησιμοποιηθεί υλοποίηση της OpenGL στη γλώσσα προγραμματισμού C.
5 Κατηγορίες βιβλιοθηκών της OpenGL GL Core Library: Περιέχει βασικές εντολές σχεδίασης (σχεδίαση βασικών γεωμετρικών σχημάτων, ορισμός χρωμάτων κλπ.) Ολες οι ρουτίνες της βιβλιοθήκης ξεκινούν με το πρόθεμα gl OpenGL Utility Library (GLU): Περιέχει πιο εξειδικευμένες λειτουργίες (Σχεδίαση σύνθετων επιφανειών, ορισμός προβολών κλπ) Ολες οι ρουτίνες της βιβλιοθήκης ξεκινούν με το πρόθεμα glu OpenGL Utility Toolkit (GLUT): Ρουτίνες εισόδου-εξόδου (σχηματισμός παραθύρων, διαχείριση γεγονότων κλπ.). Κατ εξαίρεση, οι εντολές της GLUT εξαρτώνται από την αρχιτεκτονική του συστήματος. Ολες οι εντολές της βιβλιοθήκης ξεκινούν με το πρόθεμα glut.
6 Ένα τυπικό παράδειγμα #include <glut.h> void display() { glclearcolor(1,1,1,0); } glclear(gl_color_buffer_bit); glbegin(gl_lines); glcolor3f(1,0,0); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
7 Κεφαλίδες της OpenGL #include <glut.h>= Επιτρέπει τη χρήση βιβλιοθηκών της OpenGL #include <gl.h>= OpenGL Core Library #include <glu.h>= OpenGL Utility #include <glut.h>= OpenGL Core Library + OpenGL Utility + OpenGL Utility Toolkit
8 Ανάλυση παραδείγματος glutinit(): Ενεργοποιεί τη χρήση των εντολών της βιβλιοθήκης GLUT. int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
9 Ανάλυση παραδείγματος glutinitwindowposition: ηλώνει τη θέση στην οθόνη όπου θα εμφανιστεί το παράθυρο της εφαρμογής int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
10 Ανάλυση παραδείγματος glutinitwindowsize: Ορίζει τις διαστάσεις του παραθύρου της εφαρμογής σε pixels int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
11 Ανάλυση παραδείγματος int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode: Καθορίζει ρυθμίσεις απεικόνισης (μοντέλο ενταμίευσης, χρωματικό μοντέλο κ.λ.π.) glutinitdisplayμode(glut_single GL UT_RGB); glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
12 Ανάλυση παραδείγματος int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutcreatewindow: Εμφανίζει το παράθυρο της εφαρμογής glutinitdisplayμode(glut_single GL UT_RGB); glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
13 Ανάλυση παραδείγματος int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); glμatrixμode: Επιλέγει τo μητρώο που επιθυμούμε να τροποποιήσουμε (προβολής ή μετασχηματισμού μοντέλου) glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
14 Ανάλυση παραδείγματος int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); gluortho2d: ήλωση παράλληλης προβολής glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
15 Ανάλυση παραδείγματος int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); glutdisplayfunc: ηλώνει τη συνάρτηση που θα εκτελείται κάθε φορά που απαιτείται σχεδιασμός της σκηνής glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
16 Ανάλυση παραδείγματος int Μain(int argc, char** argv){ glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplayμode(glut_single GL UT_RGB); glutμainloop: Ενεργοποιεί τον κύκλο ακρόασης γεγονότων glutcreatewindow("a saμple OpenGL application"); glμatrixμode(gl_projection); gluortho2d(0,50,0,50); glutdisplayfunc(display); glutμainloop(); return 0;}
17 Ανάλυση παραδείγματος glclearcolor: ήλωση χρώματος καθαρισμού της οθόνης void display() { glclearcolor(1,1,1,0); glclear(gl_color_buffer_bit); glcolor3f(1,0,0); glbegin(gl_lines); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); }
18 Ανάλυση παραδείγματος glclear: Καθαρισμός οθόνης (καθαρισμός ενός από τους ενταμιευτές του συστήματος γραφικών) void display() { glclearcolor(1,1,1,0); glclear(gl_color_buffer_bit); glcolor3f(1,0,0); glbegin(gl_lines); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); }
19 Ανάλυση παραδείγματος void display() { glclearcolor(1,1,1,0); glclear(gl_color_buffer_bit); glcolor*: Επιλογή χρώματος σχεδίασης glcolor3f(1,0,0); glbegin(gl_lines); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); }
20 Ανάλυση παραδείγματος void display() { glclearcolor(1,1,1,0); glclear(gl_color_buffer_bit); glcolor3f(1,0,0); glbegin/glend: Μεταξύ αυτών των εντολών δηλώνονται συντεταγμένες κορυφών γεωμετρικών σχημάτων. Το είδος των σχημάτων καθορίζεται από το όρισμα της glbegin. glbegin(gl_lines); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); }
21 Ανάλυση παραδείγματος void display() { glclearcolor(1,1,1,0); glclear(gl_color_buffer_bit); glcolor3f(1,0,0); glvertex*: ήλωση συντεταγμένων μεμονωμένων κορυφών glbegin(gl_lines); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); }
22 Ανάλυση παραδείγματος void display() { glclearcolor(1,1,1,0); glclear(gl_color_buffer_bit); glcolor3f(1,0,0); glflush: Προωθεί την εκτέλεση εντολών που εκκρεμούν. glbegin(gl_lines); glvertex2i(20,20); glvertex2i(40,40); glend(); glflush(); }
23 Αποτέλεσμα παραδείγματος
24 Πρωτογενείς τύποι δεδομένων Τύπος της OpenGL Τύπος δεδομένων Αντίστοιχος τύπος στη C Επίθημα GLbyte ακέραιος 8bits signed char b GLshort ακέραιος 16bits short s GLint / GLsizei ακέραιος 32bits int/long i GLfloat / GLclaΜpf GLdouble / GLclaΜpd GLubyte / GLboolean GLushort GLuint/GLenuΜ/GLbitfield κινητής υποδιαστολής κινητής υποδιαστολής διπλής ακρίβειας ακέραιος 8bits χωρίς πρόσημο ακέραιος 16bits χωρίς πρόσημο ακέραιος 32bits χωρίς πρόσημο float double unsigned char unsigned short unsigned int unsigned long f d ub us ui
25 Ονοματολογία συμβολικών σταθερών στην OpenGL Συμβολικές σταθερές: προκαθορισμένες σταθερές που συνήθως χρησιμοποιούνται ως ορίσματα σε εντολές τις OpenGL και εκπροσωπούν συγκεκριμένες ρυθμίσεις. Συμβολικές σταθερές της κύριας βιβλιοθήκης (core library): GL_(όνομα_σταθεράς), πχ GL_COLOR_BUFFER_BIT GL_LIGHTING Συμβολικές σταθερές της της βιβλιοθήκης GLUT: GLUT_(όνομα_σταθεράς), πχ GLUT_RGB
26 Ονοματολογία εντολών στην OpenGL Στην OpenGL για ορισμένες εντολές ορίζονται πολλαπλές παραλλαγές, ανάλογα με: τον τύπο των ορισμάτων που δέχονται (π.χ. ακέραιοι ή πραγματικοί), τις διαστάσεις του χώρου (π.χ. σχεδίαση σε δύο ή τρείς διαστάσεις) το χρωματικό μοντέλο τον τρόπο με τον οποίο περνάμε ορίσματα (call by value ή call by reference). Οι εντολές στην OpenGL έχουν επίθημα που καθορίζει το πλήθος και τύπο των ορισμάτων που δέχονται. Τα επιθήματα συνδυάζονται ως εξής: gl +όνομα εντολής +διάσταση χώρου ή πλήθος χρωματικών τιμών {2,3,4} +επίθημα πρωτογενούς τύπου δεδομένων {ubsifd} +είδος ορισμάτων (τιμές ή δείκτες σε μητρώα) {-/v} glfunctionnaμe{234}{ubsifd}{v}
27 Παράδειγμα ονοματολογίας: glvertex ήλωση σημείου στο διδιάστατο χώρο {2} με συντεταγμένες που δίνονται ως πραγματικοί αριθμοί απλής ακρίβειας {f}: glvertex2f (GLfloat x, GLfloat y); ήλωση σημείου στον τρισδιάστατο χώρο {3} με συντεταγμένες που δίνονται ως προσημασμένοι ακέραιοι {i}: glvertex3i(glint x, GLint y, GLint z); Για πραγματικές συντεταγμένες {f} ενός σημείου στον τρισδιάστατο χώρο {3} που δίνονται με τη μορφή μητρώου (όρισμα δείκτης σε πίνακα) {v}: GLfloat coord[ ]={1,2,3}; glvertex3fv(const GLfloat *coord);
28 H OpenGL ως μηχανή καταστάσεων Το περιβάλλον τηςopengl λειτουργεί ως μια μηχανή καταστάσεων Μηχανή καταστάσεων: Ένα περιβάλλον, το οποίο, σε κάθε χρονική στιγμή, λειτουργεί βάσει προκαθορισμένων ιδιοτήτων, των μεταβλητών κατάστασης (state variables). Μεταβλητές κατάστασης: Έχουν μια προκαθορισμένη αρχική τιμή η οποία μπορεί να μεταβληθεί κατά την πορεία της εκτέλεσης του κώδικα από τον προγραμματιστή. Οι τρέχουσες τιμές των μεταβλητών παραμένουν ενεργές. Παραδείγματα μεταβλητών κατάστασης Ορισμένα παραδείγματα μεταβλητών κατάστασης: τρέχον χρώμα σχεδίασης πάχος γραμμών χρώμα καθαρισμού της οθόνης (φόντου) Είναι σημαντικό ο προγραμματιστής να αρχικοποιεί τις μεταβλητές κατάστασης, όποτε αυτό είναι απαραίτητο και να παρακολουθεί τις τιμές τους.
29 Ιδιότητες δύο καταστάσεων Έχουν δύο πιθανές τιμές (TRUE ή FALSE) Καθορίζουν την ενεργοποίηση ή μη εξειδικευμένων λειτουργιών (μίξη χρωμάτων, φωτορεαλισμός, απόδοση υφής κ.λ.π). ίνοντας στον προγραμματιστή τη δυνατότητα ενεργοποίησης λειτουργιών, η μηχανή της OpenGL βελτιστοποιεί το υπολογιστικό φορτίο. Οι υποστηριζόμενες λειτουργίες της μηχανής καταστάσεων της OpenGL ενεργοποιούνται και απενεργοποιούνται με τις εντολές (glenable και gldisable αντίστοιχα): void glenable(glenuμ cap); void gldisable(glenuμ cap); cap: Η ιδιότητα που ενεργοποιείται η απενεργοποιείται πχ glenable(gl_blend); Ενεργοποίηση μίξης χρωμάτων Κάθε ιδιότητα που ενεργοποιείται παραμένει ενεργή σε όλη τη διάρκεια εκτέλεσης τουπρογράμματος
30 Επισκόπηση ιδιοτήτων δύο καταστάσεων Προκειμένου να ελέγξουμε αν μια ιδιότητα δύο καταστάσεων είναι ενεργοποιημένη ή απενεργοποιημένη χρησιμοποιούμε την εντολή glisenabled: GLboolean glisenabled(glenuμ capability); Επιστρέφει GL_TRUE ή GL_FALSE, ανάλογα με το ανη εξεταζόμενη ιδιότητα είναι ενεργοποιημένη ή όχι. Ιδιότητες κατάστασης πολλαπλών τιμών Υπάρχουν μεταβλητές κατάστασης που μπορούν να πάρουν περισσότερες από δύο τιμές (πχ τρέχον χρώμα σχεδίασης ή πάχος γραμμών) Οι τιμές των συνθετων ιδιοτήτων κατάστασης ρυθμίζονται με ξεχωριστές εντολές τηςopengl η καθεμιά.
31 Επισκόπηση σύνθετων ιδιοτήτων κατάστασης Οι εντολές glget{type}v χρησιμοποιούνται για την επισκόπηση της τρέχουσας τιμής μεταβλητών κατάστασης void glgetbooleanv(glenuμ paraμeternaμe, GLboolean *paraμeters); void glgetintegerv(glenuμ paraμeternaμe, GLint *paraμeters); void glgetfloatv(glenuμ paraμeternaμe, GLfloat *paraμeters); void glgetdoublev(glenuμ paraμeternaμe, GLdouble *paraμeters); paraμeternaμe: συμβολική σταθερά που καθορίζει την ιδιότητα paraμeters: δείκτης σε μητρώο όπου αποθηκεύεται η τιμή ή το σύνολο τιμών που προσδιορίζουν την ιδιότητα. Παράδειγμα: Το μητρώο paraμeters θα περιέχει τις τιμές τριών χρωματικών συνιστωσών (μοντέλο RGB, διάσταση 3): GLfloat colorval[3]; Παράμετρος = τρέχον χρώμα σχεδίασης: paraμeternaμe = GL_CURRENT_COLOR Αποθήκευση των τρεχουσών χρωματικών συνιστωσών στο μητρώο colorval: glgetfloatv( GL_CURRENT_COLOR, colorval );
32 Σχεδίαση στην OpenGL Όλα τα γεωμετρικά σχήματα ορίζονται με δήλωση των κορυφών τους Σύνθετα σχήματα προσεγγίζονται από στοιχειώδη βασικά σχήματα. Κάθε σημείο της σκηνής αναπαρίσταται, στη γενική περίπτωση, σε τρισδιάστατο καρτεσιανό σύστημα συντεταγμένων. Το σύστημα συντεταγμένων είναι δεξιόστροφο. Ομογενείς συντεταγμένες Όλα τα σημεία αναπαρίστανται με τέσσερις συντεταγμένες κινητής υποδιαστολής (x, y, z, w). Η δήλωση ενός σημείου με ομογενείς συντεταγμένες (x, y, z, w) ορίζει τρισδιάστατο χώρο χώρο ένα σημείο με συντεταγμένες (x/w, y/w, z/w) Αν δε δίνεται η συντεταγμένη z, το σύστημα θεωρεί την τιμή 0. Αν δε δίνεται η συντεταγμένη w, το σύστημα θεωρεί την τιμή 1. στον
33 Καθαρισμός οθόνης Πριν το σχεδιασμό μιας σκηνής, απαιτείται ο καθαρισμός του ενταμιευτή χρωματικών τιμών (color buffer) του υπολογιστή, Ενταμιευτής χρωματικών τιμών: περιοχή μνήμης όπου αποθηκεύονται οι χρωματικές πληροφορίες για τη σχεδιαζόμενη σκηνή Καθαρισμός οθόνης = αρχικοποίηση των ενταμιευτών με κάποια προκαθορισμένη τιμή. Ο καθαρισμός τηε οθόνης γίνεται με το χρώμα φόντου που επιλέγει ο προγραμματιστής. Ρύθμιση χρώματος καθαρισμού Το χρώμα καθαρισμού της οθόνης είναι μεταβλητή κατάστασης και ορίζεται με την εντολή glclearcolor, πχ glclearcolor(glfloat red, GLfloat green, GLfloat blue, GLfloat alpha); (red, green, blue, alpha: τα βάρη του χρώματος στο χρωματικό μοντέλο RGBA) Το χρώμα καθαρισμού, ως μεταβλητή κατάστασης, διατηρεί την τελευταία που τουανατέθηκε. τιμή
34 Καθαρισμός buffer Ο καθαρισμός buffer αυτός καθεαυτός γίνεται με την εντολή glclear: void glclear(glenuμ buffer); H μηχανή της OpenGL περιέχει πολλούς buffer, οπότε πρεπει να καθορίσουμε το είδος τουενταμιευτή που επιθυμούμε να καθαρίσουμε: GL_COLOR_BUFFER_BIT: καθαρισμός ενταμιευτή χρωματικών τιμών (colour buffer) GL_DEPTH_BUFFER_BIT: καθαρισμός ενταμιευτή βάθους (depth buffer) Παράδειγμα: Καθαρισμός της οθόνης με μαύρο χρώμα glclearcolor(0.0, 0.0, 0.0, 0.0); glclear(gl_color_buffer_bit); Oρίζουμε το χρώμα καθαρισμού στην αρχή του προγράμματός μας και κατόπιν καθαρίζουμε τους buffer όσο συχνά χρειάζεται.
35 Καθαρισμός πολλαπλών buffer Η εντολή glclear επιτρέπει επίσης τον καθορισμό πολλαπλών ενταμιευτών με μία μόνο κλήση της. ίνουμε ως παραμέτρους πολλαπλούς ενταμιευτές διαχωρισμένους με τελεστές OR ( ). Π.χ. για τον ταυτόχρονο καθαρισμό του ενταμιευτή χρωματικών τιμών (color buffer) και τουενταμιευτή τιμών βάθους (depth buffer) δίνουμε: glclearcolor(0.0, 0.0, 0.0, 0.0); glcleardepth(0.0); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); Καθορισμός χρωμάτων Κάθε φορά που δίνουμε εντολή σχεδιάσης ενός συγκεκριμένου γεωμετρικού σχήματος, του αποδίδουμε το τρέχον χρώμα σχεδίασης Το χρώμα σχεδίασης, ως μεταβλητή κατάστασης, διατηρεί την τελευταία τιμή του. Για να καθορίσουμε ένα χρώμα, χρησιμοποιούμε την εντολή glcolor3{ub,f,d}.
36 Καθορισμός χρωμάτων Παράδειγμα: void glcolor3ub(glubyte red, GLubyte green, GLubyte blue); 0<r,g,b<255 void glcolor3f(glfloat red, GLfloat green, GLfloat blue); 0<r,g,b<1 void glcolor3d(gldouble red, GLdouble green, GLdouble blue); 0<r,g,b<1
37 Καθορισμός κορυφών Στην OpenGL, όλα τα γεωμετρικά σχήματα περιγράφονται δηλώνοντας τις κορυφές τους. Για τον καθορισμό κάθε μίας κορυφής χρησιμοποιούμε την εντολή glvertex*. void glvertex{234}{sifd}[v](type coords); Με τις παραλλαγές της εντολής glvertex, μπορούμε να δώσουμε από δύο (x, y) μέχρι και τέσσερις συντεταγμένες (x, y, z, w) για μία κορυφή. Παραδείγματα: glvertex2s(2,3); ήλωση σημείου με ακέραιες συντεταγμένες (x,y)=(2,3) glvertex3d ( 0,0, 3.14 ); ήλωση σημείου με συντεταγμένες (x,y,z)=(0,0,3.14) glvertex4f ( 2.3, 1.0, -2.2, 2 ); ήλωση σημείου ( 1.15, 0.5, -1.1 ) σε ομογενείς συντεταγμένες ( w=2 ) GLdouble dvect[3] = {5,9,1}; glvertex3dv(dvect); ( ήλωση σημείου που οι τιμές του ορίζονται στο μητρώο dvect)
38 Η δομή glbegin/glend Ο ορισμός των κορυφών κάθε γεωμετρικού σχήματος περικλείεται μεταξύ δύο εντολών, των glbegin και glend. void glbegin(glenuμ Μode); void glend(); Μεταξύ των εντολών glbegin και glend περικλείονται εντολές δήλωσης σημείων ορίζουν ένα γεωμετρικό σχήμα ή μία ομάδα γεωμετρικών σχημάτων. Το είδος του γεωμετρικού σχήματος που ορίζεται, εξαρτάται από την συμβολική σταθερά Μode που δίνουμε ως παράμετρο στην εντολή glbegin.
39 Σχεδίαση μεμονωμένων σημείων (GL_POINTS) ίνουμε ως όρισμα στην glbegin τη σταθερά GL_POINTS. Παράδειγμα: glbegin(gl_points); glvertex2i(10,10); glvertex2i(20,10); glend(); Ορισμός δύο σημείων με συντεταγμένες (10,10) και (20,10). Για τη ρύθμιση του μεγέθους ενός σημείου, χρησιμοποιούμε την εντολή glpointsize: void glpointsize(glfloat size); (size: το πλάτος του σημείου σε pixels) Η προκαθορισμένη τιμή του πάχπυς γραμμής είναι 1. Το πάχος σημείων είναι μεταβλητή κατάστασης, άρα διατηρεί την τελευταία του τιμή.
40 Σχεδίαση γραμμών Οι γραμμές χαράσσονται ορίζοντας τις συντεταγμένες των άκρων τους. Οι εντολές σχεδιάσης γραμμών μας επιτρέπουν να σχεδιάσουμε: α) Ευθύγραμμα τμήματα (GL_LINES) β) Αλυσίδες ευθυγράμμων τμημάτων (GL_LINE_STRIP) γ) Βρόχους ευθυγράμμων τμημάτων (GL_LINE_LOOP)
41 Σχεδίαση γραμμών Ευθύγραμμα τμήματα (GL_LINES) glbegin(gl_lines); Τα δοθέντα σημεία ορίζουν ανά ζεύγη ευθύγραμμα τμήματα. Όταν ο αριθμός των σημείων είναι περιττός, το τελευταίο σημείο αγνοείται. Παράδειγμα: glbegin(gl_lines); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();
42 Σχεδίαση γραμμών Αλυσίδες ευθυγράμμων τμημάτων (GL_LINE_STRIP) glbegin(gl_line_strip); Τα σημεία ορίζουν διαδοχικά ευθύγραμμα τμήματα. Παράδειγμα: glbegin(gl_line_strip); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();
43 Σχεδίαση γραμμών Βρόχους ευθυγράμμων τμημάτων (GL_LINE_LOOP) glbegin(gl_line_loop): Τα σημεία ορίζουν διαδοχικά ευθύγραμμα τμήματα. Το τελευταίο σημείo ενώνεται μετο αρχικό. Παράδειγμα: glbegin(gl_line_loop); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();
44 Ιδιότητες γραμμών Πάχος γραμμών Τροποποιείται με τη χρήση της εντολής gllinewidth: void gllinewidth(glfloat width); width: το πάχος της γραμμής σε pixels ιάστιξη γραμμών Χρήσιμη για τη σχεδιάση διακεκομμένων γραμμών Η διάστιξη γραμμών ενεργοποιείται δίνοντας την παράμετρο GL_LINE_STIPPLE στην εντολή glenable( ): glenable(gl_line_stipple);
45 Πολύγωνα Πολύγωνα: περιοχές που περικλείονται από βρόχους ευθύγραμμων τμημάτων. Τα πολύγωνα σχεδιάζονται συμπαγή ή τα περιγράμματά τους ή οι κορυφές τους. Κατηγορίες πολυγώνων: κυρτά και κοίλα Kυρτά πολύγωνα: Όλες οι εσωτερικές γωνίες τους είναι μικρότερες των 180 μοιρών Κοίλα πολύγωνα: Περιέχουν τουλάχιστον μια εσωτερική γωνία μεγαλύτερη των 180 μοιρών.
46 Περιορισμοί στη σχεδίαση πολυγώνων α) Οι ρουτίνες της OpenGL σχεδιάζουν κυρτά πολύγωνα. β) Οι πλευρές των πολυγώνων δεν μπορούν να τέμνονται. γ) Οι ρουτίνες της OpenGL δε μπορούν να σχεδιάσουν πολύγωνα με οπές. Εάν δώσουμε εντολή σχεδίασης ενός μη έγκυρου πολυγώνου, το αποτέλεσμα θα είναι απρόβλεπτο.
47 Σχεδίαση Πολύγωνων ηλώνουμε τις κορυφές ενός ή περισσοτέρων πολυγώνων μεταξύ glbegin και glend. Τρεις καταστάσης σχεδίασης: α) Σχεδίαση πολύγωνων (GL_POLYGON) β) Σχεδίαση τετραπλεύρων (GL_QUADS) γ) Σχεδίαση αλυσίδας τετραπλεύρων (GL_QUAD_STRIP) των εντολών
48 Σχεδίαση Πολύγωνων Σχεδίαση πολύγωνων (GL_POLYGON) glbegin(gl_polygon); Τα σημεία ορίζουν τις διαδοχικές κορυφές ενός μόνο πολυγώνου (πλήθος κορυφών 3) Το πολύγωνο πρέπει να είναι κυρτό και να μην έχει τεμνόμενες πλευρές. Παράδειγμα: glbegin(gl_polygon); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();
49 Σχεδίαση Πολύγωνων Σχεδίαση τετραπλεύρων (GL_QUADS) glbegin(gl_quads): Οι κορυφές ορίζουν ανά τέσσερις διακεκριμένα τετράπλευρα. (v0, v1,v2,,vn-1) (v0,v1,v2,v3), (v4,v5,v6,v7) κοκ Αν το πλήθος κορυφών δεν είναι πολλαπλάσιο του 4, τότε η μία, δύο ή τρεις τελευταίες κορυφές παραλείπονται. Παράδειγμα: glbegin(gl_quads); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glvertex*(v6); glvertex*(v7); glend();
50 Σχεδίαση Πολύγωνων Σχεδίαση αλυσίδας τετραπλεύρων (GL_QUAD_STRIP) glbegin(gl_quad_strip); Ορισμός αλυσίδας τετραπλεύρων με μία κοινη πλευρά. (v0,v1,v2,,vn) (v0,v1,v3,v2), (v2,v3,v5,v4) (v4,v5,v7,v6) κοκ Εάν το πλήθος των κορυφών είναι περιττό, η τελευταία κορυφή παραλείπεται. Παράδειγμα: glbegin(gl_quad_strip); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glvertex*(v6); glvertex*(v7); glend();
51 Σχεδίαση Τριγώνων Σχεδίαση ανεξαρτήτων τριγώνων (GL_TRIANGLES) glbegin(gl_triangles); Τα σημεία ορίζουν ανά τριάδες ανεξάρτητα τρίγωνα. (v0,v1,v2,,vn-1) (v0,v1,v2), (v3,v4,v5) κοκ Αν το πλήθος κορυφών δεν είναι ακέραιο πολλαπλάσιο του 3, η τελευταία ή οι δύο τελευταίες κορυφές παραλείπονται. Παράδειγμα: glbegin(gl_trianlges); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();
52 Σχεδίαση Τριγώνων Σχεδίαση αλυσίδας τριγώνων με κοινή πλευρά (GL_TRIANGLE_STRIP) glbegin(gl_triangle_strip): Οι κορυφές ορίζουν μια αλυσίδα τριγώνων. ιαδοχικά τρίγωνα της αλυσίδας έχουν μία κοινή πλευρά. (v0,v1,v2,,vn) (v0,v1,v2), (v2,v1,v3), (v2,v3,v4) κοκ Παράδειγμα: glbegin(gl_trianlge_strip); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glend();
53 Σχεδίαση Τριγώνων Σχεδίαση αλυσίδας τριγώνων με κοινή κορυφή (GL_TRIANGLE_FAN) glbegin(gl_triangle_fan): Οι κορυφές ορίζουν μια αλυσίδα τριγώνων. ιαδοχικά τρίγωνα της αλυσίδας έχουν μία κοινή πλευρά και όλα τα τρίγωνα έχουν την πρώτη κορυφή κοινή (v0,v1,v2,,vn) (v0,v1,v2), (v0,v2,v3), (v0,v3,v4) κοκ Παράδειγμα: glbegin(gl_triangle_fan); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glend();
54 Σχεδίαση ορθογωνίων Η OpenGL επιτρέπει το σχεδιασμό ορθογωνίων με την εντολή glrect*. void glrect{sifd}(type x1, TYPE y1, TYPE x2, TYPE y2); TYPE: τύπος δεδομένος που καθορίζεται από την παραλλαγή της glrect* που επιλέγουμε (GLfloat, GLint κλπ) (x1,y1) (x2,y2): συντεταγμένες των κορυφών της μίας διαγωνίου του ορθογωνίου Χρησιμοποιώντας την glrect τα ορθογώνια σχεδιάζονται στο επίπεδο z=0 με τις ακμές τους παράλληλες στους άξονες x,y. Οι παραλλαγές glrect*v δέχονται τις συντεταγμένες των κορυφών της διαγωνίου με τη μορφή μητρώων void glrect{sifd}v(type *v1, TYPE *v2);
55 Σχεδίαση καμπυλών Οποιαδήποτε καμπύλη γραμμή μπορεί να προσεγγιστεί από στοιχειώδη ευθύγραμμα τμήματα. Οποιαδήποτε επιφάνεια μπορεί να προσεγγιστεί ή από ένα πολυγωνικό πλέγμα. Με επαρκή δειγματοληψία, μπορούμε να υποδιαιρέσουμε καμπύλες γραμμές και επιφάνειες σε επιμέρους ευθύγραμμα τμήματα ή επίπεδα πολύγωνα. Οι βιβλιοθήκες GLU και GLUT προσφέρουν εντολές για τη σχεδίαση ορισμένων σύνθετων γεωμετρικών σχημάτων. Η σχεδίαση κυκλικών σχημάτων επιτυγχάνεται χρησιμοποιώντας την παραμετρική εξίσωση κύκλου σε πολικές συντεταγμένες. Με ένα στοιχειώδες γωνιακό βήμα dθ, σχεδιάζουμε κυκλικά σχήματα, συνενώνοντας σημεία της περιφέρειάς του με στοιχειώδη ευθύγραμμα τμήματα. Για τον υπολογισμό των συντεταγμένων κάθε σημείου του κύκλου απαιτείται ο υπολογισμός δύο τριγωνομετρικών αριθμών, (επιπλέον υπολογιστικό κόστος). Συμμετρίες ως προς την ευθεία y=x και ως προς τους άξονες x,y. Μπορούμε να περιορίσουμε τη χρήση των παραμετρικών εξισώσεων στο ένα όγδοο τουκύκλου. Αναπαραγάγουμε τα υπόλοιπα σημεία με σχέσεις συμμετρίας.
56 Προώθηση εντολών προς εκτέλεση (flushing) Σε ένα υπολογιστικό σύστηµα, οι εντολές εκτελούνται κατά οµάδες, αφού ολοκληρωθεί η συλλογή ενός πλήθους εντολών. Ωστόσο, για να σχεδιάστει ένα καρέ, ο προγραµµατιστής θα πρέπει να είναι βέβαιος ότι, όσες εντολές έχουν δηλωθεί, προωθούνται προς εκτέλεση. Στην OpenGL ια να προωθήσουµε την εκτέλεση εντολών που εκκρεµούν, χρησιµοποιούµε την εντολής glflush. void glflush( ); Η εντολή glflush πρέπει να εκτελείται κάθε φορά που ολοκληρώνουµε την περιγραφή του σκηνικού. Την τοποθετούµε στο τέλος της συνάρτησης που περιέχει τις εντολές σχεδίασης (display).
57 Όψεις πολυγώνων Κάθε πολύγωνο χαρακτηρίζεται από δύο όψεις: τη µπροστινή και την πίσω όψη Η επιλογή του ποια όψη θα χαρακτηριστεί ως µπροστινή ή πίσω είναι αυθαίρετη. Η διάκριση αυτή είναι χρήσιµη στην περίπτωση που θέλουµε να αποδώσουµε διαφορετικά χαρακτηριστικά σε κάθε όψη µιας επιφάνειας (π.χ. διαφορετική υφή). Ο προσανατολισµός της επιφάνειας ενός πολυγώνου καθορίζεται ανάλογα µε τη φορά δήλωσης των κορυφών του: Εάν ο θεατής δηλώσει τις κορυφές του πολυγώνου µε αριστερόστροφη φορά από τη δική του οπτική τότε, η ορατή σε αυτόν πλευρά θαείναι η µπροστά. Εάν ο θεατής δηλώσει τις κορυφές του πολυγώνου µε δεξιόστροφη φορά από τη δική του οπτική τότε, η ορατή σε αυτόν πλευρά θα είναι η πίσω.
58 Ρύθµιση όψεων πολυγώνων Η σύµβαση στη δήλωση όψεων πολυγώνων µπορεί να µεταβληθεί από τον προγραµµατιστή µε την εντολή glfrontface: void glfrontface(glenum mode); mode δέχεται τις συµβολικές σταθερές: GL_CCW: Η ορατή στο θεατή όψη χαρακτηρίζεται ως µπροστινή όψη (front facing polygon) εάν οι κορυφές του πολυγώνου δηλωθούν κατά τη θετική φορα από την οπτική γωνία του θεατή (counterclockwise). GL_CW: Η ορατή στο θεατή όψη χαρακτηρίζεται ως µπροστινή όψη εάν οι κορυφές του πολυγώνου δηλωθούν κατά την αρνητική φορα από την οπτική γωνία του θεατή (clockwise).
59 Τροποποίηση σχεδίασης πολυγώνων Κάθε όψη ενός πολυγώνου (µπροστινή και πίσω) µπορεί να σχεδιαστεί µε διαφορετικό τρόπο. Με την αρχική ρύθµιση της OpenGL, και οι µπροστινές και οι πίσω όψεις σχεδιάζονται συµπαγείς. Η ρύθµιση του τρόπου σχεδίασης κάθε όψης δηλώνεται µε την εντολή glpolygonmode. void glpolygonmode(glenum face, GLenum mode);
60 Αλλαγή σχεδίασης όψεων πολυγώνων void glpolygonmode(glenum face, GLenum mode); face η όψη της οποίας το σχεδιασµό τροποποιούµε: GL_FRONT: Η επιβαλλόµενη τροποποίηση αφορά τις µπροστινές όψεις GL_BACK: Η επιβαλλόµενη τροποποίηση αφορά τις πίσω όψεις GL_FRONT_AND_BACK: Η επιβαλλόµενη τροποποίηση αφορά και τις δύο όψεις. mode τρόπος σχεδιασµού της επιλεγόµενης όψης: GL_FILL: Η όψη σχεδιάζεται συµπαγής. GL_LINE: Σχεδιάζεται µόνο το περίγραµµα της όψης. GL_POINT: Σχεδιάζονται µόνο οι κορυφές τηςόψης. Παράδειγμα: glpolygonmode(gl_front,gl_line); glpolygonmode(gl_back,gl_point); Σχεδίαση των µπροστινών όψεων ως περιγράµµατα Σχεδίαση κορυφών των πίσω όψεων glpolygonmode(gl_front,gl_line); Σχεδίαση των µπροστινών όψεων ως περιγράµµατα Σχεδίαση των πίσω όψεων κατά την προηγουµένως ισχύουσα ρύθµιση
61 Καταστολή όψεων πολυγώνων Όταν σε µια σκηνή είναι όρατό µόνο ένα από τα δύο είδη όψεων πολυγώνων, συµφέρει να αγνοήσουνε το σχεδιασµό των µή ορατών όψεων. Η δυνατότητα καταστολής όψεων πολυγώνων αρχικά πρέπει να ενεργοποιηθεί µε την εντολή glenable glenable(gl_cull_face); Oι όψεις που καταστέλλονται δηλώνονται µε την εντολή glcullface. void glcullface(glenum mode); void glcullface(glenum mode); mode: δέχεται τις συµβολικές σταθερές GL_FRONT: καταστολή µπροστινών όψεων GL_BACK: καταστολή πίσω όψεων GL_FRONT_AND_BACK: καταστολή και των δύο ειδών όψεων Παράδειγμα: glcullface(gl_back); Καταστολή πίσω όψεων Ενεργοποίηση της καταστολής όψεων µε την glenable χωρίς χρήση της glcullface αυτοµάτως ενεργοποιεί την καταστολή των πίσω όψεων.
62 Οµάδες ιδιοτήτων (attribute groups) Η χρήση πολλαπλών εντολών επισκόπησης µεταβλητών κατάστασης (glgetfloatv glgetdoublev κοκ) για την ανάκτηση ενός συνόλου τους είναι κουραστική για τον προγραµµατιστή. Στην OpenGL οι ιδιότητες κατάστασης έχουν οµαδοποιηθεί σε οµάδες. Με τη χρήση µίας µόνο εντολή εκτελείται η αποθήκευση όλων των ιδιοτήτων µιας οµάδας σε µία θέση µνήµης για µελλοντική χρήση Οι οµάδες ιδιοτήτων αποθηκεύονται στη στοίβα ιδιοτήτων (attribute stack). Ορισµένες οµάδες ιδιοτήτων: Οµάδα ιδιοτήτων σηµείου: Περιέχει παραµέτρους που καθορίζουν την εµφάνιση ενός σηµείου (π.χ. Πάχος σηµείου) Οµάδα ιδιοτήτων γραµµών: Περιέχει παραµέτρους που καθορίζουν την εµφάνιση γραµµών (π.χ. Πάχος γραµµής, διάστιξη γραµµής) Οµάδα ιδιοτήτων πολυγώνων: Εµπεριέχει όλες τις παραµέτρους που επηρεάζουν τη σχεδίαση πολυγώνων. Χρώµα: Το χρώµα εντάσσεται στη δική του οµάδα ιδιοτήτων.
63 Αποθήκευση οµάδων ιδιοτήτων Οι µεταβλητές µιας οµάδας αποθηκεύονται στη στοίβα ιδιοτήτων µε την εντολή glpushattrib: void glpushattrib(attributegroup); attributegroup καθορίζει την οµάδα ιδιοτήτων GL_POINT_BIT: οµάδα ιδιοτήτων σηµείου GL_LINE_BIT: οµάδα ιδιοτήτων γραµµής GL_POLYGON_BIT: οµάδα ιδιοτήτων πολυγώνου GL_CURRENT_BIT: οµάδα ιδιοτήτων χρώµατος Παράδειγμα: glpushattrib(gl_current_bit); Αποθήκευση τρέχοντος χρώµατος σχεδίασης στη στοίβα ιδιοτήτων. Οι τιµές ιδιοτήτων που αποθηκεύτηκαν στη στοίβα ιδιοτήτων ανακαλούνται µε την εντολή glpopattrib: void glpopattrib( ); Η glpopattrib: ανακαλεί όλες τις τιµές των µεταβλητών κατάστασης που αποθηκεύτηκαν στο παρελθόν στη στοίβα ιδιοτήτων µε εντολές glpushattrib και ανακαλεί µόνο τις τιµές των µεταβλητών κατάστασης που έχουν αποθηκευτεί στο παρελθόν στη στοίβα ιδιοτήτων.
64 Λίστες απεικόνισης (display lists) Η περιγραφή ενός σύνθετου γεωµετρικού σήµατος είναι βολικό να περικλείεται σε µια αυτόνοµη ενότητα κώδικα, τη λίστα απεικόνισης (display list). Η λίστα απεικόνισης εκτελείται κάθε φορά που θέλουµε να σχεδιάσουµε το σύνθετο σχήµα. ίνει τη δυνατότητα επεναχρησιµοποίησης κώδικα. Σε κάθε λίστα απεικόνισης καταχωρείται ένας ακέραιος αναγνωριστικός αριθµός (list identifier) ηµιουργούµε αναγνωριστικούς αριθµούς µε την εντολή glgenlists. GLuint glgenlists(glint range); range: το πλήθος των αναγνωριστικών ακεραίων που θα δηµιουργήσουµε Παράδειγμα: ListID = glgenlists(3); ηµιουργία τριών αναγνωριστικών µε τιµές listid, listid+1, listid+2
65 ηµιουργία λίστας απεικόνισης Μια λίστα απεικόνισης ορίζεται µεταξυ δύο εντολών: των glnewlist και glendlist. void glnewlist(gluint listid, GLenum listmode); listid: ο αναγνωριστικός που αποδίδουµε στη λίστα απεικόνισης listmode: δέχεται τις σταθερές GL_COMPILE: για απλή δήλωση του κώδικα σχεδιασµού GL_COMPILE_AND_EXECUTE: για δήλωση και εκτέλεση του κώδικα σχεδιασµού glnewlist(...); Εντολές δήλωσης σχήµατος glendlist(); Μεταξύ των εντολών glnewlist και glendlist ορίζουµε το σύνθετο γεωµετρικό σχήµα χρησιµοποιώντας τις εντολές σχεδιάσης σχηµάτων που προαναφέρθηκαν.
66 Εκτέλεση/ ιαγραφή λίστας απεικόνισης Μια λίστα απεικόνισης εκτελείται δίνοντας το αναγνωριστικό της στην εντολή glcalllist: void glcalllist(gluint listid); Οι λίστες απεικόνισης διαγράφονται µε την εντολή gldeletelists. (Οι αναγνωριστικοί αριθµοί τους αποδεσµεύονται.) gldeletelists(startid, nlists); startid: ο αναγνωριστικός της πρώτης λίστας που διαγράφεται nlists: το πλήθος των λιστών που διαγράφονται. Παράδειγμα: gldeletelists(somelistid,3); ιαγράφουµε τις λίστες απεικόνισης µε αναγνωριστικούς αριθµούς somelistid, somelistid+1 και somelistid+2.
67 Λίστες απεικόνισης και µεταβλητές κατάστασης Εάν µεταβάλλουµε µέσα σε µια display list την τιµή µιας µεταβλητής κατάστασης (όπως π.χ. του τρέχοντος χρώµατος σχεδίασης), η µεταβολή αυτή θα παραµείνει ενεργή και µετά το πέρας εκτέλεσης της λίστας. Είναι χρήσιµοο προγραµµατιστής να αποθηκεύσει τις τιµές των ιδιοτήτων που θα µεταβληθούν στη στοίβα ιδιοτήτων, πριν από την κλήση της λίστας, ούτως ώστε να τις επαναφέρει µετά το πέρας της εκτέλεσης της λίστας. Μητρώα κορυφών - Μητρώα χρωµάτων Ο σχεδιάσµός µεγάλου πλήθους σχηµάτων αποκλειστικά µε τη χρήση της δοµής glbegin/glend απαιτεί έναν υπερβολικά µεγάλο αριθµό εντολών Για να διευκολύνει τη σχεδίαση πολλαπλών σχηµάτων, η OpenGL παρέχει την τεχνική των µητρώων κορυφών (vertex arrays). Με τα µητρώα σηµείων σχεδιάζουµε ένα µεγάλο αριθµό σχηµάτων δηλώνοντας απλώς ένα µητρώο κορυφών και τον είδος των σχηµατων που αυτές ορίζουν. Η ίδια ιδέα επεκτείνεται και στην απόδοση χρωµατικών τιµών σε µεγάλο πλήθος κορυφών. Στην περίπτωση αυτή ορίζουµε τα µητρώα χρωµάτων (color arrays).
68 Ενεργοποίηση χρήσης µητρώου κορυφών/χρωµάτων Αρχικά, απαιτείται η ενεργοποίηση της χρήσης µητρώων σηµείων ή/και χρωµάτων µε την εντολή glenableclientstate: void glenableclientstate(glenum array); array: δηλώνει την κατηγορία των δεδοµένων που οµαδοποιούνται στο µητρώο GL_VERTEX_ARRAY: οµαδοποίηση συντεταγµένων πολλαπλών κορυφών GL_COLOR_ARRAY: οµαδοποίηση χρωµατικών τιµών πολλαπλών κορυφών. GL_TEXTURE_ARRAY: αναλύεται στο Κεφάλαιο Απόδοση υφής
69 Οµαδοποίηση κορυφών Βήµα 1ο: Ενεργοποιούµε τη χρήση µητρώων κορυφών µε την glenableclientstate. glenableclientstate(gl_vertex_array); Βήµα 2o: Καταχωρούµε το µητρώο κορυφών µε την εντολή glvertexpointer. void glvertexpointer(glint size, GLenum type, GLsizei stride, const Glvoid *vertexpointer); vertexpointer: δείκτης στο µητρώο κορυφών size: το πλήθος των τιµών που προσδιορίζουν τις συντεταγµένες καθεµιάς κορυφής (για διδιάστατες κορυφές: 2 και για τρισδιάστατες κορυφές: 3) void glvertexpointer(glint size, GLenum type, GLsizei stride, const GLvoid *vertexpointer); type: ο πρωτογενής τύπος δεδοµένων µε τον οποίο αποθηκεύονται οι συντεταγµένων στο µητρώο vertexpointer. Aριθµητικές σταθερές: GL_INT, GL_SHORT, GL_FLOAT, GL_DOUBLE stride: η απόσταση µεταξύ των συντεταγµένων διαδοχικών σηµείων στο µητρώο. Χρησιµοποιείται µόνο σε όταν αποθηκεύονται τιµές πολλών ιδιοτήτων στο ίδιο µητρώο (πχ διαδοχική αποθήκευση συντεταγµένων και χρώµάτων σε ένα µητρώο) Για µητρώα που περιέχουν µόνο συντεταγµένες κορυφών η τιµή 0).
70 Οµαδοποίηση κορυφών Ορίζουµε τη διαδοχή µε την οποία χρησιµοποιούνται τα σηµεία του µητρώου κορυφών. Η διαδοχή ορίζεται σε ένα µητρώο δεικτών. Το µητρώο δεικτών ορίζει τη σειρά χρήσης των σηµείων του µητρώου κορυφών. Η κορυφή που δηλώνεται στη θέση i1 του µητρώου κορυφών χρησιµοποιείται πρώτη, η κορυφή που δηλώνεται στη θέση i2 του µητρώου κορυφών χρησιµοποιείται δεύτερη κ.ο.κ. Βήµα 3ο: Εκτελούµε τη σχεδίαση των σχηµάτων µε την εντολή gldrawelements: void gldrawelements(glenum mode, GLsizei count, GLenum type, Glvoid *indices); indices: δείκτης στο µητρώο δεικτών mode: καθορίζει τι σχήµατα ορίζουν οι κορυφές. (GL_LINES, GL_TRIANGLES, GL_QUADS κ.λ.π.). count: το πλήθος των κορυφών που περιέχονται στο µητρώο κορυφών. type: ο πρωτογενής τύπος δεδοµένων των τιµών στο µητρώο δεικτών. εκτές αριθµητικές σταθερές: GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, GL_UNSIGNED_INT.
71 Οµαδοποίηση χρωµατικών τιµών Η οµαδοποίηση χρωµατικών τιµών εκτελείται µε ακριβώς τον ίδιο τρόπο. glenableclientstate(gl_color_array); Το µητρώο χρωµατικών τιµών καταχωρείται µε την εντολή glcolorpointer. void glcolorpointer(glint size, GLenum type, GLsizei stride, const Glvoid *vertexpointer); size: το πλήθος των χρωµατικών συνιστωσών (για το µοντέλο RGB: 3 και για το µοντέλο RGBA: 4) Ορίζουµε ένα µητρώο δεικτών και δίνουµε την εντολή σχεδίασης µε την gldrawelements όπως προηγουµένως.
72 Βιβλιογραφία "Products: Software: OpenGL: Licensing and Logos". SGI. "OpenGL 3.0 Released, Developers Furious Slashdot". Tech.slashdot.org. "OpenGL 4.5 released with one of Direct3D's best features". Ars Technica.
Βασικές αρχές σχεδίασης (β)
Βασικές αρχές σχεδίασης (β) Περιεχόµενα ενότητας Σχεδίαση πολυγώνων Σχεδίαση τριγώνων Σχεδίαση καµπυλών Όψεις πολυγωνικών επιφανειών - Ρύθµιση σχεδίασης όψεων Οµάδες ιδιοτήτων Λίστες απεικόνισης Μητρώα
Εισαγωγή στην OpenGL
Εισαγωγή στην OpenGL Περιεχόµενα εισαγωγικής ενότητας: Γενικά χαρακτηριστικά της OpenGL Βιβλιοθήκες που της OpenGL Ένα τυπικό πρόγραµµα Τι είναι η OpenGL; Η OpenGL δεν είναι µια συγκεκριµένη βιβλιοθήκη
Βασικές αρχές σχεδίασης (Α)
Βασικές αρχές σχεδίασης (Α) Περιεχόµενα ενότητας Πρωτογενείς τύποι δεδοµένων Ονοµατολογία Συµβάσεις Η µηχανή καταστάσεων της OpenGL Περιβάλλον σχεδίασης Χρώµα Φιλοσοφία σχεδιάσης στην OpenGL Σχεδίαση σηµείων
Εισαγωγή στην OpenGL
Εισαγωγή στην OpenGL Ε.1 Τι είναι η OpenGL; Ένας νέος χρήστης θα υποθέσει ότι η OpenGL είναι µια βιβλιοθήκη σχεδίασης γραφικών. Ωστόσο, µε τον όρο OpenGL δεν αναφερόµαστε σε µια συγκεκριµένη βιβλιοθήκη
Κεφάλαιο 1 Βασικές αρχές σχεδίασης
Κεφάλαιο 1 Βασικές αρχές σχεδίασης Εισαγωγή Στο Κεφάλαιο αυτό επιχειρείται η εξοικείωση µε τη φιλοσοφία και τον τρόπο λειτουργίας της µηχανής της OpenGL. Αρχικά παραθέτουµε τους βασικούς τύπους δεδοµένων,
OpenGL. Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα
OpenGL Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή Κατερίνα Παπαδοπούλου / pakate@unipi.gr Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα OpenGL Εισαγωγή Είναι
Προγραμματισμός γραφικών
Προγραμματισμός γραφικών Εισαγωγή ελάχιστου συνόλου συναρτήσεων Οχι αλληλεπίδραση από τον χρήστη Δισδιάστατα γραφικά: ειδική περίπτωση τρισδιάστατων γραφικών Παράδειγμα-εφαρμογή: η ταινίατου Sierpinski
Απόδοση 3D σκηνών - Κινούµενα γραφικά
Απόδοση 3D σκηνών - Κινούµενα γραφικά Περιεχόµενα ενότητας Καταστολή κρυµµένων επιφανειών - Αλγόριθµος z-buffer Τρισδιάστατες επιφάνειες: Κύβος Σφαίρα Κώνος - Κύλινδρος - Κυκλικός δίσκος ακτύλιος Τοµέας
OpenGL. Εισαγωγή. Εξάμηνο: 2014Β. Διδάσκουσα: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Ηλεκτρονική Τάξη: http://moodleforall.ictlab.edu.
Τεχνικός Εφαρμογών Πληροφορικής Εισαγωγή OpenGL Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: http://moodleforall.ictlab.edu.gr/ Περιεχόμενα 1. Τι είναι η OpenGL 2. Μηχανή καταστάσεων 3. Η εξέλιξη της 4.
Γραφικά Υπολογιστών: OpenGL
1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: OpenGL Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιεχόμενα Τι είναι η OpenGL; Μοντέλα αντικειμένων (object modeling)
Εισαγωγή στην OpenGL: μέρος 1ο
Εισαγωγή στην OpenGL: μέρος 1ο Τι είναι η OpenGL Η OpenGL είναι ένα σύνολο εντολών (Application Programming Interface API) που μας επιτρέπει την δημιουργία τριδιάστατων γραφικών. Δεν είναι γλώσσα προγραμματισμού
Μετασχηµατισµοί συντεταγµένων
Μετασχηµατισµοί συντεταγµένων Περιεχόµενα ενότητας: Έννοια και χρησιµότητα του µετασχηµατισµού συντεταγµένων Μητρώα µετασχηµατισµού Συντεταγµένες µοντέλου Μετασχηµατισµός µοντέλου Στοιχειώδεις µετασχηµατισµοί
Ανάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο
Κεφάλαιο 5 Απόδοση τρισδιάστατων σκηνών Κινούµενα γραφικά
Κεφάλαιο 5 Απόδοση τρισδιάστατων σκηνών Κινούµενα γραφικά Εισαγωγή Στο Κεφάλαιο αυτό αναλύονται τεχνικές ορθής απόδοσης τριαδιάστατων σκηνών καθώς και κινουµένων σκηνών. Για την ορθή αναπαράσταση τρισδιάστατων
int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι
Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου
Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1
Εικόνα Εισαγωγή Ψηφιακή αναπαράσταση Κωδικοποίηση των χρωμάτων Συσκευές εισόδου και εξόδου Βάθος χρώματος και ανάλυση Συμβολική αναπαράσταση Μετάδοση εικόνας Σύνθεση εικόνας Ανάλυση εικόνας Τεχνολογία
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
3 ο Εργαστήριο Μεταβλητές, Τελεστές
3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται
Δομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Κεφάλαιο 3ο Μετασχηµατισµοί συντεταγµένων
Κεάλαιο 3ο Μετασχηµατισµοί συντεταγµένων Εισαγωγή Στο ο Κεάλαιο αναλύσαµε βασικές εντολές σχεδίασης, µέσω των οποίων ο προγραµµατιστής µπορεί να να καθορίσει τις συντεταγµένες της σκηνής στις οποίες επιθυµεί
Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία
Γραφικά µε Υπολογιστές Μετασχηµατισµοί Σύνθετη Γεωµετρία Σύστηµα Συντεταγµένων Κάθε VRML κόσµος έχει το δικό του σύστηµα συντεταγµένων, το οποίο είναι ένα τρισδιάστατο καρτεσιανό σύστηµα, µε τηθετική πλευρά
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο
Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης
Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται
1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα
1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα 1. Σύστημα Συντεταγμένων Το σύστημα συντεταγμένων που έχουμε συνηθίσει από το σχολείο τοποθετούσε το σημείο (0,0) στο σημείο τομής των δυο αξόνων Χ και Υ.
ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες
Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη
Απεικόνιση καμπυλών και επιφανειών
Απεικόνιση καμπυλών και επιφανειών Αφού μοντελοποιήσουμε τα αντικείμενα αλληλεπιδραστικά με καμπύλες και επιφάνειες πρέπει να τα απεικονίσουμε Αν χρησιμοποιούμε ray tracing πρέπει να υπολογίσουμε τομές
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών
Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης
Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3
Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Η Βιβλιοθήκη Γραφικών OpenGl Με Χρήση C/C++, JAVA και PYTHON
ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Η Βιβλιοθήκη Γραφικών OpenGl Με Χρήση C/C++, JAVA και PYTHON ΣΠΟΥΔΑΣΤΗΣ : Κουρδής Ανέστης
7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή
7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή O θόρυβος 2Δ μας δίνει τη δυνατότητα να δημιουργίας υφής 2Δ. Στο παρακάτω παράδειγμα, γίνεται σχεδίαση γραμμών σε πλέγμα 300x300 με μεταβαλόμενη τιμή αδιαφάνειας
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Προγραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Συσκευές εισόδου. Φυσικές συσκευές εισόδου Λογικές συσκευές εισόδου
Αλληλεπίδραση Project sketchpad: πρώτο αλληλεπιδραστικό πρόγραµµα γραφικών Αλληλεπίδραση βασικό συστατικό προγραµµάτων γραφικών Η OpenGL δεν υποστηρίζει άµεσα αλληλεπίδραση (συναρτήσεις διαχείρισης παραθύρων
> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό
5 ο Εργαστήριο Λογικοί Τελεστές, Δομές Ελέγχου Λογικοί Τελεστές > μεγαλύτερο = μεγαλύτερο ή ίσο!= διαφορετικό Οι λογικοί τελεστές χρησιμοποιούνται για να ελέγξουμε
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή
1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
Δομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Εικόνες και γραφικά. Τεχνολογία Πολυµέσων 05-1
Εικόνες και γραφικά Περιγραφή στατικών εικόνων Αναπαράσταση γραφικών Υλικό γραφικών Dithering και anti-aliasing Σύνθεση εικόνας Ανάλυση εικόνας Μετάδοση εικόνας Τεχνολογία Πολυµέσων 05-1 Περιγραφή στατικών
Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods)
1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods) Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιεχόμενα
Δομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Γραφικά με υπολογιστές. Διδάσκων: Φοίβος Μυλωνάς. Διάλεξη #07
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο Γραφικά με υπολογιστές Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #07 Γραμμές και Πολύγωνα: Εισαγωγή Αναπαράσταση 2D και 3D Χρωματισμός πολυγώνων
10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ
10 η Διάλεξη C++ - Πίνακες Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ανακεφαλαίωση Κατά την κλήση μιας συνάρτησης κατ αξία οι τιμές των ορισμάτων αντιγράφονται στις αντίστοιχες τυπικές παραμέτρους
Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering)
Υφή Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering) Θέσεις αντικειμένων και φωτεινών πηγών Θέση παρατηρητή 3D Μοντέλα 3Δ Μετασχ/σμοί Μοντέλου 3Δ Μετασχ/σμός Παρατήρησης Απομάκρυνση Πίσω Επιφανειών
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Προγραµµατιστικές Τεχνικές
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης
Κεφάλαιο 3 Βασική Σχεδίαση και Επεξεργασία
Περιεχόμενα Πρόλογος... 7 Εισαγωγή... 9 Κεφάλαιο 1: Στοιχεία Λειτουργίας του Υπολογιστή και του προγράμματος AutoCAD... 11 Κεφάλαιο 2: Στοιχεία Λειτουργικού Συστήματος... 15 Κεφάλαιο 3: Βασική Σχεδίαση
Στο Κεφάλαιο 5 µελετώντας την προβολή του τρισδιάστατου χώρου στο επίπεδο της κάµερας εξετάστηκε
Κεφάλαιο 6 Αποκοπή (clipping) Στο Κεφάλαιο 5 µελετώντας την προβολή του τρισδιάστατου χώρου στο επίπεδο της κάµερας εξετάστηκε η διαδικασία προβολής µεµονωµένων σηµείων και µόνο προς το τέλος του κεφαλαίου
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Έκτη (6 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/
Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ
Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1
Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Κεφάλαιο M3. Διανύσµατα
Κεφάλαιο M3 Διανύσµατα Διανύσµατα Διανυσµατικά µεγέθη Φυσικά µεγέθη που έχουν τόσο αριθµητικές ιδιότητες όσο και ιδιότητες κατεύθυνσης. Σε αυτό το κεφάλαιο, θα ασχοληθούµε µε τις µαθηµατικές πράξεις των
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Δοµικά στοιχεία Πίνακες Το κόσκινο του Ερατοσθένη Αντιγραφή πινάκων
Περιεχόµενα ενότητας
Προβολές Περιεχόµενα ενότητας Μετασχηµατισµός αλλαγής οπτικής γωνίας Επίπεδο προβολής - Μητρώο προβολής Παράλληλη προβολή Πλάγια παράλληλη προβολή Προοπτική προβολή Πλάγια προοπτική προβολή Μετασχηµατισµός
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Κεφάλαιο 4 ο Προβολές
Κεφάλαιο 4 ο Προβολές Εισαγωγή Στο Κεφάλαιο 2 αναλύσαµε τις τεχνικές σχεδίασης στις δύο διαστάσεις. Σε αυτό το κεφάλαιο θα επεκταθούµε σε τεχνικές αναπαράστασης τρισδιάστατων σκηνών στο επίπεδο του παρατηρητή.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 3: Πίνακες, βρόχοι, συναρτήσεις 1 Ιουνίου 2017 Το σημερινό εργαστήριο
Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro
Για να μπορέσουμε να εισάγουμε δεδομένα από το πληκτρολόγιο αλλά και για να εξάγουμε εμφανίσουμε αποτελέσματα στην οθόνη του υπολογιστή χρησιμοποιούμε τις εντολές Εισόδου και Εξόδου αντίστοιχα. Σύνταξη
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο
Τεχνολογία Πολυμέσων. Ενότητα # 5: Εικόνα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Τεχνολογία Πολυμέσων Ενότητα # 5: Εικόνα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το
Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας
Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας Η πρώτη οθόνη μετά την εκτέλεση του προγράμματος διαφέρει κάπως από τα προηγούμενα λογισμικά, αν και έχει αρκετά κοινά στοιχεία. Αποτελείται
Δομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης
4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος
4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το
a = 10; a = k; int a,b,c; a = b = c = 10;
C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή
Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014
Πίνακες 0 Μαρτίου 014 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα του συγκεκριμένου τύπου. Στην περίπτωση που θέλουμε
Προγραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');
5ο Μάθημα Αλγόριθμοι Σχεδίασης Βασικών Σχημάτων
5ο Μάθημα Αλγόριθμοι Σχεδίασης Βασικών Σχημάτων Γραφικα Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Ακ Έτος 2016-17 Εισαγωγή Ευθεία Κύκλος Έλλειψη Σύνοψη του σημερινού μαθήματος 1 Εισαγωγή 2 Ευθεία 3 Κύκλος
Ανάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός
Υπολογισμός - Συλλογή Δεδομένων - Πίνακες
Προγραμματισμός Η/Υ Ι Υπολογισμός - - Πίνακες ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συζητήσουμε τη χρήση του πίνακα (array) για τη συλλογή
Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων
1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιγραφή
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 8 η Δείκτες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου
Εισαγωγή στη γλώσσα προγραμματισμού C++
Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)
Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη
Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή
Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές
Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
ραστηριότητες στο Επίπεδο 1.
ραστηριότητες στο Επίπεδο 1. Στο επίπεδο 0, στις πρώτες τάξεις του δηµοτικού σχολείου, όπου στόχος είναι η οµαδοποίηση των γεωµετρικών σχηµάτων σε οµάδες µε κοινά χαρακτηριστικά στη µορφή τους, είδαµε
Βασικές Εντολές MicroWorlds Pro.
Βασικές Εντολές MicroWorlds Pro. 1. μπροστά (μπ) αριθμός Μετακινεί τη χελώνα προς τα εμπρός. π.χ. μπροστά 100 2. πίσω (πι) αριθμός Μετακινεί τη χελώνα προς τα πίσω. π.χ. πι 30 3. δεξιά (δε) αριθμός Στρέφει
Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα
Ασκήσεις της Ενότητας 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- α. Η χρήση της πένας Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα Υπάρχουν εντολές που μας επιτρέπουν να επιλέξουμε το χρώμα της πένας, καθώς και το
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ 1 η Σειρά Ασκήσεων Πλαίσια, γεωμετρικοί μετασχηματισμοί και προβολές 1. Y B (-1,2,0) A (-1,1,0) A (1,1,0)
Τύποι Δεδομένων Είσοδος/Έξοδος
Εργαστήριο 2 ο Τύποι Δεδομένων Είσοδος/Έξοδος Εισαγωγή Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές
Προγραμματιστικές τεχνικές
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωμύλος Κορακίτης
Εισαγωγή στην πληροφορική
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης
Τεχνολογία Παιγνίων. Τεχνολογία Παιγνίων. Τεχνολογία Παιγνίων. Εισαγωγή στο Easy Java Simulations (EJS)
1. Σημεία και Γραμμές Ι.Παχουλάκης 1. Σημεία και Γραμμές Εισαγωγή στο Easy Java Simulations (EJS) Εγκατάσταση Εγκαταστήστε το πιο πρόσφατο JRE (Java Runtime Environment) από το σύνδεσμο https://www.oracle.com/technetwork/java/javase/downloads/jr
Τύποι δεδομένων, τελεστές, μεταβλητές
Τύποι δεδομένων, τελεστές, μεταβλητές Βασικά στοιχεία της γλώσσας Η Java χαρακτηρίζεται από ένα αρκετά καλά οργανωμένο σύνολο εντολών κι ένα μέρος της επιτυχίας της οφείλεται στα διάφορα APIs (βιβλιοθήκες)
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ Αρχές
Μεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες
5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος
5. Γραφήματα 5.1 Εισαγωγή 5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος Το Discoverer παρέχει μεγάλες δυνατότητες στη δημιουργία γραφημάτων, καθιστώντας δυνατή τη διαμόρφωση κάθε συστατικού μέρους
ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών
ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C Εργαστήριο 2 Τµήµα Πληροφορικής και Τηλεπικοινωνιών οµή προγράµµατος Οδηγίες προεπεξεργαστή #include... # define... τµήµα δηλώσεων ηλωσεις και ορισµοί µεταβλητών. ηλωσεις συναρτήσεων