找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 2501|回复: 7
打印 上一主题 下一主题

弧線長度計算問題

[复制链接]

6

主题

220

帖子

3571

积分

五级会员(50)

Rank: 5

积分
3571
跳转到指定楼层
1#
发表于 2013-5-16 00:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您!

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

x
本帖最后由 ginooolu 于 2013-5-16 00:11 编辑

想請問各位先進如何計算弧線長度?
以下是在cadence看到的範例,但最近發現它似乎不能判斷弧線是否大於180度,因此超過180度時會計算錯誤。
這個公式我看不懂,是實測時發現的。想請問如何修改或用其他方法來計算弧線的長度?
節錄自http://www.cadence.com/tw/Resources/list1esc_length-1.pdf
;if radius is not nil, then it's an arc and need to calculate
           ;the length for the arc.
                  if(rad!=nil then
                     rad_sq=rad*rad
                     len_sq=len*len
                     cos_theta=(2*rad_sq-len_sq)/(2*rad_sq)
                     theta=acos(cos_theta)
                     len=theta*rad
                  );endif(rad!=nil  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 支持!支持! 反对!反对!

6

主题

220

帖子

3571

积分

五级会员(50)

Rank: 5

积分
3571
8#
 楼主| 发表于 2013-5-22 23:00 | 只看该作者
我明白了,謝謝版主不厭其煩的說明

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

7#
发表于 2013-5-22 20:47 | 只看该作者
ginooolu 发表于 2013-5-22 17:38
謝謝版主,上面的公式看懂了;因為圓形內的三角形是等腰三角形,所以b=c,以上程式就是帶入餘弦公式。
但對 ...

1.建议以圆弧中心为原点的极坐标系。
2.求等腰三角形两条边在极坐标中的弧度(取值范围为0-2PI),三角函数只能取和0-PI范围,需要根据直角坐标系中顶点X Y的正负值判断三四象限的情况,来由此获取实际弧度(例如:是否需要+PI),另外需要考虑点落在极轴上的情况。
3.得到两个弧度之后,再根据顺逆条件来进行减法运算获取夹角弧度,需要要考虑几种状况,例如:起点弧度如果小于终点弧度需要+2PI后再进行计算
4.得到弧度角后,弧长=弧度*圆周。
谁画出这天地 又画下我和你

6

主题

220

帖子

3571

积分

五级会员(50)

Rank: 5

积分
3571
6#
 楼主| 发表于 2013-5-22 17:38 | 只看该作者
本帖最后由 ginooolu 于 2013-5-22 17:41 编辑

謝謝版主,上面的公式看懂了;因為圓形內的三角形是等腰三角形,所以b=c,以上程式就是帶入餘弦公式。
但對如何判斷大於180度還是不了解。我陷入的思考方向是
以三點座標計算只能仿照一個三角型計算,所以算出來的弧線長一定小於180度
要判斷大於180度,必須配合startEnd座標,圓心座標再加上順逆時針,才能判斷
但startEnd與圓心具備怎麼樣的關係才能判斷>180度,似乎有許多種狀況,必須針對不同的狀況個別判斷。
目前對這樣的關係不知如何判斷,還是我的思考方向錯了?

以下是同樣的座標,因為startEnd與順逆時針的不同,就會有四種狀況的想法

本帖子中包含更多资源

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

x

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

5#
发表于 2013-5-20 10:10 | 只看该作者
本帖最后由 deargds 于 2013-5-20 10:28 编辑
ginooolu 发表于 2013-5-19 21:33
謝謝版主提供的資料,AxlDBGetLength函數可以直接解決在16.x的問題。
但用數學計算的方法在下還是看不太懂 ...

你原来发的是利用余弦公式来计算夹角,先把这个看明白




;if radius is not nil, then it's an arc and need to calculate
           ;the length for the arc.
                  if(rad!=nil then
                     rad_sq=rad*rad
                     len_sq=len*len
                     cos_theta=(2*rad_sq-len_sq)/(2*rad_sq)
                     theta=acos(cos_theta)
                     len=theta*rad
                  );endif(rad!=nil  

本帖子中包含更多资源

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

x
谁画出这天地 又画下我和你

6

主题

220

帖子

3571

积分

五级会员(50)

Rank: 5

积分
3571
4#
 楼主| 发表于 2013-5-19 21:33 | 只看该作者
謝謝版主提供的資料,AxlDBGetLength函數可以直接解決在16.x的問題。
但用數學計算的方法在下還是看不太懂,可否舉一例供參考?

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

3#
发表于 2013-5-17 17:35 | 只看该作者
ginooolu 发表于 2013-5-17 12:33
自己update一下
目前構思是取得start-end座標,中心座標,順時針或逆時針繞線後做判斷,應可判斷為>180或

在allegro16.x中可以直接使用AXL函数axlDBGetLength来进行计算,另外使用数学方式计算可以参考下面的思路:
1.建以圆弧中心为原点的极坐标系
2.利用反正切分别计算出起点与终点的弧度
,另外需要考虑一下起点与终点弧度> PI 时的取值.
3.根据圆弧顺逆条件计算弧度差,然后计算  圆弧长=弧度差*半径。
谁画出这天地 又画下我和你

6

主题

220

帖子

3571

积分

五级会员(50)

Rank: 5

积分
3571
2#
 楼主| 发表于 2013-5-17 12:33 | 只看该作者
自己update一下
目前構思是取得start-end座標,中心座標,順時針或逆時針繞線後做判斷,應可判斷為>180或<180度。
然後再用圓周減去原弧線長
但具體判斷公式還在構思,似乎會有多種狀況,望先進提供意見
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-26 07:39 , Processed in 0.062211 second(s), 35 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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