编辑:[db:作者] 时间:2024-08-25 05:04:23
如果本人的代码能够帮到你的话,还请在文章下方点个赞支持一下哟~ 这个便是用纯挚的C措辞代码实现的,须要一点点数学知识
那么我们话不多说,先来看看详细的效果吧~上面是我预想中的效果图(不是忽悠大家点进来哦)
后面我会更新更加酷炫的圣诞树,大家可以期待哦~
效果展示:
别人都手绘圣诞树,身为程序猿的我们可以用C措辞编写一个圣诞树出来,可能C措辞的效果没那么炫酷,后面我在看看弄个带音乐或者带雪花的版本出来,大家先用这个小小的准备一些吧~
代码如下:
#include <math.h>#include <stdio.h>#include <stdlib.h>#define PI 3.14159265359float 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措辞的道路上披荆斩棘!
编程学习书天职享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目条记,根本入门教程)最主要的是你可以在群里面互换提问编程问题哦!
对付C/C++感兴趣可以关注小编在后台私信我:【编程互换】一起来学习哦!
可以领取一些C/C++的项目学习视频资料哦!
已经设置好了关键词自动回答,自动领取就好了!
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/lz/zxsj/132955.html
上一篇:废弃电子电器产品处置方法及生命周期评价研究进展 | 科技导报
下一篇:返回列表
Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码
声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com