Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρες.

 

Προσπαθώ να φτιάξω έναν αλγόριθμο που θα προβλέπει την κατεύθυνση και ταχύτητα 2 αντικειμένων μετά από σύγκρουση μεταξύ τους σε έναν 2Δ χώρο. Το θέμα είναι ότι δεν περιγράφω την κίνησή τους τροποποιώντας το χ και ψ τους, αλλά τους δίνω ένα speed (που περιγράφει μόνο το μέτρο της ταχύτητας) και ένα direction (σε μοίρες, 0 έως 360, ορίζεται και περισσότερο ή αρνητικό αλλά επί της ουσίας γίνεται περιστροφή στον ίδιο κύκλο. Direction 0 αναλογεί σε κίνηση δεξιά στην οθόνη παράλληλα με τον άξονα Χ). Η κίνηση γίνεται στην συνέχεια αυτόματα. Γνωρίζω πάντως την θέση τους στον χώρο ανά πάσα στιγμή.

 

Αφήνουμε λοιπόν τα δεδομένα γιατί θα μακρυγορήσω και πάμε στο ερώτημα. Θέλω λοιπόν ένα αλγόριθμο στον οποίο εισάγω το speed και direction πρίν την σύγκρουση και μου επιστρέφει ένα νέο speed και direction μετά την σύγκρουση. Τα αντικείμενα θεωρούνται σημειακά, δεν επηρεάζονται από άλλες δυνάμεις και έχουν ισάξια "μάζα" κατά την σύγκρουση. Με εξυπηρετεί πάντως αν υπάρξει παράμετρος "μάζας" του αντικειμένου. Ο κώδικας θα εκτελείται ξεχωριστά σε κάθε αντικείμενο και επιστρέφει αποτέλεσμα για τον εαυτό του. Μπορεί να έχει πρόσβαση πάντως στις μεταβλητές του άλλου αντικείμενου.

 

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

 

Ευχαριστώ προκαταβολικά.

Δημοσ.

Αυτά θα σε βοηθήσουν αρκετά:

Linear Momentum: Collisions

2d collisions

 

Δεν χρειάζονται μαθηματικά πανεπιστημίου, don't worry.. Απλή φυσική είναι!

 

Φανταζόμουν ότι θα χρειαζόταν κάτι σε vector addition με τα οποία δεν έχω ασχοληθεί εδώ και χρόνια γ αυτό μίλησα για μαθηματικά πανεπιστήμιου. Ευχαριστώ για τα links.

 

Αν πάντως κάποιος επιθυμεί να δώσει μια απάντηση σε μορφή αλγορίθμου θα το εκτιμούσα. (για λόγους ταχύτητας, δεν κάνω κάποια άσκηση/εργασία κλπ, ένα παιχνιδάκι φτιάχνω).

Δημοσ.

 

Με έπεισες να γράψω μετά από αρκετό καιρό (σοβαρό) post στο insomnia.

 

 

Η λογική είναι αυτή που σου έστειλαν και στα pdf, απλά επειδή εσύ ξέρεις μόνο το μέτρο της ταχύτητας και την γωνία, θες έναν μετασχηματισμό για να πάρεις vx και vy, τις συνιστώσες των ταχυτήτων στον x και στον y άξονα αντίστοιχα. Ε, αυτός είναι πολύ απλός. vx = cosθv και vy = sinθv. Θέλω όμως να σου κάνω μια άλλη ερώτηση για να δω μήπως απλοποιείται πολύ το πρόβλημά σου. 

 

Τα σώματα μετά την κρούση θα είναι πάντα στην ίδια ευθεία (η κρούση δηλαδή θα είναι πάντα κεντρική); Ή υπάρχει περίπτωση να είναι και πλάγια;

Δημοσ.

 

Με έπεισες να γράψω μετά από αρκετό καιρό (σοβαρό) post στο insomnia.

 

 

Η λογική είναι αυτή που σου έστειλαν και στα pdf, απλά επειδή εσύ ξέρεις μόνο το μέτρο της ταχύτητας και την γωνία, θες έναν μετασχηματισμό για να πάρεις vx και vy, τις συνιστώσες των ταχυτήτων στον x και στον y άξονα αντίστοιχα. Ε, αυτός είναι πολύ απλός. vx = cosθv και vy = sinθv. Θέλω όμως να σου κάνω μια άλλη ερώτηση για να δω μήπως απλοποιείται πολύ το πρόβλημά σου. 

 

