首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪一个是最好的安卓线路SMoothing算法

哪一个是最好的安卓线路SMoothing算法
EN

Stack Overflow用户
提问于 2011-10-07 15:55:37
回答 1查看 1K关注 0票数 2

我想画一条更流畅的线,通过接触到点来画。这条线是一幅图画,但有角。我使用四元函数来绘制曲线,但当点彼此接近时,曲线有时会有角。如何才能找出此问题的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-08 02:42:13

我之前故意没有回答这个问题,因为你正在使用Android API和Quad function,我想有一种方法可以增加no。它正在绘制的是二次Bezier曲线中的点。我用谷歌搜索了一下,自己什么也没找到,但我在等着有人用Android API发布一个小把戏。

看来,平滑度将不得不手动实现绘制一个更高分辨率的贝塞尔曲线使用代码: Quad函数是绘制的Quadratic Bezier Curve,Quad是一个很好的链接算法绘制贝塞尔曲线,所有你要做的是增加no。二次Bezier曲线的公式为:

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

‘你必须使t更小,以使循环迭代更多,这样就会有更多的点,你就可以画出更平滑的曲线。

下面是有趣的代码(我稍微修改了一下,使其更易于解释):

代码语言:javascript
复制
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) (将该值除以较大的no。在您选择的段中,i

使用这个解决方案作为最后的选择,如果你找到了使用Android API的方法,请在这里发布,如果其他人有方法,请发布,我正在等待答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7684481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档