太空飞船任务,生成一个地球发射、火星着陆以及下一次发射窗口返回地球的动画3D代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from mpl_toolkits.mplot3d import Axes3D# 天体参数设置(简化模型)
AU = 1.5e8 # 天文单位(公里)
earth_orbital_radius = 1.0 * AU
mars_orbital_radius = 1.5 * AU
orbital_speed = 2e4 # 简化轨道速度(km/s)# 时间参数
earth_period = 365 # 天
mars_period = 687 # 天
transfer_time = 258 # 霍曼转移时间(天)
time_step = 2 # 动画时间步长(天)
total_duration = 800 # 总任务时间(天)# 初始化图形
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
ax.set_facecolor('black')# 天体初始位置
def celestial_pos(t, period, radius):angle = 2 * np.pi * t / periodreturn radius * np.array([np.cos(angle), np.sin(angle), 0])# 霍曼转移轨道计算
def transfer_orbit(t, t_start, radius_from, radius_to, transfer_time):angle = np.pi * (t - t_start) / transfer_timer = radius_from + (radius_to - radius_from) * (t - t_start) / transfer_timereturn r * np.array([np.cos(angle), np.sin(angle), 0])# 初始化绘图元素
earth, = ax.plot([], [], [], 'o', color='blue', markersize=8)
mars, = ax.plot([], [], [], 'o', color='red', markersize=6)
ship, = ax.plot([], [], [], 'o', color='white', markersize=4)
trajectory, = ax.plot([], [], [], '-', color='gray', alpha=0.5)
sun = ax.plot([0], [0], [0], 'o', color='yellow', markersize=12)[0]# 坐标轴设置
max_orbit = mars_orbital_radius * 1.2
ax.set_xlim(-max_orbit, max_orbit)
ax.set_ylim(-max_orbit, max_orbit)
ax.set_zlim(-max_orbit / 10, max_orbit / 10)
ax.axis('off')# 动画更新函数
def update(frame):t = frame * time_step# 更新天体位置earth_pos = celestial_pos(t, earth_period, earth_orbital_radius)earth.set_data(earth_pos[0], earth_pos[1])earth.set_3d_properties(0)mars_pos = celestial_pos(t, mars_period, mars_orbital_radius)mars.set_data(mars_pos[0], mars_pos[1])mars.set_3d_properties(0)# 飞船状态机if t < transfer_time: # 前往火星阶段ship_pos = transfer_orbit(t, 0, earth_orbital_radius, mars_orbital_radius, transfer_time)elif t < transfer_time + 30: # 火星停留ship_pos = mars_poselse: # 返回地球阶段ship_pos = transfer_orbit(t - transfer_time - 30, 0, mars_orbital_radius, earth_orbital_radius, transfer_time)ship.set_data(ship_pos[0], ship_pos[1])ship.set_3d_properties(0)# 更新轨迹x, y, z = trajectory.get_data_3d()x = np.append(x, ship_pos[0])y = np.append(y, ship_pos[1])z = np.append(z, 0)trajectory.set_data(x, y)trajectory.set_3d_properties(z)return earth, mars, ship, trajectory, sun# 创建动画
ani = FuncAnimation(fig, update, frames=int(total_duration / time_step),interval=50, blit=True)# 添加图例和标注
ax.text(0, 0, 0, "SUN", color='yellow', ha='center')
ax.text(earth_orbital_radius, 0, 0, "Earth", color='blue')
ax.text(mars_orbital_radius, 0, 0, "Mars", color='red')plt.show()相关文章:
太空飞船任务,生成一个地球发射、火星着陆以及下一次发射窗口返回地球的动画3D代码
import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation from mpl_toolkits.mplot3d import Axes3D# 天体参数设置(简化模型) AU 1.5e8 # 天文单位(公里) earth_orbital_radius …...
IDEA——Mac版快捷键
目录 按键含义常用组合代码生成快捷键:代码追踪快捷键:高效编辑快捷键:代码重构快捷键:工具类快捷键:常规文件操作快捷键: 按键含义 ⌘ command Command键(⌘)相当于Windows中的Con…...
智能体系统(AI Agent System)是什么?——从概念解析到企业数字化转型的全景落地及投资视角
文章目录 一、 前言1.1 背景介绍1.2 写作目的 二、 智能体系统及相关概念解析2.1 智能体系统定义2.2 关键概念区分2.2.1 自主代理(Autonomous Agent)2.2.2 多智能体系统(MAS)2.2.3 人工智能/机器学习(AI/ML)…...
Vue 前端开发中的路由知识:从入门到精通
文章目录 引言1. Vue Router 简介1.1 安装 Vue Router1.2 配置 Vue Router1.3 在 Vue 实例中使用 Vue Router 2. 路由的基本用法2.1 路由映射2.2 路由视图2.3 路由链接 3. 动态路由3.1 动态路径参数3.2 访问动态参数3.3 响应路由参数的变化 4. 嵌套路由4.1 定义嵌套路由4.2 渲染…...
前端VUE+后端uwsgi 环境搭建
1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;在nginx上加上安全性或其他的限制,可以达到保护程序的作用;uWSGI本…...
I2C实践开发 ---【STM32-I2C-HDC1080温湿度采集系统】
I2C实践开发 — STM32-I2C-HDC1080温湿度采集系统 目录 I2C实践开发 --- STM32-I2C-HDC1080温湿度采集系统1. 引言2. 系统架构2.1 硬件架构2.2 软件架构 3. 代码分析3.1 I2C驱动文件 (i2c.h 和 i2c.c)3.2 HDC1080传感器驱动文件 (hdc1080.h 和 hdc1080.c) 4. 功能总结【HDC1080…...
【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调【完整教程】
文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.3.1 zero-1微调2.2.3.2 zero-2微调2.2.3.3 zero-3微调2.2.3.4 单卡Lora微调 2.2.4 实验2.2.4.1 实验1:多GPU微调-zero12.2.4.2 实验2:…...
浏览器报错:无法访问此网站 无法找到xxx.xxx.net的DNS地址。正在诊断该问题。尝试运行Windows网络诊断。DNS_PROBE_STARTED
🤟致敬读者 🟩感谢阅读🟦希望我的文章能帮到您🟪如有兴趣可点关注了解更多内容 📘博主信息 点击标题👆有惊喜 📃文章前言 🔷文章均为学习和工作中整理的笔记,分享记录…...
【设计模式】 代理模式(静态代理、动态代理{JDK动态代理、JDK动态代理与CGLIB动态代理的区别})
代理模式 代理模式是一种结构型设计模式,它提供了一种替代访问的方法,即通过代理对象来间接访问目标对象。代理模式可以在不改变原始类代码的情况下,增加额外的功能,如权限控制、日志记录等。 静态代理 静态代理是指创建的或特…...
网络安全-攻击流程-用户层
用户层攻击主要针对操作系统中的用户空间应用程序及用户权限,利用软件漏洞、配置错误或用户行为弱点进行攻击。以下是常见的用户层攻击类型及其流程,以及防御措施: 1. 缓冲区溢出攻击 攻击流程: 目标识别:确定存在漏…...
网络安全等级保护测评(等保测评):全面指南与准备要点
等保测评,全称为“网络安全等级保护测评”,是根据《网络安全法》及《网络安全等级保护条例》等法律法规,对信息系统进行安全等级划分,并依据不同等级的安全保护要求,采用科学方法和技术手段,全面评估信息系…...
具身导航赋能智能物流!OpenBench:智能物流最后一公里语义导航新基准
作者:Junhui Wang, Dongjie Huo, Zehui Xu, Yongliang Shi, Yimin Yan, Yuanxin Wang, Chao Gao, Yan Qiao, Guyue Zhou 单位:澳门科技大学系统工程与协作实验室、智能科学与系统联合实验室,清华大学人工智能产业研究院(AIR&…...
详解 本机安装多个MySQL服务【为后续大数据量分库分表奠定基础,以mysql8.0为例,附有图文】
本机安装多个mysql 在电脑上新建mysql8文件夹,然后在mysql8文件下新建mysql3391文件夹。然后找到自己原本mysql的安装目录,我的是E:\software\mysql\one,如图所示: 将次目录下的所有文件全选复制粘贴在mysql3391文件夹下。 然后…...
2025年新趋势:如何利用AI技术优化你的在线帮助中心
在2025年的今天,人工智能(AI)技术正以惊人的速度改变着我们的世界。从自动驾驶汽车到智能家居,从医疗诊断到金融分析,AI的身影无处不在。而在客户服务领域,AI同样正在发挥着越来越重要的作用。特别是在线帮…...
同花顺Java开发面试题及参考答案 (上)
int 类型占用几个字节?float 类型的数字如何与 0 进行比较? 在 Java 中,int 类型是一种基本数据类型,它占用 4 个字节。一个字节有 8 位,所以 int 类型总共是 32 位。这 32 位可以用来表示不同的整数值,其取…...
CommonLang3-使用介绍
摘自:https://www.cnblogs.com/haicheng92/p/18721636 学习要带着目的,参照现实问题 本次目标: 了解 CommonsLang3 API 文档,找对路后以后开发直接查询 API 文档,摈弃盲目的百度掌握基础的字符串、日期、数值等工具…...
Java常用设计模式及其应用场景
1. 什么是设计模式? 设计模式是一个经过多次验证的、针对常见问题的可复用解决方案。设计模式并不是具体的代码实现,而是给出了如何解决问题的思路和结构。在实际开发过程中,设计模式有助于开发者快速找到合适的解决方案,从而减少…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_pnalloc函数
ngx_pnalloc 声明在 src\core\ngx_palloc.h void *ngx_pnalloc(ngx_pool_t *pool, size_t size); 定义在 src\core\ngx_palloc.c void * ngx_pnalloc(ngx_pool_t *pool, size_t size) { #if !(NGX_DEBUG_PALLOC)if (size < pool->max) {return ngx_palloc_small(pool, …...
【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析①】
ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase01 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-001测试用例 用例ID测试场景验证要点参考条款预期…...
A与B组件自动对齐与组装,无映射直接补偿。
网上针对组装的从视觉到控制动作,要不就是收费,要不就是简单介绍。这么详细的比较难找~ 手下留情,不喜勿喷! Show time~ 分步解决方案: 标定阶段(Calibration) 9点张氏标定(每个位置A1、A2、B1、B2): 使用机械手在相机视野内沿Z字形路径移动,覆盖9个点(XY方…...
探索KMS智能激活:为Windows和Office提供稳定授权的完整方案
探索KMS智能激活:为Windows和Office提供稳定授权的完整方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 在数字化工作环境中,稳定的系统授权是高效生产力的基石。KMS_…...
【YOLOv11】072、YOLOv11少样本学习:极少量标注数据下的模型训练
深夜实验室里的困境 上周三凌晨两点,隔壁工位的算法工程师小张盯着屏幕叹气。他手里有个新项目:产线上新增了三种缺陷类型,每种缺陷只有不到30张标注图片,产线经理却要求下周上线检测模型。他尝试用标准的YOLOv11训练流程,结果验证集mAP始终卡在0.2左右,模型要么过拟合严…...
从API响应到数据库:手把手教你用Fastjson搞定Java对象与JSON的“无缝”转换(附完整代码)
从API到数据库:Fastjson在Java对象与JSON转换中的实战指南 JSON作为现代Web开发中的通用数据格式,几乎贯穿了前后端交互的每个环节。而Fastjson作为Java生态中性能优异的JSON处理库,其简洁的API设计让数据转换变得异常轻松。本文将带你体验一…...
STM32F1 HAL库实战:把PA13/PA14从SWD手里‘抢’回来做GPIO
STM32F1 HAL库实战:PA13/PA14引脚复用与SWD调试的取舍艺术 当IO资源捉襟见肘时,STM32的调试引脚往往成为开发者眼中的"备用粮仓"。PA13(SWDIO)和PA14(SWCLK)这对黄金搭档,在默认状态下被SWD调试接口独占,但当项目需要额…...
别再手动建模了!用QuickRopes为你的Unity游戏快速生成动态绳索与电缆
别再手动建模了!用QuickRopes为你的Unity游戏快速生成动态绳索与电缆 在独立游戏开发中,绳索、锁链和电缆这类动态元素往往是最容易被低估的美术资源。我曾参与过一个海盗题材的项目,团队花了整整两周时间手动绑定锚链的骨骼动画,…...
Go 语言从入门到进阶 | 第 16 章:反射(Reflection)
系列:Go 语言从入门到进阶 作者:耿雨飞 适用版本:go v1.26.2 前置条件 在开始本章学习之前,请确保: 已完成第 6 章(接口与多态)的学习,理解接口的动态类型和动态值 已完成第 4 章(复合数据类型)的学习,熟悉结构体和标签语法 已获取 Go 1.26.2 源码树(go-go1.26.2 …...
如何轻松批量下载E-Hentai漫画:自动化下载器完整指南
如何轻松批量下载E-Hentai漫画:自动化下载器完整指南 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 你是否曾经为了收藏喜欢的漫画而不得不一页一页手动保…...
Python发票自动化处理实战:Invoice Forge解析、生成与集成指南
1. 项目概述与核心价值 最近在折腾一个个人项目,需要处理大量的发票数据,从PDF里提取信息、生成结构化数据,再根据模板批量生成新的发票文档。一开始想着用现成的库拼凑一下,但试了几个方案,要么功能太单一,…...
MMMU基准测试:多模态大模型的“全科考试”与本地实践指南
1. 项目概述:当大模型遇上“全科考试”最近在AI圈子里,一个名为“MMMU”的基准测试火了。如果你关注多模态大模型(比如GPT-4V、Gemini Pro Vision这些能“看懂”图片和视频的模型)的发展,那你大概率已经听过它的大名。…...
结构拓扑优化与OAT框架:深度学习驱动的工程设计革命
1. 结构拓扑优化与OAT框架概述结构拓扑优化(Topology Optimization, TO)是工程设计领域的核心技术,其目标是在给定设计空间内寻找最优的材料分布方案,以满足特定的物理性能指标(如刚度最大化或强度最大化)。…...
