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

📄 picture.cpp

📁 奥运徽标完整代码 北京2008徽标 可运行!
💻 CPP
字号:
#include <iostream>
#include <exception>
#include "playpen.h"
#include "colournames.h"

void draw_square(fgw::playpen paper, double square_long, double square_wide, fgw::hue colour, int x = 0, int y = 0)
{
	paper.scale();
	paper.origin(x+256,y+256);
	for(double i = -square_long; i != square_long; ++i)
		for(double j = -square_wide; j != square_wide; ++j)
			if(i >= -square_long/2 && i <= square_long/2 && j >= -square_wide/2 && j <= square_wide/2)
				paper.plot(i,j,colour);		
}

void draw_circle(fgw::playpen paper, double r, double edge_wide, fgw::hue colour, int x = 0, int y = 0)
{
	paper.scale();
	paper.origin(x+256,y+256);
	for(double i = -r; i != r; ++i)
		for(double j = -r; j != r; ++j)
			if(i*i+j*j <= r*r && i*i+j*j >= (r-edge_wide)*(r-edge_wide))
				paper.plot(i,j,colour);
}
void draw_ellipse(fgw::playpen paper, double a, double b, double edge_wide, fgw::hue colour, int x = 0, int y = 0)
{
	paper.scale();
	paper.origin(x+256,y+256);
	for(double i = -a; i != a; ++i)
		for(double j = -b; j != b; ++j)
			if(b*b*i*i+a*a*j*j <= a*a*b*b && (b-edge_wide)*(b-edge_wide)*i*i+(a-edge_wide)*(a-edge_wide)*j*j >= (a-edge_wide)*(a-edge_wide)*(b-edge_wide)*(b-edge_wide))
				paper.plot(i,j,colour);
}

void draw_five_circle(fgw::playpen paper)
{
	paper.scale();
	paper.origin();

	draw_circle(paper,40,7,fgw::blue7  , -90,160);
	draw_circle(paper,40,7,fgw::yellow6, -45,200);
	draw_circle(paper,40,7,fgw::black  ,  0 ,160);
	draw_circle(paper,40,7,fgw::green4 ,  45,200);
	draw_circle(paper,40,7,fgw::red7   ,  90,160);

	for(double i = -39; i != 39; ++i)
		for(double j = 30; j != 39; ++j)
			if(i*i+j*j < 39*39 && i*i+j*j >= 33*33)
				paper.plot(i-45,j-200,fgw::yellow6);
			
	for(double i = 30; i != 39; ++i)
		for(double j = -39; j != 39; ++j)
			if(i*i+j*j < 39*39 && i*i+j*j >= 33*33)
				paper.plot(i-90,j-160,fgw::blue7);
			
	for(double i = -39; i != 39; ++i)
		for(double j = 30; j != 39; ++j)
			if(i*i+j*j < 39*39 && i*i+j*j >= 33*33)
				paper.plot(i+45,j-200,fgw::green4);
			
	for(double i = 30; i != 39; ++i)
		for(double j = -39; j != 39; ++j)
			if(i*i+j*j < 39*39 && i*i+j*j >= 33*33)
				paper.plot(i,j-160,fgw::black);
}

