n阶贝塞尔曲线绘制(C/C#)
原文: n阶贝塞尔曲线绘制(C/C#) 贝塞尔是很经典的东西,轮子应该有很多的。求n阶贝塞尔曲线用到了德卡斯特里奥算法(De Casteljau’s Algorithm) 需要拷贝代码请直接使用本文最后的例程,文章前面的大部分代码都不是最佳实践,是在编程过程中的摸索(走过的弯路),不过这些示范对笔者今后写算法启发很大。 要完成的功能是根据起点,终点和控制点,绘制n阶贝塞尔曲线 首先看n阶贝塞尔曲线的公式 公式中用了组合数,大数组合数计算也有算法: 简言之就是把 大数乘以大数除以大数 这个过程转为单纯的累加。 下面来说明一下这个组合数计算的优化过程: 100000 / 100 = 1000 500 + 500 = 1000 上面两个式子计算结果是相等的,但是如果编程实现, 第一个式子就必须使用至少一个Uint32 来存放100000; 但是第二个式子只需要Uint16类型就可以完成整个计算。 通过变换计算方式,可以通过计算机有限的数据大小计算尽可能大的结果。 贝塞尔曲线也是一种插值算法,根据起点和终点,通过中间的控制点,插值计算出整条路径 现代的x86,硬件计算浮点都是先转换为doubl...