用matlab求直线和椭圆的交点坐标!>> syms a b t0 t kx ky>> %已知椭圆上的一点(a*cos(t0),b*sin(t0)),过该点的矢量的方向为(kx,ky),求该向量与椭圆的另一个交点坐标(a*cos(t),b*sin(t)),即求出旋转
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/01 10:42:42
用matlab求直线和椭圆的交点坐标!>> syms a b t0 t kx ky>> %已知椭圆上的一点(a*cos(t0),b*sin(t0)),过该点的矢量的方向为(kx,ky),求该向量与椭圆的另一个交点坐标(a*cos(t),b*sin(t)),即求出旋转
用matlab求直线和椭圆的交点坐标!
>> syms a b t0 t kx ky
>> %已知椭圆上的一点(a*cos(t0),b*sin(t0)),过该点的矢量的方向为(kx,ky),求该向量与椭圆的另一个交点坐标(a*cos(t),b*sin(t)),即求出旋转角t;
>> %t必须是符号表达式(解析式)
>> %显然t与t0,a,b,kx,ky有关(t的定义见图示)
用matlab求直线和椭圆的交点坐标!>> syms a b t0 t kx ky>> %已知椭圆上的一点(a*cos(t0),b*sin(t0)),过该点的矢量的方向为(kx,ky),求该向量与椭圆的另一个交点坐标(a*cos(t),b*sin(t)),即求出旋转
syms a b t0 t kx ky
x0=a*cos(t0);
y0=b*sin(t0);
x=a*cos(t);
y=b*sin(t);
t=solve((x-x0)*ky-(y-y0)*kx,t)
t =
t0 + 2*pi*k
2*pi*k - 2*atan((b*kx + a*ky*tan(t0/2))/(a*ky - b*kx*tan(t0/2)))
显然第一个点就是原来的t0点
因为以2pi为周期的t都符合条件,所以结果会有2*pi*k的附加项
加两句
t=subs(t,'k',0);
t=t(t~=t0)
t =
(-2)*atan((b*kx + a*ky*tan(t0/2))/(a*ky - b*kx*tan(t0/2)))