手把手教你用编程做一个爱心程序,你-还不会么

快到情人节了情人节,其实已经有计划要实现这个问题许久了,一直没有时间完成…因为是情人节,所以我抽空完成了这颗心的绘制(๑ơ ₃ ơ)

小编是一个有着6年工作经验的工程师,关于C++,编程,自己有做材料的整合,一个完整的C++编程学习路线,学习资料和工具,能够进我的群7253,-91790收取,免费送给大家,希望你也能凭着自己的努力,成为下一个优秀的程序员

⋯為什麼會覺得這顆心爛了呢( TДT)

這種仿製鑽石的割面不好看嘛( TДT)

(可視化一下世界法線⋯免得誤會我把這顆心寫爛了(T▽T)

使用c++和部分shader(spv),结合vulkan,绘制出来的,应该不算偏题吧(๑ơ ₃ ơ)ﻌﻌﻌ

渲染框架采用的是pathtracing,而渲染引擎使用的是鄙人写的一个小渲染器(其中的一个分支)

基本原理为求交,混合求交(解析解求交,和隐式表面求交,如距离场)

心形是使用了几个距离场复合而成(部分来自ShaderToy)

渲染材质使用了Lambert和GGX的Specular混合的半金属质感材质…

经大家的反馈我把原来的C版本代码改成了C++版本的代码

这次在MAC终端里用g++直接编译的,这是结果:

(MAC上好像显示不出爱心的辣个字符所以我用*替代了)

然后我直接把以前的C版本代码copy过来编译发现也没问题:

(只是把爱心的字符换成了*)

那么我就不造为什么你萌编译不了惹,可能是复制的时候没选全叭

我的这个爱心在搜狗输入法里的表情那里可以找到,是的我就是在那里先打出来然后照着写代码的

#include

int main()

{

int i, j, k, l, m;

char c=3; //ASCII码里面 3 就是一个字符小爱心

for (i=1; i<=5; i++) printf("

"); //开头空出5行

for (i=1; i<=3; i++) { //前3行中间有空隙分开来写

for (j=1; j<=32-2*i; j++) printf(" "); //左边的空格,每下一行左边的空格比上一行少2个 //8*n-2*i

for (k=1; k<=4*i+1; k++) printf("%c", c);//输出左半部分字符小爱心

for (l=1; l<=13-4*i; l++) printf(" "); //中间的空格,每下一行的空格比上一行少4个

for (m=1; m<=4*i+1; m++) printf("%c", c);//输出右半部分字符小爱心

printf("

"); //每一行输出完毕换行

}

for (i=1; i<=3; i++) { //下3行中间没有空格

for (j=1; j<=24+1; j++) printf(" "); //左边的空格 //8*(n-1)+1

for (k=1; k<=29; k++) printf("%c", c);//输出字符小爱心

printf("

"); //每一行输出完毕换行

}

for (i=7; i>=1; i--) { //下7行

for (j=1; j<=40-2*i; j++) printf(" "); //左边的空格,每下一行左边的空格比上一行少2个//8*(n+1)-2*i

for (k=1; k<=4*i-1; k++) printf("%c", c);//每下一行的字符小爱心比上一行少4个(这个循环是i--)

printf("

"); //每一行输出完毕换行

}

for (i=1; i<=39; i++) printf(" "); //最后一行左边的空格

printf("%c

", c); //最后一个字符小爱心

for (i=1; i<=5; i++) printf("

"); //最后空出5行

return 0;

}

祝大家情人节快乐。

其次祝大家看到这个可爱的心心之后,会一直一直幸福下去*(*´∀`*)☆

你可能感兴趣的:(手把手教你用编程做一个爱心程序,你-还不会么)