明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6834|回复: 18

[求助]LISP能求出双椭圆公切线端点吗?

  [复制链接]
发表于 2010-8-23 17:27:00 | 显示全部楼层 |阅读模式

LISP能求出双椭圆公切线端点吗

好象在双圆中可计算出公切线端点位置来,可椭圆就无法算了,找了许多椭圆切线公式来,可都套用不上啊。

请教明经上的高手朋友,不知道用数学公式还是用LISP函数,能不能求出双椭圆公切线的端点。

谢谢高手的指点。

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1金钱 +20 收起 理由
zark + 20 学习了

查看全部评分

发表于 2010-8-24 07:33:00 | 显示全部楼层

椭圆的公切线,如果两个椭圆共轴线,是有几何解的,我记得好想在计算几何板块中讨论过,你不防去搜搜,如果不共轴,是要解一个四次方程的。

参考以下的帖子,但是他们没完全解决。

http://bbs.pep.com.cn/thread-442688-1-3.html

http://bbs.cnool.net/topic_show.jsp?id=8370006&oldpage=3&thesisid=494&flag=topic1

发表于 2010-8-24 07:54:00 | 显示全部楼层

不过楼主不要求太精确的话,可以用我的程序求两个椭圆的凸包,然后就能得到两条外公切线了

提供一个思路:

两个椭圆的通过不等比例缩放,总能把一个椭圆变换成圆,

然后,对其中一个用二分法搜索椭圆上的点,从这点出发引出椭圆的切线,如果另个椭圆(已经变换成圆)的圆心到这条切线的距离为半径的话,就说明相切了。

因此可以编程就得比较精确的解

 

 楼主| 发表于 2010-8-24 09:28:00 | 显示全部楼层

如果是手工画的话,那是可以完成的。

 

朋友介绍的我认真看了,所发内容图片都不符合我的想法,是两个椭圆同轴,这不是我想要的情况,我想要任意偏移的。

 

而且是要用程序找到切线两端点位置的。可能这样的要求有点高了吧。

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-8-29 08:56:00 | 显示全部楼层
这些天过去了,[em209]一直没想出好办法,一闷啊。[em104]
发表于 2010-8-29 19:11:00 | 显示全部楼层

在cad这样画图,用XL画椭圆的公切线。

命令: xl XLINE 指定点或 [水平(H)/垂直(V)/角度(A)/二等分(B)/偏移(O)]: tan 到   <---第一个椭圆
指定通过点: tan 到          <---第二个椭圆
指定通过点:

 

这样可以求出椭圆的公切线,这个方法也适应其他的曲线,譬如spline.

 

如果楼主真的一定要完全智能话的,只能这样:

(为了计算简单起见,设置第一个椭圆的的中心为原点,长轴为X轴)

 

对第二个椭圆,设置参数x 为变量,这个变量的范围是0~2*pi,

在这个范围内,用(vlax-curve-getfirstderiv  obj x )得到一个矢量(x2 y2 z2) (y2 /x2 其实就是斜率 )

那么就得到了经过这点的切线方程,

 

对与第一个椭圆来说,椭圆的切线方程为  x1*x/a^2 + y1*y /b^2 =1;

因此可得到联立方程   方程一: (x1 /a^2 ) / x2 = +( y1 /b^2) y2; (或者) (x1 /a^2 ) / x2 = -( y1 /b^2) y2;

                            方程二:    x1^2/a^2+ y1^2/b^2 = 0;

由此得到x1,y1的解,那么 , 两个平行线的经过的点知道了,它们之间的距离就可以得到

不妨考虑距离也有正负(依据在  x2 y2的切线来判断)

所以对于变量x 来说距离就有不同形成 函数关系那么就可以利用二分法来求解了

 

 

 

发表于 2010-8-31 08:25:00 | 显示全部楼层
本帖最后由 作者 于 2010-9-2 8:32:44 编辑

 

 

楼主不防测试一下上面的那个程序。

对大部分椭圆有效。

另外,我想模拟 XL的画公切线的方法,但是没成功,不知道问题出在哪儿。可能XL的方式只能CAD交互?不能用编程来实现吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-8-31 16:39:00 | 显示全部楼层

highflybird

 

真正的明经大侠,你的每一次发言,都是智慧的结晶。

发表于 2010-9-1 00:39:00 | 显示全部楼层

贴一个更简单的,可能这个更容易实现

 

对于一般的曲线的公切线的求法,估计也可以按照如下的求法.

思路如下:以曲线的参数x为变量,求出此点的firstderiv,然后根据这点画一条线段,跟另一条曲线相交。如果交点距离>0,则说明与曲线相交,求出两个交点的距离y,如果没有交点,则设距离为负数y<0,这样得到了一个函数关系y = f(x),用二分法解这个方程即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-9-1 08:50:00 | 显示全部楼层

要是第一个也能竖着放,那感情真的是太酷了。

 

highflybird

 

数学大师+CAD大师+LISP大师的化身

 

明经上的

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-27 11:28 , Processed in 0.297707 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表