当前位置: 首页 > web >正文

用C语言实现一个圣诞树!(超简单详细)全部源码分享

2022年12月25号就是圣诞节了!圣诞节当然要有个圣诞树了,今天给你们用C语言编写一个雪夜圣诞树!

如果本人的代码能够帮到你的话,还请在文章下方点个赞支持一下哟~ 这个就是用单纯的C语言代码实现的,需要一点点数学知识

那么我们话不多说,先来看看具体的效果吧~上面是我预想中的效果图(不是忽悠大家点进来哦)

后面我会更新更加酷炫的圣诞树,大家可以期待哦~

效果展示:

别人都手绘圣诞树,身为程序猿的我们可以用C语言编写一个圣诞树出来,可能C语言的效果没那么炫酷,后面我在看看弄个带音乐或者带雪花的版本出来,大家先用这个小小的准备一些吧~

代码如下:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14159265359
float sx, sy;
float sdCircle(float px, float py, float r) {float dx = px - sx, dy = py - sy;return sqrtf(dx * dx + dy * dy) - r;
}
float opUnion(float d1, float d2) {return d1 < d2 ? d1 : d2;
}
#define T px + scale * r* cosf(theta), py + scale * r * sin(theta)
int ribbon() {float x = (fmodf(sy, 0.1f) / 0.1f - 0.5f) * 0.5f;return sx >= x - 0.05f && sx <= x + 0.05f;
}
float f(float px, float py, float theta, float scale, int n) {float d = 0.0f;for (float r = 0.0f; r < 0.8f; r += 0.02f)d = opUnion(d, sdCircle(T, 0.05f * scale * (0.95f - r)));if (n > 0)for (int t = -1; t <= 1; t += 2) {float tt = theta + t * 1.8f;float ss = scale * 0.9f;for (float r = 0.2f; r < 0.8f; r += 0.1f) {d = opUnion(d, f(T, tt, ss * 0.5f, n - 1));ss *= 0.8f;}}return d;
}
int main(int argc, char* argv[]) {int n = argc > 1 ? atoi(argv[1]) : 3;float zoom = argc > 2 ? atof(argv[2]) : 1.0f;for (sy = 0.8f; sy > 0.0f; sy -= 0.02f / zoom, putchar('\n'))for (sx = -0.35f; sx < 0.35f; sx += 0.01f / zoom) {if (f(0, 0, PI * 0.5f, 1.0f, n) < 0.0f) {if (sy < 0.1f)putchar('.');else {if (ribbon())putchar('=');elseputchar("...................................#j&o"[rand() % 32]);}}elseputchar(' ');}
}

希望对大家有帮助!快拿着代码去试试效果吧~有什么问题可以来我下方粉丝群哦!

此外,我也给大家分享我收集的其他资源,从最零基础开始的教程到C语言C++项目案例,帮助大家在学习C语言的道路上披荆斩棘!

 

 整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!(↓↓↓↓↓↓)

http://www.xdnf.cn/news/11814.html

相关文章:

  • Android 2023最新最全面性能分析工具介绍(非常详细)从零基础入门到精通,看完这一篇就够了(附安装包)
  • 软件测试工具:11类41款主流测试工具盘点
  • 零基础程序员自学编程的6种方法,你知道吗?
  • 计算机领域的学术会议等级排名
  • horizontalBar标签在柱形内显示
  • symantec病毒服务器的部署及配置
  • 3、QT制作个人资料界面
  • editplus发布3.01 Build 446 Final版(附下载及中文版)
  • 【python ascii码转中文】1分钟教你编码转换
  • 常见网络协议汇总
  • Android 中的 NDK 到底是什么?(详细解析+案例实战)
  • 嵌入式迅为4412开发板学习开发从零开始嵌入式入门
  • LBS(基于位置服务(Location Based Service))
  • matlab从投影重建图像,由投影重建图像
  • web测试----死链检查(Xenu)
  • echarts柱状图,柱体使用图片显示vue
  • 以太坊P2P网络及节点发现机制
  • 免费域名和空间搭建个人网站——服务器篇
  • 第5章 彩色数字图像基础
  • 搜索引擎提交入口,导航站登陆入口大全
  • Windows App开发之常用控件与应用栏
  • 网关协议
  • 手把手教你破解无线路由器密码
  • 私有云平台下的存储架构规划设计
  • 安阳工学院c语言期末考试题库,安阳工学院期末C语言答案.doc
  • 纯小白从0开始root小米手机(MIUI14)及隐藏root使用银行app
  • 怎么制作GIF动图?教你这几个简单方法
  • 圣安地列斯2.0汉化补丁_[只知道圣安地列斯有热咖啡,没想到《GTA5》也这么污...
  • 【强烈推荐】基于stm32的OLED各种显示实现(含动态图)
  • MathType 数学公式编辑器[Baidu]