用MATLAB绘制地球围绕太远运动而月球围绕地球运动

news2024/11/27 23:54:25

绘制

MATLAB代码:

clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;

% 初始化参数
num_frames = 1000; % 动画帧数
G=200;
dt = 0.01; % 时间步长

% 设置太阳、地球和月球的初始位置和半径
sun_position = [0, 0];
earth_radius = 1;
moon_radius = 0.3;
earth_orbit_radius = 2;
moon_orbit_radius = 0.5; % 相对于地球的轨道半径

% 地球和月球的初始角度(相对于太阳)
earth_angle = 0;
moon_angle = pi/4; % 为了看清嵌套效果,可以给月球一个初始角度

% 绘制太阳
figure('Position',[100 100 500 500]);
axis equal;
xlim([-earth_orbit_radius*2 earth_orbit_radius*2]);
ylim([-earth_orbit_radius*2 earth_orbit_radius*2]);
hold on;
plot(sun_position(1), sun_position(2), 'y.','markersize',150); % 绘制太阳

% 绘制动画
for k = 1:num_frames
    % 更新地球和月球的角度
    earth_angle = earth_angle + 2 * pi * dt; % 假设地球每年转一圈
    moon_angle = moon_angle + 2 * pi * 13 * dt; % 假设月球每月转一圈(简化版,实际上更复杂)
    
    % 地球的位置
    earth_position = sun_position + [earth_orbit_radius * cos(earth_angle), earth_orbit_radius * sin(earth_angle)];
    
    % 月球的位置(相对于地球)
    moon_relative_position = [moon_orbit_radius * cos(moon_angle), moon_orbit_radius * sin(moon_angle)];
    moon_position = earth_position + moon_relative_position;
    
    % 绘制地球和月球
    plot(earth_position(1), earth_position(2), 'b.','markersize',30); % 绘制地球
    plot(moon_position(1), moon_position(2), 'k.', 'markersize',10); % 绘制月球
    
    % 绘制地球和月球的轨道(可选)
    t = linspace(0, 2*pi, G);
    earth_orbit = repmat(sun_position,1,G) + [earth_orbit_radius * cos(t), earth_orbit_radius * sin(t)];
    plot(earth_orbit(:,1), earth_orbit(:,2), 'b-');
    moon_orbit = repmat(earth_position,1,G) + [moon_orbit_radius * cos(t + moon_angle - pi/2), moon_orbit_radius * sin(t + moon_angle - pi/2)]; % 偏移pi/2以从地球开始绘制
    plot(moon_orbit(:,1), moon_orbit(:,2), 'y-');
    
    % 更新图形
    drawnow;
    
    % 控制动画速度
    pause(0.1);
    
    % 清除旧的月球和地球位置(可选,以便只显示当前位置)
    % cla;
    hold on;
    plot(sun_position(1), sun_position(2), 'y.','markersize',150); % 绘制太阳
end

% 动画结束,保持图形窗口打开
hold off;

程序结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1825552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker MySQL Shutting down mysqld

6月初至6月15日发现MySQL无故停机多次,导致系统无法使用。接下来各种日志查看,排查原因。先附上一份Docker种MySQL的日志的截图。 一、根据Docker的日志初步估计是数据库内存飙升,从而被系统杀掉进程 查询Linux系统日志,在宿主机…

海康威视-按时间下载录像文件

目录 1、流程图 1.1、录像查找 1.2、录下下载 2、按时间下载 2.1、开启下载 2.2、后台下载 2.2.1、方式一 2.2.2、方式二 3、问题整理 3.1、错误码34 3.2、错误码10 3.3、下载的文件大小为0kb 4、错误码 由于没有在官方文档中找到通过ISAPI协议透传实现按时间下…

---String类---

在c语言中要使用字符串,只能通过字符指针或者字符数组,然后再通过函数进行各种操作,这种将变量和变量方法分开的方式显然不符合面向对象的编程,所以java中添加了String这个类 String类构造 而对于string有很多的方法 字符串长度…

DataFrames相关介绍文件读取

目录 1.初识DataFrame 2.DataFrame的构造函数 3.数据框的轴 4.CSV文件读取 5.Excel文件读取 1.初识DataFrame (1)昨天,我们学习了Series。而Pandas的另一种数据类型:DataFrame,在许多特性上和Series有相似之处。 …

Python虚拟环境的配置

前言: 本人一度被Python的虚拟环境的配置所困扰,前段时间抽空学习了一下,现在总结一下方法,供大家参考。 先使用winr打开命令行窗口。 展示所有虚拟环境 conda env list 创建虚拟环境 例如我们创建一个叫做py_sk的虚拟环境 …

JProfiler 性能分析案列——dump.hprof 堆内存快照文件分析排查内存溢出

在 windows 环境下实现。 一、配置 JVM 参数 配置两个 JVM 参数: -XX:HeapDumpOnOutOfMemoryError,配置这个参数,会在发生内存溢出时 dump 生成内存快照文件(xxx.hprof)-XX:HeapDumpPathF:\logs,指定生成…

SQLServer使用 PIVOT 和 UNPIVOT行列转换

在SQL Server中,PIVOT是一个用于将行数据转换为列数据的操作。它特别适用于将多个行中的值转换为多个列的情况,并在此过程中执行聚合操作。以下是关于SQL Server中PIVOT操作的详细解释和示例: 1、本文内容 概述语法备注关键点简单 PIVOT 示…

拒绝Token焦虑,盘点可白嫖的6款LLM大语言模型API~

上篇分享了如何从0到1搭建一套语音交互系统。 其中,大语言模型(LLM)是实现智能对话的关键所在。 很多小伙伴反应:本地部署 LLM 还是有门槛,本文将系统盘点:目前市面上都有哪些可以免费调用的云端API&…

华为云开发者社区活动-基于MindNLP的ChatGLM-6B聊天机器人体验

MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B实现一个聊天应用。支持流式回复。 本活动通过配置环境,模型接入,以及gradio前端界面搭建,实现了聊天机器人的功能。 以下是一些体验记录: 有兴趣的可以通过以下链…

平台型组织的战略及OKR

本文主要探讨了在平台型组织中战略和OKR(目标与关键结果)的应用,以及如何在不同的组织架构中有效制定和执行战略。原文: Strategy and OKRs in the Platform Organization 战略:重要的承诺、复杂的过程 对于什么是组织的战略&…

PS通过GTX实现SFP网络通信1

将 PS ENET1 的 GMII 接口和 MDIO 接口 通过 EMIO 方 式引出。在 PL 端将引出的 GMII 接口和 MDIO 接口与 IP 核 1G/2.5G Ethernet PCS/PMA or SGMII 连接, 1G/2.5G Ethernet PCS/PMA or SGMII 通过高速串行收发器 GTX 与 MIZ7035/7100 开发…

openh264 帧内预测编码原理:WelsMdIntraChroma 函数

帧内色度预测编码 帧内预测的目的是利用图像中相邻像素的亮度和色度值之间的接近性来进行压缩。在H.264中,帧内预测包括亮度和色度的预测。色度预测模式通常是基于亮度预测模式来确定的,因为色度分量通常具有更高的空间冗余度。色度预测模式的选择可以基…

汽车级TPSI2140QDWQRQ1隔离式固态继电器,TMUX6136PWR、TMUX1109PWR、TMUX1133PWR模拟开关与多路复用器(参数)

1、TPSI2140-Q1 是一款隔离式固态继电器,专为高电压汽车和工业应用而设计。 TPSI2140-Q1 与 TI 具有高可靠性的电容隔离技术和内部背对背 MOSFET 整合在一起,形成了一款完全集成式解决方案,无需次级侧电源。 该器件的初级侧仅由 9mA 的输入电…

Blender帧动画

时间线窗口Timeline用于定义帧动画 -视图:方法,平移,框显全部 -帧范围:可以调整动画共多少帧 -当前帧:可以拖动或手工指定 默认每秒24帧 定义一个帧动画类似unity的Timeline,只需定义关键帧&#xff0c…

java学习 项目篇 一

学习地址:https://www.bilibili.com/video/BV1TP411v7v6?p6&spm_id_frompageDriver&vd_sourcea6f7db332f104aff6fadf5b3542e5875 后端环境搭建 Entity 实体,通常和数据库的表对应DTO 数据传输对象,用于程序中各层之间传递数据 (前端…

如何使用Keil打开GD32 FPU及使用ARM DSP库

GD32目前支持ARM Cortex-M和RISC-V两种内核系列芯片,其中Cortex-M内核已经支持的有M3、M4、M23、M33、M7,这里面除了M3和M23以外,其他的都带FPU单元。我们知道,FPU在浮点运算速度上有很大的提升,并且只有带FPU才可以使…

服务器权限管理

我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险。所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要。(权限越大,责任越大) 1.基本权限 U--user用户,G-group…

板凳------56.Linux/Unix 系统编程手册(下) -- SOCKET 介绍

56.1.概述 socket 是一种IPC方法,允许位于同一主机或使用网络连接起来的不同主机上的应用程序之间交换数据。 UNIX 允许位于同一主机系统上的应用程序之间通信 Internet domain IPv4 and IPV6 // socket 通信方式 1.各个应用程序创建一个socket,socket是…

GraogGNSSLib学习

GraogGNSSLib学习 程序编译环境版本项目编译结果问题 程序编译 GraphGNSSLib 环境版本 程序开源是在ubuntu16.04-kinetic环境跑通的,但是我的环境是UBUNTU20.04,所以,先进行了ROS的安装,因为我的系统是ubuntu20.04所以&#xf…

软考中级|软件设计师-知识点整理

目录 计算机网络概论 计算机系统基础知识 中央处理单元 数据表示 校验码 计算机体系结构 计算机体系结构的发展 存储系统 输入/输出技术 安全性、可靠性与系统性能评测基础知识 加密技术和认证技术 计算机可靠性 程序设计语言基础知识 程序设计语言概述 程序设计…