matlab snapnow,任意倾斜椭圆方程的画法.pdf

任意倾斜椭圆方程的画法

椭圆的旋转变换

标准椭圆方程为 。下面介绍两种画任意形式的椭圆方法,比如椭圆心不在原点,带有倾斜角的椭圆,结合基本

公式和程序画任意形式的倾斜椭圆。

Contents

 初始参数

 画椭圆方法一

 画椭圆方法二

 结论

初始参数

clear all; close all; clc;

syms x y;

% 半焦距

c=4;

% 长半轴长

a=1.1*c;

% 短半轴长

b=sqrt(a^2-c^2);

% 离心率 $(0

e=c/a

% 椭圆心坐标

x0=5;

y0=3;

离心率: e = 0.9091

1

画椭圆方法一

知道圆心和长短半轴长度的任意椭圆方程为

for theta=linspace(0,pi,4); % 旋转 \theta 角

% 椭圆方程的旋转变换

f=(a^2-c^2*cos(theta)^2)*(x-x0).^2+(a^2-c^2*sin(theta)^2)*(y-y0).^2-c^2*sin(2*theta)*(x-x0).*(y-y0)-a^2*b^2;

figure(1)

h=ezplot(f,[-1.5*a+x0,1.5*a+x0,-1.5*a+y0,1.5*a+y0]);

h.Color = 'r';

xlabel('x');

ylabel('y');

hold on

plot(x0,y0,'b*','MarkerSize',20)

text(x0,y0,'\leftarrow Center');

title(['旋转椭圆方程 ','\theta = ',num2str(theta)]);

grid on

% hold off

snapnow

% pause(0.5)

end

2

3

画椭圆方法二

知道两个焦点和半长轴的任意椭圆方程为

for theta=linspace(0,pi,6); % 旋转 \theta 角

% 两个椭圆焦点坐标

x1 = x0 + c*cos(theta);

y1 = y0 + c*sin(theta);

x2 = x0 - c*cos(theta);

y2 = y0 - c*sin(theta);

% 椭圆方程的旋转变换

f=sqrt((x-x1).^2+(y-y1).^2)+sqrt((x-x2).^2+(y-y2).^2)-2*a;

figure(2)

h=ezplot(f,[-1.5*a+x0,1.5*a+x0,-1.5*a+y0,1.5*a+y0]);

h.Color = 'r';

xlabel('x');

ylabel('y');

hold on

plot(x0,y0,'b*','MarkerSize',20)

text(x0,y0,'\leftarrow Center');

title(['旋转椭圆方程 ','\theta = ',num2str(theta)]);

grid on

% hold off

snapnow

% pause(0.5)

end

4

结论

画椭圆的方式有很多种,根据不同的椭圆表达式可以画出椭圆,不同的公式之间可以相互转换。在这里介绍了两种形式的椭圆方

程,知道椭圆心和长短半轴长度的任意椭圆方程,知道两个焦点和半长轴的任意椭圆方程,虽然两种椭圆的表示方式不一样,结果

还是殊途同归的。

Published with MATLAB® R2014b

5

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值