📄 julia.c
字号:
#include <gl/glut.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define REMAX 1.2
#define REMIN -1.2
#define IMMAX 1.2
#define IMMIN -1.2
#define REAL -0.74543
#define IMAG 0.11301
#define N 128
typedef struct{
double real;
double imag;
}complex;
double norm(complex c)
{
return sqrt(c.real*c.real+c.imag+c.imag);
}
void display(void)
{
int count;
complex x,z,y;
double re,im,deltaw,deltah;
GLfloat r,g,b;
GLint viewport[4];
glClear(GL_COLOR_BUFFER_BIT);
glGetIntegerv(GL_VIEWPORT,viewport);
deltaw=(REMAX-REMIN)/viewport[2];
deltah=(IMMAX-IMMIN)/viewport[3];
glBegin(GL_POINTS);
for(x.real=REMIN;x.real<=REMAX;x.real+=deltaw){
for(x.imag=IMMIN;x.imag<=IMMAX;x.imag+=deltah){
count=0;
z.real=REAL;
z.imag=IMAG;
y.real=x.real;
y.imag=x.imag;
while(norm(y)<=2.0&&count<N){
re=y.real*y.real-y.imag*y.imag+z.real;
im=2.0*y.real*y.imag+z.imag;
y.real=re;
y.imag=im;
count++;
}
if(norm(y)<=2.0)
glColor3f(0.0,0.0,0.0);
else{
r=(1.0+count)/(N+1);
g=(x.real-REMIN)/(REMAX-REMIN);
b=(x.imag-IMMIN)/(REMAX-REMIN);
glColor3f(r,g,b);
}
glVertex2f(x.real,x.imag);
}
}
glEnd();
glFlush();
}
void reshape(int w,int h)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(REMIN,REMAX,IMMIN,IMMAX,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_SMOOTH);
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -