圣诞树代码C++源码(c++圣诞树编程代码)

http://www.itjxue.com  2023-02-18 16:09  来源:未知  点击次数: 

如何用 C 语言画一个“圣诞树”?

画圣诞树

1,用 C 语言画的“圣诞树”,对于我一个美术生来说,画画是自己的兴趣,我也很喜欢画画,从小对画画还有创意性的,我大学是学艺术设计的,用电脑操作绘画是我的专业,我尝试用最少代码来画一个抽象一点的圣诞树,可惜没有画树干。然后,我尝试用更真实一点的风格。因为树是一个比较自相似的形状,这次使用递归方式描述树干和分支。就是画一主树干,树干越高看着就越幼。

2,估计是因为C字母绘制而做成的。由于光照已经使用了画线法,性能已经很差,我就不再尝试做其他的操作问题了。另外也许电脑的某些软件绘制对这问题也有帮助,不过需要更多的采样。因为需要三维旋转,不能像二维简单使用一个角度来代表旋转,所以这段字母加入了不少矩阵运算。

3,当我在画的过程中,发现之前的字母画错了,我马上更改,要不然会把树画错了。另外,考虑提升性能时,一般是需要一些空间剖分的方式去加速检查,但这里刚好是一个树状的场景结构,可以简单使用cdr软件来帮助画画,我使用了球体作为包围体积。只需加几句代码,便可以大大缩减运行时间。

所以考虑到太小的叶片是很难采样得到好看的结果,我尝试以一个较大的球体去表现叶片,就如素描时考虑更整体的光暗,而不是每片叶片的光暗,这样画出来的效果非常的漂亮,我觉得结果已有进步。

如何用C语言画一个“圣诞树”

从网上下载并安装c-free3.5

其他任何版本的都可以,其他的C语言开发工具也可以!这里给出c-free的安装教程

新建一个程序代码

有基础的可以自己试着写,这里直接给出第一层的代码

? int i,j;

? ?for(i=1;i=7;i++){

? ? ? ? for(j=1;j=10;j++){

? ? ? ? ? ? printf(" ");

? ? ? ? }

? ? ? ? for(j=1;j=7-i;j++){

? ? ? ? ? ? printf(" ");

? ? ? }

? ? ? ? for(j=1;j=2*i-1;j++){

? ? ? ? ? ? printf("*");

? ? ? }

? ? printf("\n");

? ?}

继续编辑第二层的大小和高度

画线部分为调整位置进行的修改,可以按照个人喜好随意调整,或许能得到更加丰富的图案

最后编辑树的枝干

代码在图片中给出了

运行并观察结果

这个是每一步都需要做的,可以根据图形与我们理想的偏差来进行调整,结果应该就想我图片中的一样了。

保存

好不容易写完了,记得保存为,cpp的格式,下次想打开直接双击就可以了!

C语言设计案例张传学P82编写如图123圣诞树

为了更方便的设计圣诞树的形状,我用的是设计递归函数的方法。程序如下:

#include stdio.h

#include math.h

void shu(int n)

{

int i;

for (i = 1; i = 6 - n; i++)

{

printf(" ");

}

for (i = 1; i = 2 * n - 1;i++)

{

printf("*");

}

printf("\n");

if (n != 6)

shu(n + 1);

}

void gen(int n)

{

int i;

for (i = 1; i = n; i++)

{

printf(" ? *****\n");

}

}

void main()

{

shu(1);

shu(2);

gen(5);

}

仿真结果如图1。

改变min函数调用函数的参数,可以设计圣诞树形状和高度等,如下

void main()

{

shu(1);

shu(2);

shu(3);

gen(4);

}

将得到图2的形状。

电脑的C语言怎样编写出圣诞树

打印两个等边三角形,再打一个矩形就可以实现圣诞树雏形;

参考代码如下:

#include?stdio.h

void?main()

{

????int?i,j;

?

????printf("*\n");

????for?(i=2;?i4;?i++)

????{

????????printf("?");

????????for?(j=1;?j2*i;j++)

????????????printf("*");

????????printf("\n");

????}

????for?(i=1;?i5;?i++)

????{

????????printf("?");

????????for?(j=1;?j2*i;?j++)

????????????printf("*");

????????printf("\n");

????}

????for?(i=1;?i4;?i++)

????{

????????printf("?");

????????printf("***\n");

????}

}

(责任编辑:IT教学网)

更多

推荐XML/XSLT文章