背景
在gis领域一些gis二次开发平台已经提供绘图API,如arcengine,.net中GDI+,flex中的GDI+等等。在web中有vml和w3c规范的svg等绘图API。这些API都提供了常规绘图方法,如画点,线,多边形。常见的如直线,矩形,圆以及椭圆等等。那么如果这些API没有提供高级图行的绘制,我们该如何啦,比如我们要绘制一个箭头,这个箭头的健身是曲线的,那该如何啦?
原理
不管多么复杂的集合图像在计算机进行绘图,其本质上都由一个点集合组成,如果这个点集合石封闭的那么他就是一个多边形,如果不封闭那么他就是一条曲线。而直线又是曲线的基础,这点在数学里面将一条曲线进行微分法可以知道每个线段则是一条直线,而一条直线由2个端点组成,这样看来我们就很好理解复杂图像是如何组成的了。
实现
1 绘制一些列由点组成的曲线,我们可以直接有序的连接这些端点,则组成了一条这样的曲线,这就是不平滑的曲线。
2 对于上面的情况,是不能达到很好效果的,那么必须对不平滑的地方进行平滑处理。让其真正达到平滑效果,在数学里面有一种拟合曲线:贝塞尔曲线,如果知道贝塞尔曲线原理都知道 控制点愈多那么曲线平滑度也就越高,一般来说二次贝塞尔曲线已经可以满足我们的曲线平滑度要求。一下是二次贝塞尔曲线的参数表达式: