心形公式表白(逼格更高一点哈哈哈)

#代码表心意!!!!

你是否还在用简单地for循环写个程序打印心形给你的女朋友带来惊喜?那有点捞哦。本篇文章将为大家带来逼格更高的更好看的 更完美的 心形图案。废话不多说,直接上干货。由数学知识我们可以知道,心形公式有好多,例如:
*(1)(x^2 + y^2 - 1) - x^2 y^3 = 0
参数范围:x [-1.2 , 1.2 ] ,y [-1.1 , 1.3 ]
(2)x^2 +(5.0 * y / 4.0 -sqrt(|x|))^2=1
参数范围:x [-1.1 , 1.1 ] ,y [-1.1 , 1.3 ]

1.空白心形
效果图:
中间留白
代码如下:

void  main(){
  float x,y,a;
  for(y=1.3f;y>-1.1f;y-=0.06f){   //这里的参数皆可以调,条件就是看着顺眼txtx
        for(x=-1.2f;x<=1.2f;x+=0.025f){
            a=x*x+y*y-1;
            putchar(a*a*a-x*x*y*y*y<=0.0f?' ':'$');
        }
        putchar('\n');
        } 
}

2. 外围留白心型,中间为字母样式
样例图:

外层留白
代码如下:

void main(){
        float x,y,a;
        char s[11]={'I',' ','l','o','v','e',' ','y','o','u','!'};   //也可以用字符串之类的
        int index=0;
        for(y=1.3f;y>-1.1f;y-=0.06f){
		    index=0;
            for(x=-1.1f;x<=1.1f;x+=0.025f){
                float result=x*x+pow((5.0*y/4.0-sqrt(abs(x))),2);
                if(result<=1){
                    putchar(s[index]);
                    index=(index+1)%11;
                }
                else{
                    putchar(' ');
                }    
            }
            putchar('\n');
        } 
}

3.立体感心形
样例图:

立体心形
代码如下:

#include <iostream>
#include <cmath>
	float cal(float x, float y, float z) {
	    float a;
	    a=x*x+9.0f/4.0f*y*y+z*z-1;
	    return a*a*a-x*x*z*z*z-9.0f/80.0f*y*y*z*z*z;
	}

	float h(float x, float z) {
	    float y;
	    for (y=1.0f;y>=0.0f;y-=0.001f){
	        if(cal(x,y,z)<= 0.0f)
	            return y;
		}
	    return 0.0f;
	}

	int main() {
	    float z,x,v,y0,ny,nx,nz,nd,d;
	    for (z=1.3f;z>-1.3f;z-=0.06f) {
	        for(x=-1.3f;x<1.3f;x+=0.025f) {
	            v=cal(x,0.0f,z);
	            if (v<=0.0f) {
	                 y0=h(x,z);
	                 ny=0.01f;
	                 nx=h(x+ny,z)-y0;
	                 nz=h(x,z+ny)-y0;
	                 nd=1.0f/sqrtf(nx*nx+ny*ny+nz*nz);
	                 d =(nx+ny-nz)*nd*0.5f+0.5f;
	                putchar(".:-=+*#%@"[(int)(d*5.0f)]);
	            }
	            else
	                putchar(' ');
	        }
	        putchar('\n');
	    }
	    return 0;
	}
	     
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值