我有一个列出了下面给出的数字的所有点(List <Vector2(x, y)>
)。
我想将构成弧线的微小线段(灰色部分)转换为弧形,因此生成的图形只有弧线。
要绘制弧线,我需要起点和终点。什么是找到它们的好方法?
谢谢!
答案 0 :(得分:0)
如果,如图所示,直线比弧线上的细小段要长得多,只需检测弧的起点和终点,然后选择一个中间点。你将从这三个点的外接圆中获得弧,并用一点三角法。
在更复杂的情况下(不同半径的弧形混合),您可以考虑构建切线方向的曲线图作为曲线横坐标的函数。 (估算两个附近点的角度。)
在这样的图中,直线表示为水平线,圆弧表示为斜线。您可以使用Douglas-Peucker算法分解绘图。
答案 1 :(得分:0)
我这样做:
获取/检测3分$_SERVER['REQUEST_URI']
p0(x0,y0),p1(x1,y1),p2(x2,y2)
和结束p0
点以及中间p2
附近的任何顶点开始。 从创建的2个线段中点投射2条垂直线
图中的是那些红线。所以2D中的线条是:
p1
计算交叉点
所以只需解决线性系统:
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
。