哪个是最好的Line SMoothing Algo for android

时间:2011-10-07 07:55:37

标签: java android line linegraph

我希望通过触摸点来绘制更平滑的线条。 这条线是一幅画,但有角。我使用四元函数绘制曲线,但当曲线彼此接近时,曲线有时会有角。如何找出解决这个问题的方法呢?

1 个答案:

答案 0 :(得分:1)

我之前故意没有回答这个问题,因为你正在使用Android API和Quad功能,我认为会有一种方法可以增加no。它绘制的二次贝塞尔曲线中的点数。我做了一个谷歌,但我自己没有找到任何东西,但我正等着有人用Android API发布一个技巧。

似乎必须通过使用代码绘制更高分辨率的贝塞尔曲线来手动实现平滑度: Quad函数绘制Quadratic Bezier Curvehere是绘制Bezier曲线的算法的一个很好的链接,你所要做的就是增加no。曲线中的点数: 二次贝塞尔曲线的公式为:

  

[x,y] =(1 - t)2P0 + 2(1 - t)tP1 + t2P2

`你必须缩小以使循环迭代更多,所以会有更多的点,你将能够画出更平滑的曲线。

以下是有趣的代码(我稍微改了一下,以便我更容易解释):

double t = 0;

Point prevPoint = CalculateBezierPoint(t, p0, p1, p2, p3);
for(int i = 0; i <= 100; i++)
{
  Point nextPoint = CalculateBezierPoint(t, p0, p1, p2, p3); //see this part from the link i have given

  //Draw line from previous point to next point.
  prevPoint = nextPoint;
  t = t + (1/100)    
}

要制作更平滑的曲线,增加for循环中的段数(1000等,尝试使用它),也要更改此行t = t + (1/100)(将值除以您选择的较大的段数,我

使用此解决方案作为最后一个选项,如果您找到使用Android API的方法,请在此处发布,如果其他人有办法,请发布,我是等待答案。