Τα σώματα μετά την κρούση θα είναι πάντα στην ίδια ευθεία (η κρούση δηλαδή θα είναι πάντα κεντρική); Ή υπάρχει περίπτωση να είναι και πλάγια;

 

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

 

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

Δημοσ.

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

 

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

 

Δηλαδή εσύ στο πρόγραμμά σου έχεις απλοποιημένα ή πραγματικά;

 

Τι εννοείς εξαφανίζεται; Πώς εξαφανίζεται;

Δημοσ.

1) Δηλαδή εσύ στο πρόγραμμά σου έχεις απλοποιημένα ή πραγματικά;

 

2) Τι εννοείς εξαφανίζεται; Πώς εξαφανίζεται;

 

1) Εγώ πραγματικά το φτιάχνω απλά δεν κάνω κάποιο simulation φυσικής. Τα αντικείμενα που χρησιμοποιώ έχουν εμβαδό και μπορούν να χτυπήσουν μεταξύ τους από οποιαδήποτε πλευρά και γωνία. Αν τα αντικείμενα πάντως έχουν μια κατά προσέγγιση νορμάλ συμπεριφορά μου αρκεί. Από εκεί και πέρα αν υπάρχει υλοποιήσημη λύση που είναι πιστή στους κανόνες της φυσικής δεν έχω κάποιο πρόβλημα να την χρησιμοποιήσω.

 

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

Δημοσ.

Δηλαδή για να καταλάβω.

 

1) Ωραία, έτσι λοιπόν θα πρέπει αναγκαστικά να βάλεις στο παιχνίδι και γωνία, αλλά υπάρχει ένα θέμα που πάλι πρέπει να λυθεί. Όταν τα σώματα έχουν διαστάσεις, μετά από μία κρούση υπάρχει περίπτωση να αρχίσουν να "στριφογυρνούν" (κάτι σαν σβούρα). Άμα ξέρω 'γω το ένα χτυπήσει το άλλο "στη γωνία" (έχει ροπή η δύναμη της κρούσης πιο συγκεκριμένα), θα αρχίσει να περιστρέφεται εκτός από το να μεταφέρεται. Εκεί το θέμα μπερδεύει αρκετά. Εσύ στις κρούσεις σου, θα λάβεις κάτι τέτοιο υπόψιν; Ή θα θεωρήσεις όλες τις κρούσεις κεντρικές (δηλαδή γίνονται στο κέντρο μάζας των σωμάτων); Αυτό δεν είναι απλούστευση, διότι και στην πράξη συναντάμε τέτοιες κρούσεις, από το παιχνίδι σου εξαρτάται το τι θα διαλέξεις. Καλά, αν τα σχήματα που συγκρούονται είναι κύκλοι, δεν έχεις τέτοιο πρόβλημα, όπως και να περιστρέφεται ο κύκλος ίδιος φαίνεται (απλά και πάλι, δεν έχει σημασία το πώς φαίνεται μόνο...). :P

 

2) Στην πράξη, εκτός από αυτά που αναφέρεις, θα μπορούσε και να ανακλαστεί, όπως γίνεται στο μπιλιάρδο. Εσύ τι ακριβώς εννοείς όταν λες ότι θα την κάνεις destroy; Απλά θα χτυπάει πάνω στο σώμα, θα γίνεται η κρούση, και μετά απλά θα παύει να υπάρχει; Δηλαδή θα ανακλάται αλλά δεν θα φαίνεται η ανακλώμενη ας πούμε;

Δημοσ.

Καλημέρες.

Το θέμα είναι ότι δεν περιγράφω την κίνησή τους τροποποιώντας το χ και ψ τους, αλλά τους δίνω ένα speed (που περιγράφει μόνο το μέτρο της ταχύτητας) και ένα direction (σε μοίρες, 0 έως 360, ορίζεται και περισσότερο ή αρνητικό αλλά επί της ουσίας γίνεται περιστροφή στον ίδιο κύκλο. Direction 0 αναλογεί σε κίνηση δεξιά στην οθόνη παράλληλα με τον άξονα Χ). Η κίνηση γίνεται στην συνέχεια αυτόματα. Γνωρίζω πάντως την θέση τους στον χώρο ανά πάσα στιγμή.

Κακως το εγραψες ετσι. Η ταχυτητα ειναι διανυσμα (vector) οπως επισης και το direction ειναι διανυσμα. Α ναι, και η δυναμη ειναι διανυσμα  :-D. Εγω θα σου ελεγα να το ξαναγραψεις απο την αρχη, και να βασιστεις σε διανυσμτα, να βρεις την υγεια σου!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...