如何在移动时在iOS绘图应用程序中平滑一组点? 我试过UIBezierpaths,但我得到的是交错的锯齿端,当我只是移动点1,2,3,4 – 2,3,4,5。 我听说了样条曲线和所有其他types。 我对iPhone编程颇为陌生,不明白如何在我的石英绘图应用程序中进行编程。 一个可靠的例子将不胜感激,我已经花了几个星期运行在圈子里,我永远也找不到任何iOS代码的任务。 大多数post只是链接到一个java模拟或维基百科关于曲线拟合的页面,这对我什么都不做。 另外我不想切换到OpenGL ES。 我希望有人能最终提供代码来回答这个循环的问题。 这是我在UIBezierPath的交叉点的代码/// 更新了下面的答案 #define VALUE(_INDEX_) [NSValue valueWithCGPoint:points[_INDEX_]] #define POINT(_INDEX_) [(NSValue *)[points objectAtIndex:_INDEX_] CGPointValue] – (UIBezierPath*)smoothedPathWithGranularity:(NSInteger)granularity { NSMutableArray *points = [(NSMutableArray*)[self pointsOrdered] mutableCopy]; if (points.count < 4) return [self bezierPath]; // Add control points to make the math make sense [points insertObject:[points objectAtIndex:0] atIndex:0]; [points addObject:[points […]
如何animation像绘制的vectorpath,逐步? 换句话说,逐个像素缓慢地显示path。 我正在使用Raphaël.js , 但是如果你的答案不是库特定的,比如说可能有一些用于做这种事情的一般编程模式(我对vectoranimation相当陌生),这是值得欢迎的! 使用直线path很容易,就像在该页面上的示例一样简单:: path("M114 253").animate({path: "M114 253 L 234 253"}); 但是尝试改变那个页面上的代码,这样说: path("M114 26").animate({path: "M114 26 C 24 23 234 253 234 253"}); 你会明白我的意思 path肯定是从初始状态(点“M114 26”)到结束状态(从点“M114 26”开始的曲线“C 24 23 234 253 234 253”)animation的,但不是以问题指定的方式,而不是它正在绘制。 我不明白animateAlong如何做到这一点。 它可以沿着一条pathanimation一个物体,但是如何让这条path在物体沿着它被animation的时候逐渐显示出来呢? 解决scheme? (通过陨石的答案 ) 似乎目前最好的方法是通过使用原始SVG的“虚假”破折号。 有关解释,请参阅本演示或本文档 ,第4页。 如何产生渐进式绘画? 我们必须使用stroke-dasharray和stroke-dashoffset并且知道曲线的长度。 此代码在屏幕上为圆,椭圆,折线,多边形或path绘制任何内容: <[element] style="stroke-dasharray:[curve_length],[curve_length]; stroke-dashoffset:[curve_length]"/> 如果在animation元素stroke-dashoffset减less到0,我们得到曲线的渐进绘制。 <circle cx="200" cy="200" r="115" style="fill:none; […]
对于绘图应用程序,我将鼠标移动坐标保存到一个数组,然后用lineTo绘制它们。 结果线不平滑。 我怎样才能在所有聚集的点之间产生一条曲线? 我已经search了,但我只find了3个绘制线的函数:对于2个采样点,只需使用lineTo。 对于3个采样点quadraticCurveTo,对于4个采样点,bezierCurveTo。 (我试图在数组中每4个点绘制一个bezierCurveTo,但是这会导致每4个采样点扭曲,而不是连续的平滑曲线。) 如何编写一个函数来绘制5个采样点以上的平滑曲线?