递归案例:三角形迭代图形

#include<easyx.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
struct point
{
	float x;
	float y;
};
void drawtriangle(point pa, point pb, point pc)
{
	struct point pa1;//pb、pc边中点
	struct point pb1;//pa、pc边中点
	struct point pc1;//pb、pa边中点
	pa1.x = (pb.x + pc.x) / 2;
	pa1.y = (pb.y + pc.y) / 2;
	pc1.x=  (pa.x + pb.x) / 2;
	pc1.y = (pa.y + pb.y) / 2;
	pb1.x = (pa.x + pc.x) / 2;
	pb1.y = (pa.y + pc.y) / 2;
	if (fabs(pb1.x - pc1.x) < 5)//三角形边长小于某个值时停止迭代
	{
		return;
	}
	line(pc1.x, pc1.y, pb1.x, pb1.y);
	line(pc1.x, pc1.y, pa1.x, pa1.y);
	line(pb1.x, pb1.y, pa1.x, pa1.y);
	
	drawtriangle(pa, pb1, pc1);
	drawtriangle(pc1, pb, pa1);
	drawtriangle(pb1, pa1, pc);
	
}
int main()
{
	initgraph(800, 640);
	struct point pa;
	struct point pb;
	struct point pc;
	pa.x = 400, pa.y = 10;
	pb.x = 10, pb.y = 600;
	pc.x = 750, pc.y = 600;
	setlinecolor(WHITE);
	line(pa.x, pa.y, pb.x, pb.y);
	line(pa.x, pa.y, pc.x, pc.y);
	line(pb.x, pb.y, pc.x, pc.y);
	drawtriangle(pa,pb,pc);
	_getch();
	closegraph();
	return 0;
}

运行结果图像如下

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值