求椭圆与过椭圆圆心的直线的交点

xuguomin1982 2010-03-27 10:40:15
如题, 请高手赐教算法, 有代码最好, 谢谢!
...全文
523 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuguomin1982 2010-03-27
  • 打赏
  • 举报
回复
已搞定, 谢谢大家!
但还得考虑垂直线的情况
cattycat 2010-03-27
  • 打赏
  • 举报
回复
y=cx;
x^2/a^2 + y^2/b^2 =1;

将直线代入椭圆得到:
(b^2+a^2 * c^2)* x^2 =a^2 * b^2
x=sqrt(a^2 * b^2)/((b^2+a^2 * c^2)* )
在代码中就是
x=sqrt(a*a * b*b)/(b*b + a*a * c*c);
y=c*x;

中心对称的,另外的交点也就知道了。
cattycat 2010-03-27
  • 打赏
  • 举报
回复
用matlab应该是最简单的,可以直接描述椭圆方程和直线方程求出交点来。

其实这种交点表示还算法简单,假设的是标准方程的话,就按4楼的解法,相当于你自己把求解的方程带进去。
xuguomin1982 2010-03-27
  • 打赏
  • 举报
回复
谢谢楼上, 我试试
dubiousway 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuguomin1982 的回复:]

数学上的解法我知道, 但不知道怎样用代码来求解啊
[/Quote]

看看结果对吗(但愿我算术还及格)

#include <stdio.h>
#include <math.h>

void main()
{
// x^2/a^2 + y^2/b^2 =1.........(1)
// y=cx.........................(2)
// x^2/a^2 + c^2*x^2/b^2=1
// x=sqrt(a^2*b^2/(b^2+a^2*c^2) ) ^ 这里表示乘方。但其实c里面不是这意思,所以后面都用a*a 表示

double x,y,a,b,c;
a=3;//假设 a,b,c 分别是 3,4,5
b=4;
c=5;
x=sqrt(a*a*b*b/(b*b+a*a*c*c));
y=c*x;
printf("intersection 1 at (%f,%f)\nintersection 2 at (%f,%f)\n",x,y,-x,-y);
}
xuguomin1982 2010-03-27
  • 打赏
  • 举报
回复
数学上的解法我知道, 但不知道怎样用代码来求解啊
dubiousway 2010-03-27
  • 打赏
  • 举报
回复
这个是不是很难。

椭圆:

x^2/a^2 + y^2/b^2 =1.....(1)
y=cx.........................(2)

(2) 代入(1)求解,可以吗/

lb_bn 2010-03-27
  • 打赏
  • 举报
回复
帮楼主顶一下.

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