Graphical Grammars1 Σεβεντεκίδης Κώστας Α.Μ.: 49 Ιωάννινα
Graphical Grammars2 Τι είναι... Με τον όρο graphical grammar εννοούμε όλες τις γραμματικές όπως ακριβώς συμβαίνει και με τις προτάσεις που χρησιμο- ποιούμε στην καθημερινή μας ζωή, οι οποίες αποτελούνται από ένα σύνολο κανόνων, λέξεων και εκφράσεων. Οι λέξεις καθορίζουν αν κάτι είναι κλαδί ή φύλλωμα και η γραμματική με τους κανόνες της καθορίζει την μορφή του δένδρου. Επειδή σε πολλά σημεία πρέπει να έχουμε επαναλήψη της πληροφορίας, εξαιτίας της ομοιομορφίας των αντικειμένων που υπάρχουν στην φύση, χρησιμοποιούμε τα fractals.
Graphical Grammars3 Τι είναι τα fractals; Τα fractals χρησιμοποιούνται για την καλύτερη απόδοση διαφόρων αντικειμένων. Με αυτά μπορούμε να επαναχρη- σιμοποιήσουμε διάφορα μοτίβα που έχουμε ήδη υλοποιήσει, ώστε να γίνει η αναπαράσταση πιο εύκολη. Με το όρο fractal εννοείται οποιοδήποτε σχέδιο επανάληψης πληροφορίας. Η παραγωγή των δένδρων γίνεται με βάση μία γραμματική, η οποία δίνεται από το χρήστη και είναι γνωστή ως L-System Grammar (P. Prusinkiewicz and J. Hanan, “Lecture Notes in Biomathematics”)
Graphical Grammars4 Γραμματική L-System Είναι μία μέθοδος η οποία χρησιμοποιεί επαναλαμβανόμενους ορισμούς με τα συστατικά στοιχεία του δένδρου Το δένδρο σχεδιάζεται σύμφωνα με την τρέχουσα γραμματική, η οποία ξετυλίγεται χρησιμοποιώντας τους κανόνες και τις λέξεις της γραμματικής Η πρώτη γραμμή είναι μία λίστα από τα συστατικά τα οποία θα σχεδιάσει. Αρχικά, ξεκινάμε με ένα συστατικό, έστω το F. Οι επόμε- νοι κανόνες καθορίζουν τα F, Q και P (ότι βρίσκεται αριστερά από αναγνωριστικό και ότι είναι δεξιά είναι ορισμός) F FFQ Q QQ P F Αυτό σημαίνει ότι την πρώτη φορά που θα εκτελεστεί ένας κανόνας θα σχεδιάσει το F σύμφωνα με τον πρώτο κανόνα
Graphical Grammars5 Γραμματική L-System Παράδειγμα 1ο (ως προς το συστατικό F) Η γραμματική του δένδρου είναι ένα σύνολο κανόνων όπως φαίνεται παρακάτω: F FFQ Q QQ P F Δύο παραγωγές του δένδρου: Αρχικά, θα καθορίσει το F να είναι FFQ και θα σχεδιάσει δύο F και ένα Q. Πατώντας το πλήκτρο spacebar, η γραμματική θα διασπαστεί ως προς το FFQ και θα δώσει FFQFFQQQ. Μία ακόμη διάσπαση της γραμματικής θα δώσει: FFQFFQQQ FFQFFQQQFFQFFQQQQQQQ
Graphical Grammars6 Λειτουργίες (Ι) Σύμβολα που χρησιμοποιούμε: «+»: Περιστρέφει με φορά αντίθετη από τη φορά των δεικτών του ρολογιού κατά μία προκαθορισμένη γωνία που δίνεται στο αρχείο εισόδου «-»: Περιστρέφει κατά τη φορά των δεικτών του ρολογιού ως προς μία προκαθορισμένη γωνία «[»: Ώθηση (push) τρέχουσας θέσης, κλίμακας και περιστρο- φής στη στοίβα
Graphical Grammars7 Λειτουργίες (Ι) «]»: Απώθηση (pop) των αντίστοιχων χαρακτηριστικών από τη στοίβα «<»: Μειώνουμε το τρέχον μέγεθος κατά το διευκρινισμένο ποσοστό «>»: Αυξάνουμε αντίστοιχα το τρέχον μέγεθος
Graphical Grammars8 Γραμματική L-System Παράδειγμα 2ο (ως προς το συστατικό F) F->XF X ->[+F]F[-F]P P->F Αυτό που θα γίνει στο συγκεκριμένο παράδειγμα είναι ότι από τον πρώτο κανόνα: F->XF και με μία εφαρμογή αυτού: F-> XF F->X[+F]F[-F]P Με μία ακόμη εφαρμογή του κανόνα έχουμε: F->X[+F]F[-F]P F->X[+F]F[-F]F Σε αυτό το παράδειγμα χρησιμοποιούμε και διάφορα σύμβολα όπως είναι τα «[», «]», «+» και «-» με το καθένα να κάνει τις λειτουργίες που αναφέραμε προηγουμένως.
Graphical Grammars9 Λειτουργίες (ΙΙ) Πλήκτρα που χρησιμοποιούμε: Το παράθυρο ελέγχεται από το πληκτρολόγιο. Η αύξηση του μεγέθους του δένδρου γίνεται με το spacebar και όταν το πιέζουμε μία φορά, η γραμματική διασπάται μία φορά. Για επανάληψη, χρησιμοποιούμε το πλήκτρο spacebar περισσότερες φορές. Η πλήρης οθόνη του παραθύρου πετυχαίνεται με το πλήκτρο f και με επαναχρησιμοποίησή του επιστρέφουμε στην αρχική του μορφή. Επιλέγουμε τις διαστάσεις του παραθύρου στα 640x480 pixels πράγμα το οποίο αλλάζει εύκολα.
Graphical Grammars10 Λειτουργίες (ΙΙ) Zoom in και zoom out με τα πλήκτρα «+» και «-», χωρίς να επηρεάζεται το ίδιο το δένδρο. Πατώντας επαναληπτικά τα πλήκτρα αυτά, γίνονται οι αντίστοιχες λειτουργίες πολλές φορές. Μετακίνηση της κάμερας με τα βελάκια προς όλες τις κατευ- θύνσεις. Δηλ. με το αριστερό βελάκι μετακινούμε την κάμερα αριστερά, με το δεξί την μετακινούμε δεξιά κ.ο.κ. Πατώντας Esc ή q το πρόγραμμα τερματίζεται κανονικά και το παράθυρο κλείνει.
Graphical Grammars11 Μορφή αρχείου εισόδου Στην αρχή του αρχείου εισόδου καθορίζουμε το χρώμα του παρασκηνίου (bgcolor), την γωνία απόκλισης (angle) και την κλίμακα (scale). Το χρώμα του παρασκηνίου καθορίζεται με τα τρία βασικά χρώματα RGB με αντίστοιχες τιμές από 0.0 μέχρι 1.0. Όσο μεγαλύτερη είναι η τιμή αυτή τόσο περισσότερο χρησιμοποι- είται το χρώμα στο οποίο αντιστοιχεί και διάφοροι συνδυασμοί αυτών δίνουν αποχρώσεις όλων των χρωμάτων. Η γωνία απόκλισης είναι σε μοίρες και ανάλογα με το πρόση- μο (+ ή -) το κλαδί είναι προς το δεξί ή αριστερό μέρος.
Graphical Grammars12 Μορφή αρχείου εισόδου Η κλίμακα είναι ένας παράγοντας που αναλύει το δένδρο κάθε φορά που βρίσκουμε είτε ‘ ’. Αν δεν καθοριστούν τιμές του χρώματος του παρασκηνίου, της γωνίας και της κλίμακας στο αρχείου εισόδου, τότε παίρνει τις προκαθορισμένες τιμές που θεωρούμε ότι είναι οι εξής: –angle = 20 μοίρες –bgcolor = (0.0, 0.0, 0.0) => μαύρο –scale = 10%
Graphical Grammars13 Μορφή αρχείου εισόδου Ένα παράδειγμα αρχείου εισόδου είναι το εξής: angle 20.5 scale 10 bgcolor F F->XF X->[+F]F[-F]P P->F stem F branch X leaf P στο τέλος καθορίζουμε ποιο από τα συστατικά είναι παρακλάδι (stem), ποιο είναι κλαδί (branch), και ποιο είναι φύλλο (leaf).
Graphical Grammars14 Τα συστατικά μέρη ενός δένδρου Όνομα Όνομα: Φύλλο(leaf) Εικόνα: Περιγραφή Περιγραφή: Πράσινο χρώμα σε σχήμα διαμαντιού Όνομα Όνομα: Παρακλαδί(branch) Εικόνα: Περιγραφή Περιγραφή: Μικρό και φαρδύ κλαδί Όνομα Όνομα: Κλαδί(stem) Εικόνα: Περιγραφή Περιγραφή: Μακρύ, λεπτό, πράσινο, σε σχήμα βέργας
Graphical Grammars15 Τι έχει γίνει μέχρι τώρα... Αρχικοποίηση του δένδρου στις τιμές: Parsing του αρχείου εισόδου με μία διάσπαση κάθε φορά που καλείται η συνάρτηση Έλεγχος σωστής μορφής αρχείου εισόδου και μηνύματα λάθους (π.χ. περιορισμοί στα αναγνωριστικά με max τιμή 3, έλεγχος για ορισμό της γραμματικής μία φορά) Τύπωση της λίστας αναγνωριστικών για αποσφαλμάτωση με διαδοχική τύπωση των ενεργειών του χρήστη στην οθόνη Δημιουργία κλαδιού (stem), παρακλαδιού (branch) και φύλλου (leaf) Λειτουγίες: αύξηση μεγέθους του δένδρου με spacebar, zoom in, zoom out, μετακίνηση κάμερας, έξοδος angle=20 μοίρες, scale=10% χρώμα παρασκηνίου μαύρο
Graphical Grammars16 Τι θα γίνει στη συνέχεια... Κλιμάκωση (scale) του δένδρου Περιστροφή της κάμερας γύρω από το δένδρο Εισαγωγή φωτισμού τυχαία στο χώρο στο πάνω μέρος του παραθύρου Βελτίωση της εμφάνισης του δένδρου
Graphical Grammars17 Παράδειγμα
Graphical Grammars18 Αναφορές - OpenGL's Home Page. - Freeware implementation of an OpenGL "look-a-like". It is, for the most part, a fully compatible OpenGL substitute for UNIX/Linux. - Nate Robbin's GLUT home page. He ported GLUT to Win32. - HP's online OpenGL API reference. reality.sgi.com/mjk_asd/spec3/spec3.html - GULT's Online API (version 3), hosted by SGI. reality.sgi.com/mjk_asd/spec3/spec3.html reality.sgi.com/mjk_asd/ - Another OpenGL home page, lot's of information. reality.sgi.com/mjk_asd/
Graphical Grammars19 Τέλος Παρουσίασης