木星及其卫星人机交互课设

本课设使用 Python 语言实现了一个关于木星及其卫星的人机交互程序,用户可以通过交互界面查看木星的基本信息、表面特征、卫星信息,并以动画形式观察木星及其卫星的轨道运动。

功能介绍

  1. 显示木星的基本信息: 包括木星的直径、质量、轨道等基本参数。
  2. 显示木星的表面特征: 通过图像展示木星的大红斑和其他特征。
  3. 显示木星的卫星: 列出木星的主要卫星,并提供它们的基本信息和图像。
  4. 显示木星的轨道: 通过动画以及 plotly 实时可视化展示木星和其卫星的轨道运动。
  5. 提供交互式控制: 允许用户通过按钮选择不同的功能切换显示内容。

代码示例

import matplotlib.pyplot as plt
import plotly.graph_objects as go
from IPython.display import Image, display

class Jupiter:
    def __init__(self):
        self.diameter = 139820  # 千米
        self.mass = 1.898e27  # 千克
        self.orbit = 778.5  # 百万千米

    def display_basic_info(self):
        print('Jupiter's basic information:')
        print('Diameter: {} km'.format(self.diameter))
        print('Mass: {} kg'.format(self.mass))
        print('Orbit: {} million km'.format(self.orbit))

    def display_surface_features(self):
        display(Image('jupiter_surface.jpg'))  # 展示木星的表面特征图像

    def display_satellites(self):
        print('Jupiter's major satellites:')
        satellites = {
            'Io': {
                'diameter': 3643,
                'image': 'io.jpg'
            },
            'Europa': {
                'diameter': 3121,
                'image': 'europa.jpg'
            },
            'Ganymede': {
                'diameter': 5262,
                'image': 'ganymede.jpg'
            },
            'Callisto': {
                'diameter': 4821,
                'image': 'callisto.jpg'
            }
        }
        for satellite, info in satellites.items():
            print('{} - Diameter: {} km'.format(satellite, info['diameter']))
            display(Image(info['image']))  # 展示卫星的图像

    def display_orbit(self):
        # 使用Plotly动画展示木星和其卫星的轨道运动
        fig = go.Figure()
        fig.add_trace(go.Scatter(x=[0], y=[0], mode='markers', name='Jupiter'))
        fig.add_trace(go.Scatter(x=[0], y=[0], mode='markers', name='Io'))
        fig.add_trace(go.Scatter(x=[0], y=[0], mode='markers', name='Europa'))
        fig.add_trace(go.Scatter(x=[0], y=[0], mode='markers', name='Ganymede'))
        fig.add_trace(go.Scatter(x=[0], y=[0], mode='markers', name='Callisto'))

        fig.update_layout(
            title='Jupiter and Satellites Orbit',
            xaxis_title='X',
            yaxis_title='Y',
            showlegend=True
        )

        fig.show()

    def display_interactive_controls(self):
        while True:
            print('Choose an option:')
            print('1. Display Jupiter's basic information')
            print('2. Display Jupiter's surface features')
            print('3. Display Jupiter's satellites')
            print('4. Display Jupiter's orbit')
            print('5. Exit')

            option = input('Enter your choice (1-5): ')

            if option == '1':
                self.display_basic_info()
            elif option == '2':
                self.display_surface_features()
            elif option == '3':
                self.display_satellites()
            elif option == '4':
                self.display_orbit()
            elif option == '5':
                print('Exiting...')
                break
            else:
                print('Invalid option. Please try again.')


jupiter = Jupiter()
jupiter.display_interactive_controls()

注意

  1. 该代码示例中的图像文件(例如jupiter_surface.jpgio.jpg等)需要与代码文件位于同一目录下。您需要准备相应的图像文件,并将其命名为正确的文件名,以使代码能够正确加载和显示图像。
  2. 为了运行使用Plotly进行动画的部分,您需要安装Plotly库,可以使用以下命令安装:
pip install plotly

希望对您有所帮助!


原文地址: https://www.cveoy.top/t/topic/o4VN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录