matlab 已知椭圆方程用二值图像画出其轨迹。

来源:百度知道 编辑:UC知道 时间:2024/06/30 03:16:02
已知椭圆方程
(x*cos(t)+y*sin(t)-m)^2/a^2+(y*cos(t)-x*sin(t)-n)^2/b^2=1
其中t是椭圆长轴与x轴的夹角,a,b分别是长半轴短半轴长度,m,n是圆心坐标.怎么用这个方程把椭圆在二值图像上画出来。即轮廓用0表示(黑色),其他部分用1表示(白色)
请尽量说详细点。 我自己想的方法是,手工算出y关于x的表达式,然后分别把x的坐标带进去求出y,但是这样我觉得太繁琐了,而且椭圆是旋转了的,x的坐标范围也不好求。
不好意思没太多分!但是尽量帮帮忙吧

% 设X=x*cos(t)+y*sin(t)-m;
% Y=y*cos(t)-x*sin(t)-n;
% 则[X+m; Y+n]=A*[x; y];
% where A is matrix [cos(t),sin(t); -sin(t), cos(t)];
% and X.^2/a^2 + Y.^2/b^2==1;
% so CODE:
a=2;b=1;t=pi/3;m=1,n=1
theta=linspace(0,2*pi,1000);
X=a*cos(theta);Y=b*sin(theta);
x=(X+m)*cos(t)-(Y+n)*sin(t);
y=(X+m)*sin(t)+(Y+n)*cos(t);
plot(x,y)

% 这个画出来的图好像有点不对。你自己推导一下相应的公式吧。
% 这个问题应该是一个数学问题,不是程序上的问题。

这个可以用参数方程直接得到x和y 的表达式的吧,具体我忘记了,你自己去查查椭圆的参数方程的表达式看看吧~~~~