EDA365电子工程师网

标题: [已解决] 请问怎么获得一段圆弧的中点?? [打印本页]

作者: 361553894    时间: 2016-7-12 08:56
标题: [已解决] 请问怎么获得一段圆弧的中点??
本帖最后由 361553894 于 2016-7-12 15:50 编辑

我记得在pdf中看到过这个函数的
是圆弧的中点,不是弦的中点,也不是圆弧的圆心
自己算太麻烦了

作者: Jun_Sky    时间: 2016-7-12 14:37
axlPathSegGetArcCenter
但是其参数不是dbid格式,而是r_path
作者: 361553894    时间: 2016-7-12 14:44
Jun_Sky 发表于 2016-7-12 14:37
axlPathSegGetArcCenter
但是其参数不是dbid格式,而是r_path

你这是圆弧的圆心,不是中点
作者: Jun_Sky    时间: 2016-7-12 14:48
如果硬是要用这个函数的话,就可以先使用axlDB2Path函数来转换成path参数,再通过上述函数对其里面的各个path成员来获取中a心。比如:l 为某段path的DBid参数, foreach(a axlDB2Path(l)->_pathList println(axlPathSegGetArcCenter(a))) 输出包含中心点的arc中心坐标。
作者: Jun_Sky    时间: 2016-7-12 14:49
看错了。不好意思。
作者: 361553894    时间: 2016-7-12 15:28
Jun_Sky 发表于 2016-7-12 14:49
看错了。不好意思。

圆弧的圆心只要arc->xy就能获取到
中心可以用起点car(arc->startEnd)按照旋转方向旋转一半的角度就能获得,比较麻烦而已
官方应该有自带的获取圆弧中点的函数吧?

作者: Jun_Sky    时间: 2016-7-12 15:29
那你是指axlGeoArcCenterRadius函数吧!?
作者: 361553894    时间: 2016-7-12 15:42
Jun_Sky 发表于 2016-7-12 15:29
那你是指axlGeoArcCenterRadius函数吧!?


我已经写出来了
我说的圆弧中心就这么难理解吗?

作者: Jun_Sky    时间: 2016-7-12 15:52
下载不了附件。用啥函数?可以用axl_ol_ol2处理吗?
作者: 361553894    时间: 2016-7-12 15:56
Jun_Sky 发表于 2016-7-12 15:52
下载不了附件。用啥函数?可以用axl_ol_ol2处理吗?

中心可以用起点car(arc->startEnd)按照旋转方向旋转一半的角度就能获得
圆弧的圆心角可以根据圆心到起点(终点)的射线的夹角获得

作者: Jun_Sky    时间: 2016-7-12 16:08
361553894 发表于 2016-7-12 15:56
中心可以用起点car(arc->startEnd)按照旋转方向旋转一半的角度就能获得
圆弧的圆心角可以根据圆心到起点 ...

学习了。谢谢!

作者: 361553894    时间: 2016-7-12 16:27
Jun_Sky 发表于 2016-7-12 16:08
学习了。谢谢!

procedure( wlGetVectorAngle(start end)
let( (slope angle)
slope = axlLineSlope(list(start end))
if(slope then
  angle = atan(slope) * 180.0 / Pi
  when(car(end) < car(start)
   angle = angle + 180.0
  )
  when(angle < 0 angle = angle + 360.0)
else
  if(cadr(end) > cadr(start) then
   angle = 90.0
  else
   angle = 270.0
  )
)
angle
))

这是获取射线角度的函数,角度范围为0~360度

作者: GSO_library    时间: 2016-7-12 17:46
66666666




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2