找回密码
 注册
关于网站域名变更的通知

弧線長度計算問題

查看数: 3693 | 评论数: 7 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-5-16 00:04

正文摘要:

本帖最后由 ginooolu 于 2013-5-16 00:11 编辑 想請問各位先進如何計算弧線長度? 以下是在cadence看到的範例,但最近發現它似乎不能判斷弧線是否大於180度,因此超過180度時會計算錯誤。 這個公式我看不懂,是 ...

回复

ginooolu 发表于 2013-5-22 23:00
我明白了,謝謝版主不厭其煩的說明
deargds 发表于 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.得到弧度角后,弧长=弧度*圆周。
deargds 发表于 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  
ginooolu 发表于 2013-5-19 21:33
謝謝版主提供的資料,AxlDBGetLength函數可以直接解決在16.x的問題。
但用數學計算的方法在下還是看不太懂,可否舉一例供參考?
deargds 发表于 2013-5-17 17:35
ginooolu 发表于 2013-5-17 12:33
自己update一下
目前構思是取得start-end座標,中心座標,順時針或逆時針繞線後做判斷,應可判斷為>180或

在allegro16.x中可以直接使用AXL函数axlDBGetLength来进行计算,另外使用数学方式计算可以参考下面的思路:
1.建以圆弧中心为原点的极坐标系
2.利用反正切分别计算出起点与终点的弧度
,另外需要考虑一下起点与终点弧度> PI 时的取值.
3.根据圆弧顺逆条件计算弧度差,然后计算  圆弧长=弧度差*半径。
ginooolu 发表于 2013-5-17 12:33
自己update一下
目前構思是取得start-end座標,中心座標,順時針或逆時針繞線後做判斷,應可判斷為>180或<180度。
然後再用圓周減去原弧線長
但具體判斷公式還在構思,似乎會有多種狀況,望先進提供意見
关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-22 06:19 , Processed in 0.171875 second(s), 29 queries , Gzip On.

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

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

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