模拟一个点在椭圆上移动

20次浏览(过去30天)
耶稣·莱昂
耶稣·莱昂 2021年8月2日
回答: darova 2021年8月3日
我的代码要求用户输入一个椭圆的焦点1和焦点2的坐标。我只需要弄清楚如何模拟一个点在椭圆上移动。
clc
清晰的
X1 =输入(给我太阳的x值(焦点1));%检查椭圆图像
Y1 =输入(给我太阳的Y值(focus1));%检查椭圆图像
X2 = input("给我焦点2的x值");%检查椭圆图像
Y2 =输入(给我焦点2的Y值);%检查椭圆图像
持有
持有
drawellipse (x1, x2, y1, y2)
持有
太阳(x1, y1,“黄色”
% %功能
函数drawellipse (x1, x2, y1, y2)
定义参数。
%设置近日点(接近太阳)
Rp =√((x1)²+ (y1)²);
设定远日点(离太阳最远的地方)
Ra =√((x2)²+ (y2)²);
%决定偏心率(椭圆的形状有多平或圆)
%来自Rp和Ra
偏心率= (Ra-Rp)/(Ra+Rp);
numPoints = 500;椭圆越粗越少,分辨率越高越好。
数字越大,椭圆看起来越平滑
%制作方程式:
% a是从椭圆中心到椭圆的距离(又名椭圆的长度)
%半长轴
a = 0.5 * (Rp + Ra);
% c是椭圆中心到焦点(太阳的焦点)的距离
%位置是一个焦点)
C =偏心量*a;
精轴长度的%
B =√(a^2 - c^2);
%创建空椭圆
t = linspace(0,2 * pi, numPoints);%从0弧度到2弧度
X = a * cos(t);
Y = b * sint;
计算相对于(x1, y1)的角度。我不知道这里发生了什么,哈哈
角度= atan2(y2 - y1, x2 - x1);
x = (x1 + x2) / 2 + xcos(角)- Y * sin(角);
y = (y1 + y2) / 2 + xsin(角)+ ycos(角);
将椭圆绘制为蓝色曲线。
Subplot (1,1,1);
情节(x, y,“b -”“线宽”1);绘制椭圆
网格
平等的
结束
函数太阳(s, v,颜色)
持有
颜色=颜色+“。”
情节(s, v,颜色,“MarkerSize”, 75);
持有
结束

接受的答案

darova
darova 2021年8月3日
使用 暂停()
T = linspace(0,2*pi,20);
X = 5*cos(t);
Y = 3* sint;
H = plot(5,0,“r”);
线(x, y)
I = 1:20
集(h,“xdata”x(我))
集(h,“ydata”y (i))
暂停(0.5)
结束

更多答案(0)

类别

了解更多地球与行星科学帮助中心而且文件交换

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!