递归的应用 -- 最简单分形图形实现 下载本文源代码 ds = (float)sqrt(dx * dx + dy * dy);
if(ds <= m_limit)
{
pdc->MoveTo((int)p1.m_x, (int)p1.m_y);
pdc->LineTo((int)p2.m_x, (int)p2.m_y);
return;
}
其中的极限值m_limit通过成员函数SetLimit设定。
如果ds大于极限值,进行以下工作。 计算点1、点2和点3的坐标。关于点的坐标的计算,这里不进行过多的讲解,读者对照程序代码去理解吧。 这三个点的坐标得到以后,就可以组成四条直线:p1和1,1和3,3和2,2和p2,分别以这四条直线的起点、终点坐标为参数代入函数Draw中,进行递归调用。 Draw(pdc, p1, tempp1);
Draw(pdc, tempp1, tempp3);
Draw(pdc, tempp3, tempp2);
Draw(pdc, tempp2, p2);
一切准备好以后,就可以到程序的主体里去获取我们想要得到的结果了。
KSQXClass myksqx;
KSQXPoint p1, p2;
p1.m_x = 100;
p1.m_y = 300;
p2.m_x = 400;
p2.m_y = 300;
myksqx.SetLimit(1);
CDC* pdc;
pdc = GetDC();
myksqx.Draw(pdc, p1, p2);
程序运行结果如本文图一所示。关于代码和文章中的问题大家可以和作者联系: 通信地址:吉林省长春市西民主大街6号地球探测科学与技术学院2001级硕士研究生 胡卓玮 电子信箱:QiGi@vip.sina.com 欢迎访问作者的主页:forevergis.6to23.com |
背景:
阅读新闻
递归的应用 -- 最简单分形图形实现
| [日期:2005-12-29] | 作者:吉林大学 胡卓玮 | [字体:大 中 小] |
阅读: 次
【 打印 】
【 打印 】
相关新闻
相关关键词:
全站导航
gmail.com