当前位置:编程学习 > C#/ASP.NET >>

如何根据鼠标拖动轨迹得到贝塞尔曲线

当我用鼠标在屏幕拖动来画线时,我是通过鼠标move事件来处理的,当拖动速度较快时,相邻两次move事件中得到的点距离就相对来说比较长,所以画出来的曲线不光滑,用附件里的画图软件可以看出,
我有个大概的思路,通过每3点得到2次曲线,在二次曲线中取部分点来补充来使得曲线相对光滑,谁有这方面的算法帮帮忙 --------------------编程问答-------------------- 关注.. --------------------编程问答-------------------- 图呢? --------------------编程问答-------------------- 关注

。。。 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 自己实现?应该能找到C的算法哒,OPENGL里有,已经开源了 --------------------编程问答-------------------- 要什么图?
我的意思是通过操作鼠标移动来描绘出光滑曲线,不用图啊 --------------------编程问答-------------------- 什么叫贝赛尔曲线呀.BAIDU下吧. --------------------编程问答-------------------- 找数值分析的书看吧。。上面有些地方有算法的。
其实如果只是要曲线光滑,三点的话搞个二次插值就好了。。。
要再光滑就用高次样条曲线,不过算法比较的麻烦。. --------------------编程问答-------------------- 只是能使曲线光滑就可以了,哪位大哥有现成的算法,帮忙了,急啊 --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 闲得没事了。。
给个拉格朗日插值多项式:
[img=http://album.hi.csdn.net/app_uploads/cauhorse/20081006/123414036.p.JPG?d=20081006123429020][/img]
这个公式在每增加一个鼠标点时,需要重新构造并计算,
如果楼主需要在增加点后,不重新构造公式,而只进行新增点的运算,可以用牛顿插值法,
如果楼主需要让节点连线更为光滑,则相连点两侧的导数值也应相等,可以用埃尔米物插值法,
这类算法,楼主可参考任意一本《数值分析》,带计算机算法示例的更好。
祝好运。 --------------------编程问答-------------------- 忘了说了,这个画出来的不是贝塞尔曲线,三点的话(不共线的),出来的是个抛物线,四点是三次曲线,以此类推。。。
贝塞尔曲线也能画,就是得有个什么什么方程。。。CAD理论学得不好,忘了,反正挺复杂。。。楼主要感兴趣,可以到网上找找,
好像是法国达索飞机制造公司的人弄的。。。 --------------------编程问答-------------------- 先谢谢你,我下午试下看 --------------------编程问答-------------------- 帮忙顶一下,让了解的人来解答。
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,