1. Σημεία και Γραμμές Ι.Παχουλάκης 1. Σημεία και Γραμμές Εισαγωγή στο Easy Java Simulations (EJS) Εγκατάσταση Εγκαταστήστε το πιο πρόσφατο JRE (Java Runtime Environment) από το σύνδεσμο https://www.oracle.com/technetwork/java/javase/downloads/jr e8-downloads-133155.html Καταφορτώστε το EJS από το eclass (Υλικό Εργαστηρίου -> EJS.rar) και ανοίξτε το κάτω από το C:\ όπως φαίνεται παρακάτω: Ι.Παχουλάκης 1. Σημεία και Ευθείες Game Technologies Slide 3
Σημεία και Ευθείες Καρτεσιανό σύστημα συντεταγμένων(d) Η έννοια του σημείου επιτρέπει την τοποθέτηση αντικειμένων σε D / 3D Η έννοια της ευθείας επιτρέπει: Την κίνηση ενός αντικειμένου σε κάποιο μονοπάτι Τον ορισμό των άκρων ενός αντικείμενου Τα συστήματα συντεταγμένων βοηθούν να εκφράσουμε τη σχέση αντικειμένων στο χώρο Ο έλεγχος συγκρούσεων δυο ευθειών είναι το απλούστερο τεστ σύγκρουσης σε ένα παιχνίδι Αποτελείται από: Έναν οριζόντιο άξονα x (θετικές τιμές προς τα δεξιά) Έναν κατακόρυφο άξονα y (θετικές τιμές προς τα πάνω) Κάθε σημείο ορίζεται από ένα ζεύγος τιμών συντεταγμένων στους άξονες x και y και το γράφουμε στη μορφή (x,y). Η αρχή των αξόνων είναι το σημείο τομής των αξόνων x και y έχει συντεταγμένες (0,0) Παράδειγμα: Τοποθετήστε τα αντικείμενα A έως F στην οθόνη: A(0,0), B(1,), C(4,3), D( 1,), E(, 1), F(3, ). Game Technologies Slide 5 Game Technologies Slide 6 Καρτεσιανές / Συντεταγμένες Οθόνης(D) Καρτεσιανό σύστημα: +y προς τα ΠΑΝΩ Συντεταγμένες οθόνης: +υ προς τα ΚΑΤΩ Μπορούμε να χρησιμοποιήσουμε το καρτεσιανό σύστημα συντεταγμένων για τους υπολογισμούς μας.... όμως στο τελικό στάδιο απεικόνισης στην οθόνη, μετατρέπουμε από καρτεσιανές συντεταγμένες σε συντεταγμένες οθόνης 3D Συστήματα Καρτεσιανών συντεταγμένων(1/) Προσθέτουμε τον z-άξονα..προσοχή όμως.. Μερικά προγράμματα χρησιμοποιούν ένα y-up κόσμο (Wings 3D, Unity 3D) και κάποια άλλα χρησιμοποιούν ένα z-up κόσμο (3ds Max, Maya, Blender, CAD, Quake, Unreal) Κάποιες μηχανές χρησιμοποιούν δεξιόστροφο σύστημα συντεταγμένων (OpenGL) ενώ άλλες αριστερόστροφο σύστημα (Direct3D, Unity) Z-up Game Technologies Slide 7 Game Technologies Slide 8
3D Καρτεσιανό σύστημα συντεταγμένων (/) Παράδειγμα Εμείς: θα χρησιμοποιήσουμε σύστημα συντεταγμένων του δεξιού χεριού στην y-επάνω σύμβαση ( προσωρινά) y-up Παράδειγμα: Σημειώστε τις συντεταγμένες του P ως ένα 3D σημείο(x,y,z) Μετακινούμαστε: + στον x +4 στον y +5 στον z Δηλαδή P=(,4,5) ή [,4,5] για προγραμματιστές Game Technologies Slide 9 Game Technologies Slide 10 Η ευθεία γραμμή Το γράφημα της εξίσωσης της μορφής ax + by = c, όπου a και b δεν είναι και τα δυο 0, είναι μια ευθεία γραμμή. Εναλλακτικά, κάθε ευθεία γραμμή είναι μια εξίσωση της μορφής ax + by = c, όπου τα a και b δεν είναι και τα δυο 0. Ειδικές περιπτώσεις: a=0, b<>0: y=c/b Τι είναι αυτό? b=0, a<>0: x=c/a >> Γενικότερα όταν (a,b<>0): y = (-a/b)x + (c/b) Να σημειωθεί: x = 0 => y= c/b y = 0 => x= c/a Ένα σημείο είναι το (0,c/b) Ένα άλλο σημείο είναι το (c/a,0) Game Technologies Slide 11 Κλίση και Τεταγμένη Ποια είναι η εξίσωση της γραμμής AB? A: (0,0) B: (100,50) slope Διακοπή: 0 Έτσι έχουμε την εξίσωση: y=0.5x 50 100 0. 5 Ποια είναι η εξίσωση για την γραμμή CD? A: (10,0) B: (110,70) slope slope 70 0 50 0.5 110 10 100 0 70 50 0.5 10 110 100 αλλά επίσης.. Έτσι η εξίσωση της γραμμής είναι: 70 y slope 0.5 110 x Game Technologies Slide 1
Παράλληλες και Κάθετες ευθείες Οι ευθείες στο επάνω γράφημα είναι παράλληλες Πως ελέγχω για παράλληλες ευθείες; Οι γραμμές στο κάτω γράφημα είναι κάθετες Πως ελέγχω για κάθετες ευθείες; Ανίχνευση Συγκρούσεων(D) Μια μπάλα κινείται κατά μήκος της γραμμής L1. Ο τοίχος βρίσκεται πάνω στην γραμμή L. Θα χτυπήσει η μπάλα τον τοίχο? Που? Πότε? Πρέπει να μπορούμε να γνωρίζουμε αν γραμμές τέμνονται Αν όχι: Είναι παράλληλες,δεν συμβαίνει κάποια σύγκρουση Αν ναι: Ποιο είναι το σημείο που διασταυρώνονται? Πότε θα χτυπήσει η μπάλα τον τοίχο? Παράδειγμα 1: Μια μπάλα κυλάει κατά μήκος της γραμμής L1: x+3y=6 με ταχύτητα m/sec. Ένας άπειρου μεγέθους τοίχος εκτείνεται κατά μήκος της γραμμής L: 3x-y=1 Λύστε το. Game Technologies Slide 13 Game Technologies Slide 14 1. Σημεία και Γραμμές Εισαγωγή Πυθαγόρειο θεώρημα : Χρησιμοποιείται για τη διανυσματική κίνηση Χρησιμοποιείται για την επίλυση γεωμετρίας με χρήση ορθογωνίων τριγώνων Εξίσωση Απόστασης: Χρησιμοποιείται στην ανίχνευση συγκρούσεων και στην φυσική των κινήσεων Παραβολές: Χρησιμοποιείται για να αναπαραστήσει βαλλιστικά μονοπάτια σε D και 3D κίνηση Κύκλοι & Σφαίρες: Χρησιμοποιούνται για μοντελοποίηση στρογγυλών αντικειμένων και μονοπατιών κίνησης Χρησιμοποιείται σαν οριοθετική γεωμετρία για ανίχνευση συγκρούσεων
Η Εξίσωση Απόστασης σε D & 3D Η εξίσωση Μέσου σε D & 3D Το Πυθαγόρειο Θεώρημα: a + b = c όπου a, b είναι τα πόδια ενός ορθογώνιου τριγώνου c είναι η υποτείνουσα. και το αντίστροφο του Η Εξίσωση Απόστασης σε D: with P 1 (x 1,y 1 ) και P (x,y ) : P 1 P ( x x1 ) ( y y1 ) Το μέσο δύο σημείων P 1 (x 1,y 1 ) και P (x,y ): Το μέσω των P 1 (x 1,y 1,z 1 ) και P (x,y,z ):..και σε 3D: με P 1 (x 1,y 1, z 1 ) και P (x,y,z ): http://www.cut-the-knot.org/pythagoras/index.shtml P1 P ( x x1 ) ( y y1 ) ( z z1) Game Technologies Slide 17 Game Technologies Slide 18 Παραβολές Κύκλοι & Σφαίρες Μια Παραβολή με κατακόρυφο άξονα: y=a(x h) +k, με κορυφή (h,k) και Άξονα συμμετρίας x=h a>0 a<0 Μια Παραβολή με οριζόντιο άξονα: x=a(y m) +n, με κορυφή (n,m) και Άξονα συμμετρίας y=m Η εξίσωση του Κύκλου: (x h) + (y k) = r όπου (h,k) είναι το κέντρο r είναι η ακτίνα Εάν ο κύκλος κεντραριστεί στην αρχή των αξόνων (0,0): x + y = r Η εξίσωση της Σφαίρας: (x h) + (y k) + (z l) = r (h,k,l) είναι το κέντρο Κύκλοι και σφαίρες χρησιμοποιείται σαν οριοθετική γεωμετρία στα video games Επιτρέπουν γρήγορο έλεγχο συγκρούσεων σε σχέση με άλλα σχήματα αλλά δεν προσφέρουν ακρίβεια στο αποτέλεσμα Game Technologies Slide 19 Game Technologies Slide 0
Εφαρμογές στον έλεγχο συγκρούσεων (D) Έλεγχος συγκρούσεων μεταξύ αντικειμένων χρησιμοποιώντας οριοθετικούς κύκλους: (x h 1 ) + (y k 1 ) = r 1 (x h ) + (y k ) = r Με D = sqrt[(h h 1 ) + (k k 1 ) ] Εφάπτονται: D = r 1 +r Συγκρούονται: D r 1 +r Πρακτικά: Έλεγχος συγκρούσεων σε κάθε frame Πιθανό ότι D> r 1 +r σε ένα στιγμιότυπο και D< r 1 +r στο επόμενο στιγμιότυπο,οπότε ελέγχουμε για σύγκρουση με τον τελεστή SQRT(τετρ.ρίζα) υψηλό κόστος, έτσι χρησιμοποιούμε τον υπολογιστικά γρηγορότερο πολλαπλασιασμού: (h h 1 ) + (k k 1 ) (r 1 +r ) Εφαρμογές στον έλεγχο συγκρούσεων (3D) Έλεγχος συγκρούσεων μεταξύ αντικειμένων χρησιμοποιώντας οριοθετικούς κύκλους: (x h 1 ) + (y k 1 ) + (z l 1 ) = r 1 (x h ) + (y k ) + (z l ) = r D = sqrt[(h h 1 ) + (k k 1 ) + (l l 1 ) ] Εφάπτονται : D = r 1 +r Συγκρούονται : D r 1 +r Το τεστ: (h h 1 ) + (k k 1 ) + (l l 1 ) (r 1 +r ) Game Technologies Slide 1 Game Technologies Slide Διαχείριση ψευδών συγκρούσεων Τα αντικείμενα στα games δεν είναι μόνο κύκλοι και σφαίρες! Τι μπορούμε να κάνουμε? Ιεράρχιση συγκρούσεων: Αρχικά κάνουμε έλεγχο συγκρούσεων μέσω οριοθετικών κύκλων. Έπειτα, Αν δεν υπάρχει σύγκρουση, προχωράμε στο επόμενο στιγμιότυπο Αν υπάρχει σύγκρουση περνάμε σε μερικότερα οριοθετικά σχήματα (ορισμένη επιφάνεια, σύνολα οριοθετικών κύκλων, κλπ.) 1. Σημεία και Γραμμές Game Technologies Slide 3
Τριγωνομετρία - Γωνίες Τριγωνομετρικές Συναρτήσεις Για να προσδιορίσουμε γωνίες: Χρησιμοποιούμε το Καρτεσιανό σύστημα συντεταγμένων Σημείο διασταύρωσης -> κορυφή Αρχική πλευρά = πρώτη ακτίνα στα θετικά του x-άξονα Τερματική πλευρά = δεύτερη ακτίνα Θετικές γωνίες: αντιστρόφως των δεικτών του ρολογιού Πλήρης περιστροφή = 360 o = π Ακτίνια σε Μοίρες: φ(deg) = (180/π)*φ(rad) Μοίρες σε Ακτίνια: φ(rad) = (π/180)*φ(deg) όπου φ = γωνία,deg=μοίρες,rad=ακτίνια Χρησιμοποιώντας την math.h, οι τριγωνομετρικές συναρτήσεις δέχονται τιμές σε ακτίνια Χρήσιμες μακροεντολές: #define RadsToDegrees( radian ) ((radian) * (180.0f / M_PI)) #define DegreesToRads( degrees ) ((degrees) * (M_PI/ 180.0f)) Για ορθογώνια τρίγωνα μόνο: Και οι αντίστροφες τους: Game Technologies Slide 5 Game Technologies Slide 6 Ο Ημιτονικός παλμός Για y=msin(nx): Πλάτος: A = M Περίοδος: T = π/ N Y=sin(x) Τριγωνομετρικές Ταυτότητες Ο Μοναδιαίος κύκλος: μεγ.ακτίνας=1 sin(a) = y/1 = y cos(a) = x/1 = x cos a + sin a = 1 tan(a) = sin(a)/cos(a) cotan(a)=cos(a)/sin(a) sin( a) = sin(a) cos( a) = cos(a) tan( a) = tan(a) sin(a 1 + a ) = sin(a 1 )cos(a ) + cos(a 1 )sin(a ) cos(a 1 + a ) = cos(a 1 )cos(a ) - sin(a 1 )sin(a ) Game Technologies Slide 7 Game Technologies Slide 8
Ασκήσεις 1. Υπολογίστε τις συντεταγμένες των σημείων A έως F 3. Υπολογίστε τις συντεταγμένες των P και Q. Τοποθετήστε τα σημεία στο πλέγμα: (,3), (-4,-), (-1,1), (1,-3) Ασκήσεις (συνέχεια) 4. Αποτυπώστε σε γράφημα τις ακόλουθες εξισώσεις x y = y = 1 x = 0 5. Υπολογίστε την κλίση στις ακόλουθες εξισώσεις 16x-1y=8 X=5 Y=15 6. Μια μπάλα κυλάει κατά μήκος της L1: -x+3y=10 με ταχύτητα 5m/sec. Ένας άπειρου μεγέθους τοίχος εκτείνεται κατά μήκος της L: x-3y=6 Θα χτυπήσει η μπάλα τον τοίχο? Πότε? Πού? Game Technologies Slide 9 Game Technologies Slide 30 Ασκήσεις (συνέχεια) 7. Ένα τρίγωνο ορίζεται από τις ακόλουθες κορυφές: (0,5), (5,0), and ( 15,15). Είναι ορθογώνιο τρίγωνο? 8. Βρείτε την απόσταση μεταξύ των σημείων : (10,-10,10) και (0,0,-0). 9. Βρείτε την μεσαία τιμή μεταξύ των σημείων: (10,-10,0) and (70,60,-40). 10. Σχεδιάστε το γράφημα της παραβολής y = 5(x 1) + 4 11. Βρείτε την κορυφή της παραβολής x = (y 3) + 1. Βρείτε το κέντρο και την ακτίνα της σφαίρας με βάση την εξίσωση: (x 0) + y + (z+0) = 100 Game Technologies Slide 31 Ασκήσεις (συνέχεια) 13. Βρείτε την εξίσωση της σφαίρας που να πληρεί τα ακόλουθα κριτήρια: κέντρο = (50,-10,10), επιφάνεια περνάει από το σημείο (10,50, 0) 14. Υποθέστε ότι προγραμματίζετε ανίχνευση συγκρούσεων για ένα 3D παιχνίδι ποδοσφαίρου, και αποφασίζετε να χρησιμοποιήσετε οριοθετικές σφαίρες. Στο τρέχον στιγμιότυπο, η οριοθετική σφαίρα του παίκτη ορίζεται από την εξίσωση (x 0) + y + (z+40) = 800, και η οριοθετική σφαίρα της μπάλας ορίζεται από την εξίσωση (x 0) + (y 30) + (z+40) = 400. Έχουν συγκρουστεί? 15. Βρείτε την περίοδο και το πλάτος των ακόλουθων εξισώσεων: y=-cos4x, y=4cos(½x), y= ½sin( x) Game Technologies Slide 3