将细线段转换为Arc

时间:2017-12-17 18:04:50

标签: graphics polygon clip

我有一个列出了下面给出的数字的所有点(List <Vector2(x, y)>)。

我想将构成弧线的微小线段(灰色部分)转换为弧形,因此生成的图形只有弧线。

要绘制弧线,我需要起点和终点。什么是找到它们的好方法?

谢谢!

enter image description here

2 个答案:

答案 0 :(得分:0)

如果,如图所示,直线比弧线上的细小段要长得多,只需检测弧的起点和终点,然后选择一个中间点。你将从这三个点的外接圆中获得弧,并用一点三角法。

在更复杂的情况下(不同半径的弧形混合),您可以考虑构建切线方向的曲线图作为曲线横坐标的函数。 (估算两个附近点的角度。)

在这样的图中,直线表示为水平线,圆弧表示为斜线。您可以使用Douglas-Peucker算法分解绘图。

答案 1 :(得分:0)

我这样做:

curve radius

  1. 获取/检测3分$_SERVER['REQUEST_URI']

    正如Yves Daoust所暗示的那样。如果您的弧是矢量形式,那么只需从整个事物的开始p0(x0,y0),p1(x1,y1),p2(x2,y2)和结束p0点以及中间p2附近的任何顶点开始。

  2. 从创建的2个线段中点投射2条垂直线

    图中的

    是那些红线。所以2D中的线条是:

    p1
  3. 计算交叉点

    所以只需解决线性系统:

    pa(t1) = (p0+p1)/2 + t1*(y1-y0,x0-x1)
    pb(t2) = (p1+p2)/2 + t2*(y2-y1,x1-x2)
    

    结果点(p0+p1)/2 + t1*(y1-y0,x0-x1) = (p1+p2)/2 + t2*(y2-y1,x1-x2) 是弧中心。半径为c