使用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; }
剩下的代码如一种所示。
相关文章推荐
- 使用C语言打印不同星号图案(矩形 平行四边形 三角形)
- <C语言>如何使用C语言代码打印“心形”图案?
- 打印平四边形星号图案
- tc2.0环境下的C语言研究-简单使用寄存器并打印函数的偏移地址
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- 【C语言】把从1到1000的数打印出来,但你不能使用任何的循环语句或是条件语句。
- 使用C语言,利用for循环打印菱形(每个相邻菱形都要带空格)
- (原)XtraGrid打印过程中不同的报表使用不同的打印机
- C# 打印PDF文件之使用不同打印机打印所有页面或部分页面
- 循环的使用之打印星号
- C语言中星号的使用
- 使用matlab画不同填充图案的柱状图
- linux下使用printf打印输出不同颜色字体的方法
- C语言学习3-1:成绩检测,使用while和do...while得到九九乘法,1-1/2+1/3-1/4 .......+1/10求和,输入10进制打印2进制,求素数,猜随机产生的数字,16进制转二进制,
- Windows环境是使用C语言计算程序或算法执行时间的不同粒度实现
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- (转)XtraGrid打印过程中不同的报表使用不同的打印机
- 打印不同的数(编写一个程序,使用指针访问数组方式,读入十个数,输出其中不同的数,即一个数如果出现多次,只打印一次)
- 转:使用matlab绘画柱状图,且使用不同的图案填充
- C语言控制台打印3D爱心图案