小弟不才写了一个火焰的生成算法,打算今天晚上就调试。不过小弟也知道即使能生成火焰,也不能达到很逼真的效果。
听说网上有个很著名的火焰算法,以前在CSDN也见有人讨论过,不过当时小弟正在专心学习数据库方面的知识,没有能仔细领教。
如有付送代码的或者网址也可!小弟诚心感谢!
如有算法指教的在下也很感激。现将我的算法方案写出。欢迎指教!
首先设置火焰的附着物坐标位矩形区域.(简化了算法,假设火焰附着物的横向长度m_nWidth有100个象素)
用随机函数将m_nWidth随机划分为m_nCount个区域,每个区域的宽m_nLittleWidth也是随机的,但总和一定是m_nWidth,每个m_nLittleWidth最小值为10 pixel。
每个区域设置只有一个充分燃烧点,也就是焰缝出。该点会随机分配,但其分配的坐标区域这里假设是m_nLittle/5*4区域。
每个坐标区域被划分为20等份
然后从第一个区域的最坐点坐标开始,每次X坐标增加m_nLittle/20的长度,Y坐标用随即函数随即分配,但限制大小在1-MAX之间(假设MAX已经确定,这个根据具体火焰来算,应为目前只是算法分析),一直到达最大点后,然后X坐标开始增加,y坐标开始见小,限制在-MAX - -1之间,下个区域的开始位置,继承上一个区域的最后一个点坐标。而最后一个点的坐标就是附着物的最右上坐标。
最后用WINDOWS的调色对整个多边形进行从小向上添色,颜色方案可以假设为从黄到红,等等,
请赐教。谢谢!
产生火焰效果的控件源码
该控件可以产生火焰效果。
http://www.vckbase.com/code/downcode.asp?id=1628