📄 picture.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 + -