⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sierpinski.cpp

📁 C++&datastructure书籍源码,以前外教提供现在与大家共享
💻 CPP
字号:
#include "canvas.h"
#include "utils.h"
#include <iostream>
#include <cmath>
using namespace std;

void TriangleFill(Canvas& c, const Point& p1, const Point& p2, const Point& p3)
{
    if ( fabs(p1.x - p2.x) > 20)
    {
	    Point mid12( (p1.x+p2.x)/2, (p1.y+p2.y)/2 );
	    Point mid13( (p1.x+p3.x)/2, (p1.y+p3.y)/2 );
	    Point mid23( (p2.x+p3.x)/2, (p2.y+p3.y)/2 );
	    
	    c.DrawTriangle(mid12,mid13,mid23);
	    
	    TriangleFill(c,p1, mid12, mid13);
	    TriangleFill(c,mid12, p2, mid23);
	    TriangleFill(c,mid13, mid23, p3);
    }
}

int main()
{
    const int WIDTH=460;
    const int SIZE=400;
    Canvas c(WIDTH,SIZE+10,20,20);
    
    Point top(WIDTH/2,0);
    Point lowerleft(WIDTH/2 - SIZE/sqrt(3),SIZE);
    Point lowerright(WIDTH/2 + SIZE/sqrt(3),SIZE);
    
    c.SetColor(BLACK);
    c.DrawTriangle(top,lowerleft,lowerright);
    c.SetColor(WHITE);
    
    TriangleFill(c,lowerleft,top,lowerright);
    WaitForReturn();
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -