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

绘制

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.mzph.cn/news/851393.shtml

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

相关文章

Leetcode881. 救生艇

Every day a Leetcode 题目来源:881. 救生艇 解法1:贪心 排序 双指针 排序后,使用双指针分别指向数组首尾,每次取两个指针指向的元素之和与 limit 比较,如果小于等于 limit,则两个指针同时向中间移动一…

【TensorFlow深度学习】Q学习算法原理与Q表的实现

Q学习算法原理与Q表的实现 Q学习算法原理与Q表的实现:强化学习的基石探索Q学习算法原理Q表的实现代码实现结语 Q学习算法原理与Q表的实现:强化学习的基石探索 在强化学习的广阔天地里,Q学习算法是一颗璀璨的明星,以其优雅的理论基…

docker-ce 和 docker-ee介绍版本介绍

1 docker-ce 和 docker-ee介绍版本介绍 •Docker-CE指Docker社区版,由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用。•Docker-EE指Docker企业版,为收费版本,由售后团队和技术团队提供技术支持&am…

箭头函数 this

箭头函数中,是没有this的,所以写在箭头函数中的this,会自动向当前作用域的上一层作用域寻找,是否含有this,如果有就指代,没有就继续找上一层。 new Vue({el:#root,data:{firstName:张,lastName:三,fullNam…

Android Studio历史版本

android studio的历史版本

【langchain】langchain调用huggingface本地模型基础demo

目前网上的langchain教程大多数都是关于如何调用OpenAI等远程模型,对于本地模型的调用示例写法比较少。而且langchain也在不停迭代,文档也比较杂。我个人用Hugging Face的开源模型比较多。因此,本文将向大家介绍如何使用Langchain调用Hugging…

国产达梦数据库使用说明

参考: https://eco.dameng.com/document/dm/zh-cn/start/tool-dm-disql.html https://blog.csdn.net/qq_37358909/article/details/113343515 具体启动脚本名可能版本不同有所差异,注意判断 [rootlocalhost root] cd /home/dmdba/dmdbms/bin [rootloca…

13、架构-流量治理之流量控制

概述 任何一个系统的运算、存储、网络资源都不是无限的,当系统资源不足以支撑外部超过预期的突发流量时,便应该有所取舍,建立面 对超额流量自我保护的机制,这个机制就是微服务中常说的“限 流”。 最大处理能力为80TPS的系统遇到1…

HQL面试题练习 —— 累加刚好超过各省GDP40%的地市名称

目录 1 题目2 建表语句3 题解 1 题目 现有各省地级市的gdp数据,求从高到底累加刚好超过各省GDP40%的地市名称,临界地市也需要。例如: 浙江省的杭州24% 宁波 20% ,杭州宁波44% 大于40% 取出杭州、宁波 江苏省的苏州19% 南京 14% 无锡 12%&am…

【车载开发系列】各类总线介绍

【车载开发系列】各类总线介绍 【车载开发系列】各类总线介绍 【车载开发系列】各类总线介绍一、为什么需要总线二、车载总线的种类三、CAN总线1) CAN协议简介2)CAN协议特点 四、CAN FD总线1)CAN FD协议简介2)CAN FD协议特点 五. …

C++文件系统

文件或目录的复制 std::filesystem::copy 函数默认会在目标位置存在同名文件时抛出异常,而不会覆盖已存在的文件。但是你可以通过传递一个额外的参数来指定复制操作是否覆盖已存在的文件。在C17及以上版本中,可以使用 std::filesystem::copy_options 枚…

2.nginx常用命令

使用nginx命令需要进入nginx目录里面执行。 /usr/local/nginx/sbin/ 查看nginx的版本号 启动nginx ./nginx 关闭nginx ./nginx -s stop 查看nginx的是否运行的命令 重新加载nginx 针对配置目录中配置文件nginx.cnf修改后需要重新加载 /usr/local/nginx/conf/nginx.cnf …

【数学】各种图面积公式的推导

Hello!大家好,我是学霸小羊,今天讲讲面积公式。 1.长方形 长方形是 由无数条 长度为长方形的长(或宽)的线 组成的图形,这些线有多少根,我们不知道,只需要知道他们垒成了一个由高 宽…

【linux】(6)文本处理sed

sed(stream editor)是可以根据指定的脚本对输入文本进行编辑、替换、删除等操作。 基本用法 sed [options] script [file...]常用选项 -n:抑制默认输出。通常 sed 会打印每一行,通过 -n 选项可以只打印被脚本处理的行。 sed -n …

Mysql执行一条语句都有哪些操作

Mysql的执行流程 MySQL 的架构共分为两层:Server 层和存储引擎层, Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现,主要包括连接器,查询缓存、解析器、预处理器、优化器、执行器等。另外&#xf…

Mongoldb 入门

MongoDB是个数据库,但和你可能听说过的比如MySQL这些传统的关系型数据库不太一样,它是一个非关系型数据库,也叫NoSQL数据库。想象一下,如果数据不是放在整齐的表格里,而是像一堆堆杂货,每堆里放的东西可以不…

鸿蒙轻内核M核源码分析系列十九 Musl LibC

LiteOS-M内核LibC实现有2种,可以根据需求进行二选一,分别是musl libC和newlibc。本文先学习下Musl LibC的实现代码。文中所涉及的源码,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_m 获取。LiteOS-M内核提供了和内核相关的…

斗地主小游戏

ctrlshift/:多行注释 第一版&#xff1a; App:package game;public class App {public static void main(String[] args) {new PokerGame();} }package game;import java.util.ArrayList; import java.util.Collections;public class PokerGame {//存储牌static ArrayList<…

基于小波样条框架的一维时间序列信号降噪方法(MATLAB R2018A)

1952年&#xff0c;DUFFIN在研究非调和Fourier级数时引入了Hilbert空间中框架的概念&#xff0c;然而并没有引起很大的反响。1986年&#xff0c;DAUBECHIES研究发现利用框架可以将L2(R)中的函数展开成类似标准正交基的级数&#xff0c;并且用框架研究函数时所需的条件要比用标准…

多态的应用——数组多态

介绍 ai查询 在Java中&#xff0c;动态数组通常通过ArrayList类来实现&#xff0c;它是Java集合框架&#xff08;Java Collections Framework&#xff09;的一部分。ArrayList是一个可调整大小的数组实现&#xff0c;提供了比标准数组更多的灵活性和功能。 以下是使用ArrayLis…