明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: HRQ28

[求助]LISP能求出椭圆弧长吗?

  [复制链接]
发表于 2010-8-6 15:59:00 | 显示全部楼层

楼主一直没说明的是:

1、究竟能不能根据参数创建一个椭圆,然后得到坐标点?

如果能,这不是什么世界难题,在cad中用vlax-curve-getpointatdist就完全能办到。

如果不能,那么可以用数值积分解决问题。我的程序中那个求椭圆的周长就能达到小数点后8位的精度,这样的精度应该足够了。至于弧长,可能需要改进一下,但也不是什么问题。

2、要怎样的精度?

CAD中的椭圆是高精度椭圆,不是拟合的。所以应该能满足你的需求。

 楼主| 发表于 2010-8-6 16:52:00 | 显示全部楼层

感谢版主的指点,我想是写成程序自动计算或出图。

 

不知版主说的用LISP如何自动求得椭圆周长上的等分坐标点?而不是手动去图中查询。

 

如只是用一次当然可以现画图现标坐标现量尺寸了,但这却不能代表程序的先进性啊。

工作中的精度,版主那样到小数点后几位数都可以。

不知版主能不能发明一个计算椭圆弧长的公式,因为这在国内虽有程序发表,但相对精确的计算公式的确是没人发表过的。

 

 

发表于 2010-8-6 17:12:00 | 显示全部楼层

椭圆弧长的精确解不是能用有限的多项式来表达的。这个已经是定论。

但是它可以由级数表达。

作者可能是看了下面的地址吧:

http://luoshenmingde.blog.163.com/blog/static/108520566201032481056302/

 

不要被他误导了。他也绝对是用级数来表达的。如果把椭圆的弧长的函数用级数展开几项,就能得到结果的。

LISP的确是可以自动求坐标的,不用你手动操作。我刚才已经说了思路。

你可以看看vlax-curve-getpointatdist函数的说明。

维基的关于椭圆的说明:

http://en.wikipedia.org/wiki/Ellipse

 

r = \tfrac{432(a^{2}-b^{2})^{2}(a-b)^{6}ba}{Q^3}
Q = b4 + 60ab3 + 134a2b2 + 60a3b + a4
v1 = ba(15b4 + 68ab3 + 90a2b2 + 68a3b + 15a4)
v2 = ? a6 ? b6 + 126ab5 + 1041a2b4 + 1764a3b3 + 1041a4b2 + 126a5b
发表于 2010-8-6 17:53:00 | 显示全部楼层
没搞懂楼主到底要干什么,求坐标?或者根据两坐标求距离?都很容易呀。
 楼主| 发表于 2010-8-6 20:07:00 | 显示全部楼层
oyxx1023发表于2010-8-6 17:53:00没搞懂楼主到底要干什么,求坐标?或者根据两坐标求距离?都很容易呀。

在椭圆上已知任意两点的坐标,求椭圆弧长,很容易吗?请拿出个例子来让大家开开眼啊。

 

版主推荐看的贴子已看,发贴者说是发明了可以精确计算椭圆弧长的公式,而且是一种简单的公式。

因为这个公式有巨大的经济和军事利益,为了祖国的安全,不能让敌国知道这个公式,避免把我国卫星打下来。

所以发贴人要将这个公式垄断在自己手中。并声明20年内没人能发明这样的计算公式。

多么爱国的精神啊!

好象美国的卫星导弹都比中国先进的太多,是不是人家没有这个椭圆弧长计算公式?或许就没有什么先进方法论吗?是不是有点掩耳盗玲。

 

我不服气,但自己的确是算不出来,而且在网上无真没这样的公式。

明经上人材济济,难道也会相信这样的大话吗?

发表于 2010-8-6 22:42:00 | 显示全部楼层

我上传两个程序,一个命令是test,另一个是ttt

test是根据两点求弧长,ttt是按照你的要求写的求展开点的坐标。不论哪个,都能满足你的要求。

我开始写的那个程序有错误,所以你用不了。

