Arc 打断拆分成多个线段
仅提供中文版本
公司插件的梁齐斜板功能更新,设计师提出需求可以拆分弧梁,并能对齐到板顶。
本文只讨论拆分弧梁,椭圆再后续更新。
首先看以下弧形的创建api

API中提供了三种方法
第一种时指定起点与终点,最后选择顶点形成的弧形
第二种是指定面,半径,起点角度与终点角度
第三种则是弧形中心点,半径,起点角度,终点角度,x向量,y向量拆分弧形,意思就是如果遇到板边界需要拆分,需要将此弧形按照板边界划分成两个弧形,第一种办法肯定无法实现,后两种的化就需要了解什么是起点角度与终点角度,并如何计算
下面是我的理解,后面彻底完成后再继续补充,可能有些混乱,怕后面忘记(所有的弧形是逆时针旋转)
- 弧形内部有三个参数(xDir,yDir,normal),这三个参数代表横向向量,纵向向量,和法向量
- 下面是两个相反的值比较,可以发现法向量在俩面决定了整个弧形方向,此处可以使用右手法则理解


- 也就是说,此处如果按照常规布置,我们可以求startangle和endangle,公式如下所示:
1 | var dir0 = (arc.GetEndPoint(0) - arc.Center).Normalize(); |

- 从上图可以看出α代表的startAngle大于β的endAngle,整个角度大小是整相反,所以我们拆分的时候可以反方向拆分便可以获得相应的新弧线
1 | double endAngle = dir0.AngleOnPlaneTo(arc.XDirection, arc.Normal); |
1 | var fakeNewLine = Arc.Create(arc.Center, arc.Radius, startAngle, intersectAngle, arc.XDirection, |


All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.







