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

xuguomin1982 2010-03-27 10:40:15
如题, 请高手赐教算法, 有代码最好, 谢谢!
...全文
447 8 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
帮楼主顶一下.
本文假设数码相机成像原理为小孔成像,在此基础上,通过两种合理的模型 对数码相机定位问题进行了较深入的研究。 针对问题一和二,我们建立了两种不同模型——变换矩阵模型和公切线模 型。在变换矩阵模型中,建立了物、像、相机三个坐标系,分别称为世界坐标系, 像坐标系和光心坐标系。研究世界坐标系向像坐标系的变换矩阵3 4 ( ) ij M a ´ = ,推 导出圆在像坐标系中的像为椭圆。利用灰度检测可以得到像中各椭圆圆周上各点 的坐标,通过多元线性回归拟合出各椭圆方程;对单独一个圆进行研究时,在合 理的近似前提下,以圆心为世界坐标系的原点,可出该圆心所成像在像坐标系 中的坐标u = a14 , v = a24。最后我们得5个圆心所成像在光心坐标系中的坐标分 别为(单位:mm):(-50.00,51.32,-417.20)、(-23.54,49.47,-417.20)、(33.86, 45.24,-417.20)、(-60.05,-31.22,-417.20)、(18.52,-31.48,-417.20)。在公 切线模型中,通过简单几何证明,得出在小孔成像时,公切线交点的像就是公切 线像的交点,联系题目中所给标靶的特殊性(所有圆全等),得出像平面中公切 线交点连线的交点就是标靶中对应圆心的像,并设计了一种算法得到5个圆心所 成像在光心坐标系中的坐标分别为(单位:mm):(-49.92,51.36,-417.20)、 (-23.47,49.34,-417.20)、(33.88,45.05,-417.20)、(-60.04,-31.29,-417.20)、 (18.58,-31.56,-417.20)。 在问题三中,我们用计算机模拟的方法,统计和分析了我们模型的在不同的 情况下所得到的结果与理论值之间的误差,并着重研究了相机与标靶的距离和像 平面与圆平面之间的偏角对结果的影响。结果表明在一定的前提下,当相机与标 靶的距离大于200 毫米,-0.5 £a £ 0.5以及-1£ b £ 0.5(单位为弧度)时,我们 的结果与理论值相差不到一个像素,有着较好的稳定性和精度。 问题四中,通过每个相机旋转变换矩阵R和平移向量T,可以得到两相机的 变换关系: 1 1 1 2 1 2 2 1 R = R R -、T = R R - T +T ,即相对位置关系,并理论推导了从两相 机中像在光心坐标系中的参数得到物在世界坐标中的参数,实现双目定位。另外 在相机的光心和像屏中心的连线垂直于象平面基础上,我们还给出另外一种合理 模型,通过矢量的方法出物相对于光心坐标系的精确位置,从而可以得到两相 机的相对位置。
27 计算机辅助设计 1.概述 计算机辅助设计 CAD – Computer-aided design 广义的CAD是指计算机对工程全过程的辅助 计算机辅助绘图 Computer-aided drawing是CAD的主要内容 AutoDesk公司与AutoCAD软件 微机平台上最普及的一个绘图软件包 2. 基本绘图命令 基本绘图命令 line 直线, circle 画圆, rectang 矩形, polygen 正多边形, pline 多义线, arc 弧, ellipse 椭圆, spline 样条曲线, hatch 图案填充 其他命令 block 建块, insert 插入块 text 文本, mtext 多行文本 2. 基本绘图命令示例 线 line a. 直接指点 pick, pick b. 绝对坐标 100,200 c. 相对坐标 @100,0 (100,200,0) (200,200,0) 2. 基本绘图命令示例 圆 circle a. 圆心半径定圆 center, radius b. 三点定圆 3p c. 切线半径定圆 t t r 2. 基本绘图命令示例 多义线、复合线 pline a. 线宽 width b. 弧 arc c. 闭合 close 3. 基本编辑命令 基本编辑命令 erase 删除, copy 复制, mirror 镜像, offset 等距线, array 阵列, move 移动 rotate 旋转, scale 比例缩放, stretch 拉伸, trim 剪切, extend 延伸 break 打断, chamfer 切角, fillet 导角 其他命令 explode 块炸开 4. 辅助命令 (一) 特殊点的捕捉 end 端点, int 交点, tan 切点, per 垂足 cen 圆心, mid 中点, nea 最近点 选择集的选取 w - window 窗口方式, c - crossing 交叉方式, r - remove 去除选择, (pick 鼠标左键) 点选 4. 辅助命令 (二) 光标定位与移动 grid 网格开关, snap 在网格上移动开关 ortho 正交开关 显示控制 zoom 放大镜工具 pan 手形工具 5. 平面图形设计示例 三极管 triode n. [电子] 三极真空管, 三极管 [缩写] T或TRI 可能使用的命令: circle 画圆 line 直线 pline 多义线, 复合线 mirror 镜像 5. 平面图形设计示例 电话座机 Telephone set 可能使用的命令: rectang 矩形 array 阵列 fillet 导角 pedit 多义线编辑 6. 三维图形设计概述 基本坐标系 ucs 用户坐标系 world 世界坐标系 基本显示控制 vports 视图 vpoint 视角 7. 三维图形设计示例 写字台 Desk 可能使用的命令: vports 视图 vpoint 视角 ucs 用户坐标系 rectang 矩形 properties 属性 copy 复制 7. 三维图形设计示例 螺旋楼梯 Stairs 可能使用的命令: polygon 多边形 line 直线(相对坐标) 3dface 三维面 block 块 array 阵列 properties 属性 7. 三维图形设计示例 悉尼歌剧院 Sydney Opera House 可能使用的命令: ucs 用户坐标系 arc 弧线 surftab1 网格控制1 surftab2 网格控制2 edgesurf 边界曲面 7. 三维图形设计示例 奖杯 goldcup 可能使用的命令: line 直线 pline 复合线 revsurf 回转面 extrude 挤出体 vpoint 观察视角 7. 三维图形设计示例 烟灰缸 ashtray 可能使用的命令: box 箱体 extrude 挤出体 cylinder 圆柱体 subtract 实体相减 8. 三维图形设计方法总结 直接三维面设计 例子:螺旋楼梯 (3dface)、悉尼曲面 (edgesurf) 标准三维面 (3d) 例子:球面 (sphere)、穹顶 (dome) 等 回转面 例子:奖杯 (revsurf) 一、三维面的创建 注意:由面构成体时,所有的面应是围合的、封闭的。 8. 三维图形设计方法总结 二维图形增加厚度与标高 例子:写字台 (properties) 标准三维图体 例子:球体 (sphere) 、圆锥体 (cone) 等 挤出体 例子:奖杯把手 (extrude) 二、三维图体的创建 8. 三维图形设计方法总结 实体相加 Union 两者的全部 实体相减 Subtract 前者被后者挖去的部分 实体相交 Intersec

64,637

社区成员

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

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