Πίνακας περιεχομένων:

Προσομοίωση ηλιακού συστήματος: 4 βήματα
Προσομοίωση ηλιακού συστήματος: 4 βήματα

Βίντεο: Προσομοίωση ηλιακού συστήματος: 4 βήματα

Βίντεο: Προσομοίωση ηλιακού συστήματος: 4 βήματα
Βίντεο: Πού τελειώνει το ηλιακό μας σύστημα; | Astronio X (#9) 2024, Ιούλιος
Anonim

Για αυτό το έργο ξεκίνησα να δημιουργήσω μια προσομοίωση του πώς η βαρύτητα επηρεάζει την κίνηση των πλανητικών σωμάτων σε ένα ηλιακό σύστημα. Στο παραπάνω βίντεο \, το σώμα του Sunλιου αντιπροσωπεύεται από τη σφαίρα συρματόπλεγμα και οι πλανήτες δημιουργούνται τυχαία.

Η κίνηση των πλανητών βασίζεται στην πραγματική φυσική, τον Νόμο της Καθολικής Βαρύτητας. Αυτός ο νόμος ορίζει τη βαρυτική δύναμη που ασκείται σε μια μάζα από μια άλλη μάζα. σε αυτή την περίπτωση ο Sunλιος σε όλους τους πλανήτες, και οι πλανήτες ο ένας στον άλλο.

Για αυτό το έργο χρησιμοποίησα το Processing, ένα περιβάλλον προγραμματισμού που βασίζεται σε java. Χρησιμοποίησα επίσης το αρχείο παραδείγματος επεξεργασίας που προσομοιώνει τη βαρύτητα των πλανητών. Το μόνο που θα χρειαστείτε για αυτό είναι το λογισμικό επεξεργασίας και ένας υπολογιστής.

Βήμα 1: Προσομοίωση 2 διαστάσεων

Ξεκίνησα παρακολουθώντας μερικά βίντεο σχετικά με τον τρόπο κωδικοποίησης αυτού που δημιούργησε ο Dan Shiffman στο κανάλι του στο YouTube, το Coding Train (Μέρος 1/3). Σε αυτό το σημείο σκέφτηκα ότι θα χρησιμοποιούσα την αναδρομή για να δημιουργήσω το ηλιακό σύστημα, παρόμοιο με αυτό που κάνει ο Shiffman μόνο χρησιμοποιώντας τους νόμους της φυσικής.

Δημιούργησα ένα πλανητικό αντικείμενο που είχε «παιδιά πλανήτες», οι οποίοι με τη σειρά τους είχαν επίσης «παιδικούς» πλανήτες. Ο κώδικας για την προσομοίωση 2D δεν είχε ολοκληρωθεί επειδή δεν είχα έναν εξαιρετικό τρόπο προσομοίωσης των βαρυτικών δυνάμεων για κάθε πλανήτη. Στράφηκα από αυτόν τον τρόπο σκέψης, σε μια κατεύθυνση βασισμένη στο ενσωματωμένο παράδειγμα επεξεργασίας της βαρυτικής έλξης. Το θέμα ήταν ότι έπρεπε να υπολογίσω τη δύναμη της βαρύτητας από όλους τους άλλους πλανήτες σε κάθε πλανήτη, αλλά δεν μπορούσα να σκεφτώ πώς να αντλήσω εύκολα τις πληροφορίες ενός μεμονωμένου πλανήτη. Αφού είδα πώς το κάνει το σεμινάριο επεξεργασίας, συνειδητοποίησα ακριβώς πώς να το κάνω χρησιμοποιώντας βρόχους και πίνακες

Βήμα 2: Μεταφορά σε 3 διαστάσεις

Χρησιμοποιώντας τον παράδειγμα κώδικα για το Planetary Attraction που συνοδεύει την επεξεργασία, ξεκίνησα ένα νέο πρόγραμμα για προσομοίωση 3D. Η μεγάλη διαφορά είναι στην κατηγορία Πλανήτης, όπου πρόσθεσα μια συνάρτηση έλξης, που υπολογίζει τη βαρυτική δύναμη μεταξύ δύο πλανητών. Αυτό μου επέτρεψε να προσομοιώσω πώς λειτουργούν τα ηλιακά μας συστήματα, όπου οι πλανήτες δεν έλκονται μόνο από τον ήλιο, αλλά και από κάθε άλλο πλανήτη.

Κάθε πλανήτης έχει τυχαία δημιουργήσει χαρακτηριστικά όπως η μάζα, η ακτίνα, η αρχική τροχιακή ταχύτητα κλπ. Οι πλανήτες είναι συμπαγείς σφαίρες και ο Sunλιος είναι μια σφαίρα από συρματόπλεγμα. Επιπλέον, η θέση της κάμερας περιστρέφεται γύρω από το κέντρο του παραθύρου.

Βήμα 3: Χρήση πραγματικών πλανητών

Image
Image

Αφού πήρα το πλαίσιο για την τρισδιάστατη προσομοίωση, χρησιμοποίησα τη Wikipedia για να βρω τα πραγματικά πλανητικά δεδομένα για το ηλιακό μας σύστημα. Δημιούργησα μια σειρά από αντικείμενα του πλανήτη και εισήγαγα τα πραγματικά δεδομένα. Όταν το έκανα αυτό, έπρεπε να μειώσω όλα τα χαρακτηριστικά. Όταν το έκανα αυτό θα έπρεπε να είχα πάρει τις πραγματικές τιμές και να πολλαπλασιάσω με έναν συντελεστή για να μειώσω τις τιμές, αντίθετα το έκανα σε μονάδες Γης. Δηλαδή πήρα την αναλογία της αξίας της Γης προς την τιμή των άλλων αντικειμένων, για παράδειγμα ο Sunλιος έχει 109 φορές μεγαλύτερη μάζα από τη Γη. Ωστόσο, αυτό είχε ως αποτέλεσμα τα μεγέθη των πλανητών να φαίνονται πολύ μεγάλα ή πολύ μικρά.

Βήμα 4: Τελικές σκέψεις και σχόλια

Αν συνέχιζα να δουλεύω σε αυτήν την προσομοίωση, θα βελτιώσω/βελτιώσω μερικά πράγματα:

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

2. Η κάμερα δεν είναι διαδραστική, πράγμα που σημαίνει ότι μέρος των τροχιών είναι εκτός οθόνης, "πίσω από το άτομο" που βλέπουν. Υπάρχει μια βιβλιοθήκη 3D κάμερας που ονομάζεται Peazy Cam, η οποία χρησιμοποιείται στο Μέρος 2 της σειράς βίντεο του Coding Train για αυτό το θέμα. Αυτή η βιβλιοθήκη επιτρέπει στον θεατή να περιστρέφεται, να μετακινεί και να μεγεθύνει την κάμερα έτσι ώστε να μπορεί να παρακολουθεί ολόκληρη την τροχιά ενός πλανήτη.

3. Τέλος, οι πλανήτες προς το παρόν δεν διακρίνονται μεταξύ τους. Θα ήθελα να προσθέσω «δέρματα» σε κάθε πλανήτη και τον Sunλιο, έτσι ώστε οι θεατές να μπορούν να αναγνωρίσουν τη Γη και άλλα τέτοια.

Συνιστάται: