C语言打印心图案----真好玩
2015-06-28 13:11
537 查看
普通的爱心图案
效果图
效果图
3D爱心
效果图,运行时会动起来
网上看到的,觉得很好看,转来收藏着
#include <math.h> #include <stdio.h> int main() { float y, x, a; for (y = 1.5f;y > -1.5f;y -= 0.1f) { for (x = -1.5f;x < 1.5f;x += 0.05f) { a = x*x + y*y - 1; putchar(a*a*a - x*x*y*y*y <= 0.0f ? '*' : ' '); } putchar('\n'); } return 0; }
效果图
带花纹的爱心图案
#include <math.h> #include <stdio.h> int main() { float y, x, z,f; for (y = 1.5f;y > -1.5f;y -= 0.1f) { for (x = -1.5f;x < 1.5f;x += 0.05f) { z = x*x + y*y - 1; f = z*z*z - x*x*y*y*y; putchar(f <= 0.0f ? ".:-=+*#%@"[(int)(f*-8.0f)] : ' '); } putchar('\n'); } getchar(); return 0; }
效果图
3D爱心
#include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> float f(float x, float y, float z) { float a = x * x + 9.0f / 4.0f * y * y + z * z - 1; return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z; } float h(float x, float z) { for (float y = 1.0f; y >= 0.0f; y -= 0.001f) if (f(x, y, z) <= 0.0f) return y; return 0.0f; } int main() { HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE); _TCHAR buffer[25][80] = { _T(' ') }; _TCHAR ramp[] = _T(".:-=+*#%@"); for (float t = 0.0f;; t += 0.1f) { int sy = 0; float s = sinf(t); float a = s * s * s * s * 0.2f; for (float z = 1.3f; z > -1.2f; z -= 0.1f) { _TCHAR* p = &buffer[sy++][0]; float tz = z * (1.2f - a); for (float x = -1.5f; x < 1.5f; x += 0.05f) { float tx = x * (1.2f + a); float v = f(tx, 0.0f, tz); if (v <= 0.0f) { float y0 = h(tx, tz); float ny = 0.01f; float nx = h(tx + ny, tz) - y0; float nz = h(tx, tz + ny) - y0; float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz); float d = (nx + ny - nz) * nd * 0.5f + 0.5f; *p++ = ramp[(int)(d * 5.0f)]; } else *p++ = ' '; } } for (sy = 0; sy < 25; sy++) { COORD coord = { 0, sy }; SetConsoleCursorPosition(o, coord); WriteConsole(o, buffer[sy], 79, NULL, 0); } Sleep(33); } }
效果图,运行时会动起来
网上看到的,觉得很好看,转来收藏着
相关文章推荐
- C语言学习资料下载
- c++学习-链表
- c++类内存机制探寻
- c++ 固定分配大小的简单内存池
- C++跟我一起透彻理解虚函数表
- 大话设计模式C++版——建造者模式
- 大话设计模式C++版——建造者模式
- Double-Checked Locking is Fixed In C++11
- C语言中~的用法
- 用递归方法求n阶勒让德多项式的值
- Hanoi(汉诺塔)问题。
- C++ and the Perils of Double-Checked Locking: Part II
- 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。
- 编一程序,将两个字符串连接起来,不要用strcat函数。
- 【设计模式】C++中的单例模式
- 有一行电文,已按下面规律译成密码
- c语言常见函数自编写
- 有一篇文章,共有3行文字,每行有10个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格及其它字符的个数
- C/C++ sort函数的用法
- 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。