我想画一条更流畅的线,通过接触到点来画。这条线是一幅图画,但有角。我使用四元函数来绘制曲线,但当点彼此接近时,曲线有时会有角。如何才能找出此问题的解决方案?
发布于 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更小,以使循环迭代更多,这样就会有更多的点,你就可以画出更平滑的曲线。
下面是有趣的代码(我稍微修改了一下,使其更易于解释):
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的方法,请在这里发布,如果其他人有方法,请发布,我正在等待答案。
https://stackoverflow.com/questions/7684481
复制相似问题