精彩作图
来源:互联网 发布:cs1.5参数优化 编辑:程序博客网 时间:2024/05/02 01:08
原文: 有没有一段代码,让你觉得人类的智慧也可以璀璨无比?
原文是C++代码,且产生的图形是PPM格式,下面程序是C语言版本的,输出为BMP格式的图片。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define DIM 1024
#define DM1 (DIM-1)
#define _sq(x) ((x)*(x)) // square
#define _cb(x) abs((x)*(x)*(x)) // absolute value of cube
#define _cr(x) (unsigned char)(pow((x),1.0/3.0)) // cube root
unsigned char GR(int,int);
unsigned char BL(int,int);
unsigned char RD(int i,int j){
// YOUR CODE HERE
}
unsigned char GR(int i,int j){
// YOUR CODE HERE
}
unsigned char BL(int i,int j){
// YOUR CODE HERE
}
FILE *fp;
void pixel_write(int i, int j)
{
static unsigned char color[3];
color[0] = RD(i,j)&255;
color[1] = GR(i,j)&255;
color[2] = BL(i,j)&255;
fwrite(color, 1, 3, fp);
}
int main()
{
char bmphead[] = {0X42 ,0X4D ,0X36 ,0X00 ,0X30 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X36 ,0X00 ,0X00 ,0X00 ,
0X28 ,0X00 ,0X00 ,0X00 ,0X00 ,0X04 ,0X00 ,0X00 ,0X00 ,0X04 ,0X00 ,0X00 ,0X01 ,0X00 ,
0X18 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X30 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,
0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00 ,0X00} ;
fp = fopen("MathPic.bmp","wb");
fwrite(bmphead, 1, 54, fp);
for(int j=0;j<DIM;j++)
for(int i=0;i<DIM;i++)
pixel_write(i,j);
fclose(fp);
return 0;
}
更多精彩参见 出处
示例
unsigned char RD(int i,int j){
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880)
{b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
return 255*pow((n-80)/800,3.);
}
unsigned char GR(int i,int j){
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880)
{b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
return 255*pow((n-80)/800,.7);
}
unsigned char BL(int i,int j){
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880)
{b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
return 255*pow((n-80)/800,.5);
}
----------------------------------------------------------------------------------------------------------------------------
unsigned char RD(int i,int j){
float s=3./(j+99);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
}
unsigned char GR(int i,int j){
float s=3./(j+99);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
return (int(5*((i+DIM)*s+y))%2+int(5*((DIM*2-i)*s+y))%2)*127;
}
unsigned char BL(int i,int j){
float s=3./(j+99);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
return (int(29*((i+DIM)*s+y))%2+int(29*((DIM*2-i)*s+y))%2)*127;
}
- 精彩作图
- PPT作图也精彩
- 作图
- 精彩
- 精彩
- 基本作图
- 汇编语言作图
- MATLAB作图
- Gnuplot 作图
- IOS作图
- 作图工具
- ArcGIS作图
- 在线作图
- matlab 作图
- SDL作图
- 作图flowerView
- 软件工程--作图
- 作图工具
- 用 WEKA 进行数据挖掘,第 3 部分: 最近邻和服务器端库
- Git配置及GitHub的基础使用(Win及Ubuntu)
- apache开启虚拟主机功能与httpd-vhosts.conf 配置
- 宽字符转 Byte WideCharToMultiByte
- dismissViewController 层次问题
- 精彩作图
- css定位
- [Rman]Rman Level012备份实验
- ubuntu 安装ssh遇到的依赖问题
- sicily 1187. Laserbox
- 破解C++ Redistributable Package版本之谜
- c++ ftream
- jcifs登录域账户 下载文件 等
- linux笔记--常用有趣命令