作者etrexetrex (moonet)
看板Flash
标题[闲聊] 手绘二次贝兹曲线 - 根据滑鼠路径
时间Thu Aug 23 11:42:41 2012
问题 :
如何根据使用者的滑鼠轨迹
得到一个二次贝兹曲线
flash graphics 的 curveTo 画出的线就是二次贝兹曲线
这条线需要三个参数 p0, p1, p2
graphics.moveTo(p0.x, p0.y);
graphics.curveTo(p1.x, p1.y, p2.x, p2.y);
所以我们要解决的问题是给定一个滑鼠轨迹座标阵列 x0,x1,...,xk
求出 p0, p1, p2 的值
解法 :
我发现这篇论文写得很好
http://figment.cse.usf.edu/~sfefilat/data/papers/TuBCT10.16.pdf
他简单假设
p0 = x0
p2 = xk
接下来只要解 p1, 用一个逐步逼近最佳解的方式, 先假设p1在某个位置
算出目前误差值 e
应该偏移的方向 Δp
更新 p1 = p1 + Δp
重作上面三行直到 e 的值不再变小为止
作法很简单
但这里还有很多细节没讲到
有兴趣的人可以慢慢看论文
利用这篇论文可以实作出适合用在 flash 上的手绘曲线程式
--
blog:
http://etrex.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.137.198.18
※ 编辑: etrexetrex 来自: 140.137.198.18 (08/23 11:56)