# -*- coding:utf-8 -*- # title :哈雷彗星场景半真实模拟共用库 # description : # author :Python超人 # date :2023-11-06 # link :https://gitcode.net/pythoncr/ # python_version :3.9 # ============================================================================== import math from dataclasses import dataclass from dataclasses import field from common.celestial_data_service import get_reality_orbit_points from common.consts import AU from objs import HalleComet from simulators.ursina.ursina_mesh import create_orbit_by_points @dataclass(order=True) class HalleyCometParams: start_time: str = field(default='1983-03-20 00:00:00') init_velocity: list[float] = field(default_factory=[3.34, 0, 10.718]) init_position: list[float] = field(default_factory=[0, 0.5 * AU, -10 * AU]) def create_halley_comet(init_velocity, init_position): """ 创建哈雷彗星 @return: """ # 哈雷彗星的平均运行速度约为每小时 70,000 英里或每小时 126,000 公里 。(35公里/秒) # 每76.1年环绕太阳一周的周期彗星 halley_comet = HalleComet( # size_scale=4e7, size_scale=1e8, init_velocity=init_velocity, init_position=init_position) \ .set_light_disable(True) return halley_comet def create_orbit_line(center_body, body, start_time): orbital_days = int(math.ceil(body.orbital_days * 1.02)) points = get_reality_orbit_points(type(body).__name__.lower(), start_time=start_time, days=orbital_days, segments=100) # print(points) orbit_line = create_orbit_by_points(center_body.position, points, line_color=body.trail_color) return orbit_line