您的位置:首页 > 编程语言 > C语言/C++

使用C语言打印不同星号图案

2016-11-19 00:45 405 查看





一、画图方法

画一个图,通常可以选择如下方法:

1、画每一个图形,填充形状覆盖的像素。

2、对于图像中每个像素,采样该像素覆盖了什么形状。

第一种就是光栅化(rasterization)算法,第二种包括光线追踪(ray tracing)、光线步进(ray marching)等算法。

第二种做法可以理解为设计一个数学函数,这种方式可以用较少的代码画出复杂的形状。如果要输出文本模式,只用两个符号表示图形,可用这个代码框架:

#include <stdio.h>
const int w = 30;
const int h = 30;
int f(int x, int y)
{
return /*...*/;
}
int main()
{
int x, y;
for (y = 0; y < h; y++)
{
for (x = 0; x < w; x++)
printf(f(x, y) ? "* " : "  ");
puts("");
}
}

二、三角形

1、直角三角形,可以模拟用 

;

#include <stdio.h>
const int w = 19;
const int h = 10;
int a(int x, int y)
{
return x <= y;
}
int main()
{
int x, y;
for (y = 0; y < h; y++)
{
for (x = 0; x < w; x++)
printf(a(x, y) ? "* " : "  ");
puts("");
}
system("pause");
return 0;
}



2、等腰三角形我们可以使用绝对值



表示对称轴的


坐标:

#include <stdlib.h>
#include <stdio.h>
#include<math.h>
const int w = 19;
const int h = 10;
int main()
{
int x, y;
for (y = 0; y < h; y++)
{
for (x = 0; x < w; x++)
printf(a(x, y) ? "* " : "  ");
puts("");
}

system("pause");
return 0;
}

int a(int x, int y) {
return abs(x - 9) <= y;
}




三、圆盘

圆盘在数学上可定义为一个隐函数

,那么画一个置于画布中心

、半径
8 的圆盘只需要定义

为:

int a(int x, int y)
{
return (x - 10) * (x - 10) + (y - 10) * (y - 10) <= 8 * 8;
}


剩下的代码如一种所示。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