任意倾斜椭圆方程的画法
椭圆的旋转变换
标准椭圆方程为 。下面介绍两种画任意形式的椭圆方法,比如椭圆心不在原点,带有倾斜角的椭圆,结合基本
公式和程序画任意形式的倾斜椭圆。
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