由此可见,不管是数学法则,还是CAD法,都可以达到你说的精度要求和智能化。

我发的那个链接,楼主不妨去比较一下,绝对不会比他的精度差。所以楼主如果一定要找到公式,那就无能为力了。谁又知道他是不是积分算出来的呢?

 

就算是脱离CAD,像你说的程序,只要把我的lisp代码改一下就可以了。

 

 

 

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-8-7 09:12:00 | 显示全部楼层

感谢版主热心负责的指点,程序要求输入点时

(setq x (getdist "\n起点X1= ")),不知怎么要求在屏幕上点两次?好象点坐标只有一个点就够了啊。

第一个命令TEST还没研究到试验进行。

第二个命令却是看出些道道来了,其等分坐标在小尺寸上真是很准的。此程序我还想改进一下,例如N等分后,直接在LISP中得到各点的坐标值

例如12等分后得:N1=**。。。 N2=**。。。    ,,,,,N12=**,这样就可直接在LISP中调用运算了。

感谢版主的程序,让我看到还是有希望的。能在明经上学到如此精华的知识,为国内有明经而庆幸。版主的指点内容,都是明经上的宝贵财富。

我以前在网上找到一个计算周长的公式,在超大尺寸椭圆上,我感觉比版主的公式要精确一此,请版主试验指教。

本帖子中包含更多资源

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

x
发表于 2010-8-7 09:48:00 | 显示全部楼层
本帖最后由 作者 于 2010-8-7 11:36:14 编辑

HRQ28发表于2010-8-7 9:12:00感谢版主热心负责的指点,程序要求输入点时 (setq x (getdist \"\n起点X1= \")),不知怎么要求在屏幕上点两次?好象点坐标只有一个点就够了啊。 第一个命令TEST还没研究到试验进行。 第二个

第一个是根据两点来算椭圆的弧长的啊。就像1楼你所展示的那个程序那样。当然要两点才能确定弧段。

关于你说的超大尺寸的椭圆的精度问题:你怎么感觉就比程序要精确呢?你用什么做比较的?

因为你怀疑精度问题,实际上是你在怀疑CAD的精度问题。 你应该怀疑网上的那个公式:网上的那个公式是近似的,它的才是不精确的。因为正是近似公式,才使得超大尺寸的椭圆计算精度有问题。

autoCAD的精度是相当高的。别人说那autocad画整个地球,误差都不到几毫米。

关于椭圆的弧长或者周长的计算公式,下面的图片摘自请《椭圆函数及其应用》(高本庆,1991)

所以如果网上有人说找到了一个精确的公式(有限),那他是自欺欺人。所有的计算椭圆的有限公式都是近似公式,不会存在一个精确解的。

你上传的那个公式我看了,实际上是拉马努金II的改进型,我已经在程序里提及到了,他的这个公式的确有很高的精度,已经达到了1e-25

http://www.numericana.com/answer/ellipse.htm

但是我测试了一下,在CAD 中画一个长半径为10,000,000(即1亿)短半径为6487854的椭圆,与公式计算的周长比较:

52387391.8317393   ----autocad

52387391.8312022   ----近似公式计算

可见两者相差很少很少,如果CAD是以毫米画图的,那么这个误差已经到了纳米的距离,在实际工程中已经显得毫无意义了。

 (因为意味这上百公里,或者上千公里的路,误差范围在1纳米,这样的精度夫复何求?)

 

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-8-7 17:13:00 | 显示全部楼层

我一直相信并始终相信AutoCAD是最精确的。

版主的热心指点,高精尖的数学知识,精湛的编程能力,宽广的胸怀,都是我没齿难忘并铭记于心的学习榜样。

发表于 2010-8-8 17:30:00 | 显示全部楼层

“我一直相信并始终相信AutoCAD是最精确的。”

这句话还是不对,系统还有精度限制呢,cad总不能比系统更精确。

 

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

本版积分规则

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

GMT+8, 2024-10-2 08:22 , Processed in 0.178154 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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