dxf中凸度的计算

以前在做dxf文件解析的时候,对于凸度的处理采用了简单粗暴的方式。见我前面写的博客:https://blog.csdn.net/yishang44/article/details/80338533。简直是个繁琐的过程,而在实际的使用过程中,也碰到各种极端情况,代码的bug也暴露出来,比如,doule值的0值判断;极小值做分母造成误差等。简直是折磨的人欲仙欲死的。

后面在CAD中查找资料,碰到另一种凸度描述

我在CAD中画了个图,做了些小标识,如下:

根据凸度的描述,我们可以很简单的得出:凸度 W = 。根据圆中角度关系,圆弧的弧度为,且,(原因是圆心角是圆周角的2倍)。这个就是凸度的另外一种描述的了。

我们通过凸度计算的是圆弧的圆心和半径。

可以看到 这里做个变换 

通过三角函数已知                 ………………①

                               

就可以得到          ………………………………………………………②                       

然后,就来求解圆心。自然第一反应是不是通过圆的标准公式 带入和 r 求解。尝试之后太复杂了,实在不是个好办法。

这个时候就要转换下思路,这里就可以看出来,数学对于程序员的重要性了。

圆心可以通过线段上的点旋转90度实现。选择以的中点为旋转中心,(r-H)为半径的点B进行顺时针旋转来得到圆心O。

旋转变换公式,这个很多资料上都有写,这里就不推到了,直接上公式:

在本问题中θ= 90,公式可以简化成

为的坐标值,为B点坐标。求解B坐标可以用向量公式,其中

圆心为      ………………………………………………③

                 ………………………………………………④

                                                           ………………………………………………⑤

在CAD文档中明确说明了,W = 0的时候是直线。在计算过程中不会出现多次的判断问题了。把①⑤带入③和④中就可以直接得到圆弧的圆心了。计算简单方便。

顺便感概下,凸度的表示方法果然是神来之笔,赞美数学。
————————————————
版权声明:本文为CSDN博主「yishang44」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yishang44/article/details/102471175

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值