void draw_JING(fgw::playpen paper)
{
	paper.scale();
	paper.origin();

	draw_square (paper,150,180,fgw::red7,2,-80);
	
	for(double i = -75; i != 75; ++i)
		for(double j = -30; j != 0; ++j)
			if(30*30*i*i+75*75*j*j <= 30*30*75*75)
				paper.plot(i+2,j-10,fgw::red7);
			
	for(double i = -75; i != 75; ++i)
		for(double j = 0; j != 75; ++j)
			if(60*60*i*i+75*75*j*j <= 60*60*75*75)
				paper.plot(i+2,j+170,fgw::red7);

	draw_ellipse(paper,15,20,15,fgw::white,5,-200);
	draw_ellipse(paper,25,40,15,fgw::white,5,-120);
	
	draw_square (paper, 20,50,fgw::white,  0, -65);
	draw_square (paper, 20,40,fgw::white,-40, -60);
	draw_square (paper, 75,18,fgw::white,-10,-154);
	draw_square (paper, 25,25,fgw::white, 25,  27);
for(double i = -30; i != 30; ++i)
		for(double j = -30; j != 0; ++j)
			if(i*i+j*j < 30*30 && i*i+j*j >= 10*10)
				paper.plot(i-20,j+45,fgw::white);
			
	for(double i = -30; i != 30; ++i)
		for(double j = 0; j != 30; ++j)
			if(i*i+j*j < 30*30 && i*i+j*j >= 10*10)
				paper.plot(i-60,j+70,fgw::white);
			
	for(double i = 0; i != 60; ++i)
		for(double j = -30; j != 60; ++j)
			if(i*i+j*j < 60*60 && i*i+j*j >= 40*40)
				paper.plot(i,j+30,fgw::white);
			
	for(double i = -15; i != 0; ++i)
		for(double j = -15; j != 15; ++j)
			if(i*i+j*j < 15*15)
				paper.plot(i+20,j-25,fgw::white);		
	
    for(double i = -20; i != 20; ++i)
		for(double j = -20; j != 20; ++j)
			if(i-j >= -12 && i-j <= 12 && j >= -10 && j <= 10)
				paper.plot(i+33,j-5,fgw::white);
	
	for(double i = -15; i != 0; ++i)
		for(double j = -10; j != 15; ++j)
			if(i*i+j*j < 15*15)
				paper.plot(i+40,j-30,fgw::red7);
			
	for(double i = -256; i != 0; ++i)
		for(double j = -256; j != 256; ++j)
			if(i*i+j*j < 15*15)
				paper.plot(i-45,j+160,fgw::white);
			
	for(double i = -30; i != 30; ++i)
		for(double j = -256; j != 256; ++j)
			if(i-10*j >= -100 && i-10*j <= 100 && j >= -30 && j <= 30)
				paper.plot(i+55,j+157,fgw::white);
}
//画"Beijing_2008"的函数
void Beijing_2008(fgw::playpen paper)
{
	paper.scale();
	paper.origin();

	draw_ellipse(paper,30,5,5,fgw::black,-122,55);
	draw_ellipse(paper,5,25,5,fgw::black,-130,80);
	draw_ellipse(paper,25,5,5,fgw::black,-118,90);
	draw_ellipse(paper,12,4,4,fgw::black, -80,80);
	draw_ellipse(paper,4,12,4,fgw::black, -58,80);
	draw_ellipse(paper,4,12,4,fgw::black, -47,80);
	draw_ellipse(paper,4,12,4,fgw::black, -36,80);
	draw_ellipse(paper,4,12,4,fgw::black, -25,80);
	draw_ellipse(paper,4,10,4,fgw::black, -14,82);
	draw_ellipse(paper, 5,8,5,fgw::black, -58,82);
	draw_ellipse(paper, 5,8,5,fgw::black, -36,82);
	draw_ellipse(paper,11,4,4,fgw::black,   4,85);
	draw_ellipse(paper, 4,4,4,fgw::black,  12,71);
	draw_ellipse(paper,5,10,5,fgw::black,  12,85);
	draw_ellipse(paper, 8,5,5,fgw::black, -5,105);
	draw_ellipse(paper, 4,5,5,fgw::black,-60,102);
	
	draw_square(paper,7,7,fgw::white,-94,55);
	
	draw_circle(paper,4,4,fgw::black,-58,60);
	draw_circle(paper,4,4,fgw::black,-47,60);
	draw_circle(paper,4,4,fgw::black,-36,60);
for(double i = 0; i != 40; ++i)
		for(double j = -5; j != 14; ++j)
			if(14*14*i*i+40*40*j*j <= 14*14*40*40 && 14*14*i*i+40*40*j*j >= 9*9*40*40)
				paper.plot(i-130,j-85,fgw::black);
			
	for(double i = 0; i != 30; ++i)
		for(double j = 0; j != 30; ++j)
			if(i*i+j*j <= 30*30 && 1.3*i-j >= 0 && 0.7*i-j <= 0)
				paper.plot(i-125,j-75,fgw::black);

	for(double i = 0; i != 15; ++i)
		for(double j = -5; j != 5; ++j)
			if(i*i+j*j >= 5*5 && i <= 5 && j <= 15)
				paper.plot(i-103,j-55,fgw::white);

    for(double i = 0; i != 25; ++i)
		for(double j = 0; j != 15; ++j)
			if(15*15*i*i+25*25*j*j <= 15*15*25*25 && 15*15*i*i+25*25*j*j >= 12*12*21*21)
				paper.plot(i-90,j-83,fgw::black);

    for(double i = -25; i != 0; ++i)
		for(double j = -25; j != 0; ++j)
			if(i*i+j*j <= 25*25 && i+j <= -25)
				paper.plot(i-66,j-70,fgw::black);
			
	for(double i = -4; i != 0; ++i)
		for(double j = -4; j != 4; ++j)
			if(i*i+j*j <= 4*4)
				paper.plot(i-88,j-72,fgw::black);for(double i = -6; i != 6; ++i)
		for(double j = 0; j != 6; ++j)
			if(i*i+j*j <= 6*6)
				paper.plot(i-18,j-76,fgw::black);

	for(double i = -17; i != 5; ++i)
		for(double j = -1; j != 17; ++j)
			if(i*i+j*j <= 17*17 && i*i+j*j >= 10*10)
				paper.plot(i+8,j-85,fgw::black);
			
	for(double i = 2; i != 20; ++i)
		for(double j = -20; j != 0; ++j)
			if(i*i+j*j <= 20*20 && i*i+j*j >= 13*13)
				paper.plot(i-5,j-90,fgw::black);
			
	for(double i = 0; i != 23; ++i)
		for(double j = -23; j != 0; ++j)
			if(i*i+j*j <= 23*23 && i-j >= 23)
				paper.plot(i-6,j-87,fgw::black);
			
	for(double i = 2; i != 20; ++i)
		for(double j = -20; j != 0; ++j)
			if(i*i+j*j <= 20*20 && i*i+j*j >= 13*13)
				paper.plot(i-64,j-87,fgw::black);		
	
	for(double i = -15; i != 15; ++i)
		for(double j = 10; j != 27; ++j)
			if(27*27*i*i+15*15*j*j <= 27*27*15*15 )
				paper.plot(i+49,j-80,fgw::black);
for(double i = -9; i != 9; ++i)
		for(double j = 0; j != 20; ++j)
			if(20*20*i*i+9*9*j*j <= 20*20*9*9 )
				paper.plot(i+48,j-79,fgw::white);
			
	for(double i = -4; i != 0; ++i)
		for(double j = 0; j != 4; ++j)
			if(i-j >= -4)
				paper.plot(i+64,j-97,fgw::black);

	for(double i = -14; i != 14; ++i)
		for(double j = -14; j != 14; ++j)
			if(1.4*i-j >= -5 && 1.4*i-j <= 5)
				paper.plot(i+50,j-84,fgw::black);		
	
	draw_square(paper,28,7,fgw::black,49,100);
	
	draw_ellipse(paper,15,27,15,fgw::black, 79,80);
	draw_ellipse(paper, 8,25, 8,fgw::white, 79,80);
	draw_ellipse(paper,15,27,15,fgw::black,109,80);
	draw_ellipse(paper, 8,25, 8,fgw::white,109,80);
	draw_ellipse(paper,15,14,15,fgw::black,139,67);
	draw_ellipse(paper, 8,12, 8,fgw::white,139,67);
	draw_ellipse(paper,15,15,15,fgw::black,139,92);
	draw_ellipse(paper, 8,13, 8,fgw::white,139,92);
}
int main()
{
	fgw::playpen paper;
	paper.scale();
	paper.origin();
	
	try{
		draw_JING(paper);
		Beijing_2008(paper);
		draw_five_circle(paper);
		paper.display();
	}
	catch(...)
	{
		std::cerr << "" << std::endl;
	}
	
	system("pause");
	return 0;
}

⌨️ 快捷键说明

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