190 likes | 296 Views
Graphical Grammars. Σεβεντεκίδης Κώστας Α.Μ.: 49 Ιωάννινα 17-01-2003. Τι είναι.
E N D
Graphical Grammars Σεβεντεκίδης Κώστας Α.Μ.: 49 Ιωάννινα 17-01-2003 Graphical Grammars
Τι είναι... • Με τον όρο graphical grammar εννοούμεόλες τις γραμματικές όπως ακριβώς συμβαίνει και με τις προτάσεις που χρησιμο-ποιούμε στην καθημερινή μας ζωή, οι οποίες αποτελούνται από ένα σύνολο κανόνων, λέξεων και εκφράσεων. Οι λέξεις καθορίζουν αν κάτι είναι κλαδί ή φύλλωμα και η γραμματική με τους κανόνες της καθορίζει την μορφή του δένδρου. • Επειδή σε πολλά σημεία πρέπει να έχουμε επαναλήψη της πληροφορίας, εξαιτίας της ομοιομορφίας των αντικειμένων που υπάρχουν στην φύση, χρησιμοποιούμε τα fractals. Graphical Grammars
Τι είναι τα fractals; • Τα fractals χρησιμοποιούνται για την καλύτερη απόδοση διαφόρων αντικειμένων. Με αυτά μπορούμε να επαναχρη-σιμοποιήσουμε διάφορα μοτίβα που έχουμε ήδη υλοποιήσει, ώστε να γίνει η αναπαράσταση πιο εύκολη. • Με το όρο fractal εννοείται οποιοδήποτε σχέδιο επανάληψης πληροφορίας. • Η παραγωγή των δένδρων γίνεται με βάση μία γραμματική, η οποία δίνεται από το χρήστη και είναι γνωστή ως L-System Grammar(P. Prusinkiewicz and J. Hanan, “Lecture Notes in Biomathematics”) Graphical Grammars
Γραμματική L-System • Είναι μία μέθοδος η οποία χρησιμοποιεί επαναλαμβανόμενους ορισμούς με τα συστατικά στοιχεία του δένδρου • Το δένδρο σχεδιάζεται σύμφωνα με την τρέχουσα γραμματική, η οποία ξετυλίγεται χρησιμοποιώντας τους κανόνες και τις λέξεις της γραμματικής • Η πρώτη γραμμή είναι μία λίστα από τα συστατικά τα οποία θα σχεδιάσει. Αρχικά, ξεκινάμε με ένα συστατικό, έστω το F. Οι επόμε-νοι κανόνες καθορίζουν τα F, Q και P (ότι βρίσκεται αριστερά από αναγνωριστικό και ότι είναι δεξιά είναι ορισμός) F FFQ Q QQ P F Αυτό σημαίνει ότι την πρώτη φορά που θα εκτελεστεί ένας κανόνας θα σχεδιάσει το F σύμφωνα με τον πρώτο κανόνα Graphical Grammars
Γραμματική L-System Παράδειγμα 1ο (ως προς το συστατικό F) • Η γραμματική του δένδρου είναι ένα σύνολο κανόνων όπως φαίνεται παρακάτω: F FFQ Q QQ P F • Δύο παραγωγές του δένδρου: Αρχικά, θα καθορίσει το F να είναι FFQ και θα σχεδιάσει δύο F και ένα Q. Πατώντας το πλήκτρο spacebar, η γραμματική θα διασπαστεί ως προς το FFQ και θα δώσει FFQFFQQQ. Μία ακόμη διάσπαση της γραμματικής θα δώσει:FFQFFQQQFFQFFQQQFFQFFQQQQQQQ Graphical Grammars
Λειτουργίες (Ι) Σύμβολα που χρησιμοποιούμε: • «+»: Περιστρέφει με φορά αντίθετη από τη φορά των δεικτών του ρολογιού κατά μία προκαθορισμένη γωνία που δίνεται στο αρχείο εισόδου • «-»: Περιστρέφει κατά τη φορά των δεικτών του ρολογιού ως προς μία προκαθορισμένη γωνία • «[»: Ώθηση (push) τρέχουσας θέσης, κλίμακας και περιστρο-φής στη στοίβα Graphical Grammars
Λειτουργίες (Ι) • «]»: Απώθηση (pop) των αντίστοιχων χαρακτηριστικών από τη στοίβα • «<»: Μειώνουμε το τρέχον μέγεθος κατά το διευκρινισμένο ποσοστό • «>»: Αυξάνουμε αντίστοιχα το τρέχον μέγεθος Graphical Grammars
Γραμματική 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 Grammars
Λειτουργίες (ΙΙ) Πλήκτρα που χρησιμοποιούμε: • Το παράθυρο ελέγχεται από το πληκτρολόγιο. • Η αύξηση του μεγέθους του δένδρου γίνεται με το spacebar και όταν το πιέζουμε μία φορά, η γραμματική διασπάται μία φορά. Για επανάληψη, χρησιμοποιούμε το πλήκτρο spacebar περισσότερες φορές. • Η πλήρης οθόνη του παραθύρου πετυχαίνεται με το πλήκτρο f και με επαναχρησιμοποίησή του επιστρέφουμε στην αρχική του μορφή. Επιλέγουμε τις διαστάσεις του παραθύρου στα 640x480pixels πράγμα το οποίο αλλάζει εύκολα. Graphical Grammars
Λειτουργίες (ΙΙ) • Zoom in και zoom out με τα πλήκτρα «+» και «-», χωρίς να επηρεάζεται το ίδιο το δένδρο.Πατώντας επαναληπτικά τα πλήκτρα αυτά, γίνονται οι αντίστοιχες λειτουργίες πολλές φορές. • Μετακίνηση της κάμερας με τα βελάκια προς όλες τις κατευ-θύνσεις. Δηλ. με το αριστερό βελάκι μετακινούμε την κάμερα αριστερά, με το δεξί την μετακινούμε δεξιά κ.ο.κ. • Πατώντας Esc ή q το πρόγραμμα τερματίζεται κανονικά και το παράθυρο κλείνει. Graphical Grammars
Μορφή αρχείου εισόδου • Στην αρχή του αρχείου εισόδου καθορίζουμε το χρώμα του παρασκηνίου (bgcolor), την γωνία απόκλισης (angle) και την κλίμακα (scale). • Το χρώμα του παρασκηνίου καθορίζεται με τα τρία βασικά χρώματα RGB με αντίστοιχες τιμές από 0.0 μέχρι 1.0. Όσο μεγαλύτερη είναι η τιμή αυτή τόσο περισσότερο χρησιμοποι-είται το χρώμα στο οποίο αντιστοιχεί και διάφοροι συνδυασμοί αυτών δίνουν αποχρώσεις όλων των χρωμάτων. • Η γωνία απόκλισης είναι σε μοίρες και ανάλογα με το πρόση-μο (+ ή -) το κλαδί είναι προς το δεξί ή αριστερό μέρος. Graphical Grammars
Μορφή αρχείου εισόδου • Η κλίμακα είναι ένας παράγοντας που αναλύει το δένδρο κάθε φορά που βρίσκουμε είτε ‘<‘,είτε ‘>’. • Αν δεν καθοριστούν τιμές του χρώματος του παρασκηνίου, της γωνίας και της κλίμακας στο αρχείου εισόδου, τότε παίρνει τις προκαθορισμένες τιμές που θεωρούμε ότι είναι οι εξής: • angle = 20 μοίρες • bgcolor = (0.0, 0.0, 0.0) => μαύρο • scale = 10% Graphical Grammars
Μορφή αρχείου εισόδου Ένα παράδειγμα αρχείου εισόδου είναι το εξής: angle 20.5 scale 10 bgcolor 0.0 0.0 0.0 F F->XF X->[+F]F[-F]P P->F stem F branch X leaf P στο τέλος καθορίζουμε ποιο από τα συστατικά είναι παρακλάδι(stem), ποιο είναικλαδί (branch), και ποιο είναι φύλλο (leaf). Graphical Grammars
Τα συστατικά μέρη ενός δένδρου • Όνομα: Φύλλο(leaf)Εικόνα: Περιγραφή: Πράσινο χρώμα σε σχήμα διαμαντιού • Όνομα: Παρακλαδί(branch) Εικόνα: Περιγραφή: Μικρό και φαρδύ κλαδί • Όνομα: Κλαδί(stem) Εικόνα: Περιγραφή: Μακρύ, λεπτό, πράσινο, σε σχήμα βέργας Graphical Grammars
Τι έχει γίνει μέχρι τώρα... angle=20 μοίρες, scale=10% χρώμα παρασκηνίου μαύρο • Αρχικοποίηση του δένδρου στις τιμές: • Parsing του αρχείου εισόδου με μία διάσπαση κάθε φορά που καλείται η συνάρτηση • Έλεγχος σωστής μορφής αρχείου εισόδου και μηνύματα λάθους (π.χ. περιορισμοί στα αναγνωριστικά με max τιμή 3, έλεγχος για ορισμό της γραμματικής μία φορά) • Τύπωση της λίστας αναγνωριστικών για αποσφαλμάτωση με διαδοχική τύπωση των ενεργειών του χρήστη στην οθόνη • Δημιουργία κλαδιού (stem), παρακλαδιού (branch) και φύλλου (leaf) • Λειτουγίες: αύξηση μεγέθους του δένδρου με spacebar, zoom in, zoom out, μετακίνηση κάμερας, έξοδος Graphical Grammars
Τι θα γίνει στη συνέχεια... • Κλιμάκωση (scale) του δένδρου • Περιστροφή της κάμερας γύρω από το δένδρο • Εισαγωγή φωτισμού τυχαία στο χώρο στο πάνω μέρος του παραθύρου • Βελτίωση της εμφάνισης του δένδρου Graphical Grammars
Παράδειγμα Graphical Grammars
Αναφορές • www.opengl.org - OpenGL's Home Page. • www.mesa3d.org - Freeware implementation of an OpenGL "look-a-like". It is, for the most part, a fully compatible OpenGL substitute for UNIX/Linux. • http://www.xmission.com/~nate/ - Nate Robbin's GLUT home page. He ported GLUT to Win32. • www.hp.com/unixwork/products/grfx/OpenGL/Web/Reference.html - 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/ - Another OpenGL home page, lot's of information. Graphical Grammars
Τέλος Παρουσίασης Graphical Grammars