如何用C语言画一个“心形”?
在你们的世界里,是不是觉得程序员一点浪漫都不懂?其实不是的,程序yuan的世界也是很浪漫滴。
看 这个图片是不是很浪漫,有木有很惊讶。你没看错,这就是用代码写出来的。
#include
intmain(){
for(floaty=1.5f;y>-1.5f;y-=0.1f){
for(floatx=-1.5f;x<1.5f;x+=0.05f){
floata=x*x+y*y-1;
putchar(a*a*a-x*x*y*y*y<=0.0f?'*':'');
}
putchar('\n');
}
}
#include
intmain(){
for(floaty=1.5f;y>-1.5f;y-=0.1f){
for(floatx=-1.5f;x<1.5f;x+=0.05f){
floatz=x*x+y*y-1;
floatf=z*z*z-x*x*y*y*y;
putchar(f<=0.0f?".:-=+*#%@"[(int)(f*-8.0f)]:'');
}
putchar('\n');
}
}
#include
#include
floatf(floatx,floaty,floatz){
floata=x*x+9.0f/4.0f*y*y+z*z-1;
returna*a*a-x*x*z*z*z-9.0f/80.0f*y*y*z*z*z;
}
floath(floatx,floatz){
for(floaty=1.0f;y>=0.0f;y-=0.001f)
if(f(x,y,z)<=0.0f)
returny;
return0.0f;
}
intmain(){
for(floatz=1.5f;z>-1.5f;z-=0.05f){
for(floatx=-1.5f;x<1.5f;x+=0.025f){
floatv=f(x,0.0f,z);
if(v<=0.0f){
floaty0=h(x,z);
floatny=0.01f;
floatnx=h(x+ny,z)-y0;
floatnz=h(x,z+ny)-y0;
floatnd=1.0f/sqrtf(nx*nx+ny*ny+nz*nz);
floatd=(nx+ny-nz)*nd*0.5f+0.5f;
putchar(".:-=+*#%@"[(int)(d*5.0f)]);
}
else
putchar('');
}
putchar('\n');
}
}