悬赏100!用matlab求直线和椭圆的交点坐标!

>>symsabt0tkxky>>%已知椭圆上的一点(a*cos(t0),b*sin(t0)),过该点的矢量的方向为(kx,ky),求该向量与椭圆的另一个交点坐标(a*c... >> 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的定义见图示)
展开
dukinkin
2014-12-15 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:925万
展开全部
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)))
更多追问追答
追问
我见你的结果用来atan函数,这个函数存在问题吧?
因为反正切得到的角度位于(-pi/2,pi/2),所以第二和第三象限的t值会错以为是第一和第四象限的。。。
能不能有一种解析式,让确定的t0,a,b,kx,ky对应一个唯一的t值呢?
追答
结果前面有个-2*
就将-pi/2~pi/2变成-pi~pi
你可以代几个数进去看看结果对不对

的确atan和atan2是不同的,
atan2根据y和x的正负判断角的象限
但是符号运算是不能判断大小的,正负的,所以符号运算中不能用atan2
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式