Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float w(unsigned int x)
- {
- return static_cast<float>(0.5*exp(-0.0001*x*x));
- }
- float wc(unsigned int x)
- {
- return 0.5*w(x);
- }
- void setcolors(unsigned int s_x, unsigned int s_y, unsigned int e_x, unsigned int e_y, unsigned int i)
- {
- unsigned int sr_x=(s_x+e_x)/2;
- unsigned int sr_y=(s_y+e_y)/2;
- if(s_x!=sr_x)
- {
- unsigned int x=(e_x-s_x)/2;
- unsigned int centrum=sqrt((float)((x*x)+(x*x)));
- float W=w(x);
- float Wc=wc(centrum);
- float color=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- if(tab[s_x][sr_y]==0) tab[s_x][sr_y]=tab[s_x][s_y]+tab[s_x][e_y];
- color=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- if(tab[sr_x][s_y]==0) tab[sr_x][s_y]=(1-2*W)*color+W*tab[s_x][s_y]+W*tab[e_x][s_y];
- color=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- if(tab[e_x][sr_y]==0) tab[e_x][sr_y]=(1-2*W)*color+W*tab[e_x][s_y]+W*tab[e_x][e_y];
- color=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- if(tab[sr_x][e_y]==0) tab[sr_x][e_y]=(1-2*W)*color+W*tab[s_x][e_y]+W*tab[e_x][e_y];
- color=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- if(tab[sr_x][sr_y]==0) tab[sr_x][sr_y]=(1-4*Wc)*color+Wc*(tab[s_x][s_y]+tab[s_y][e_x]+tab[e_x][s_y]+tab[e_x][e_y]);
- setcolors(s_x,s_y,sr_x,sr_y,i+1);
- setcolors(sr_x,s_y,e_x,sr_y,i+1);
- setcolors(s_x,sr_y,sr_x,e_y,i+1);
- setcolors(sr_x,sr_y,e_x,e_y,i+1);
- }
- }
- void fractal(void)
- {
- unsigned int dlugosc=wymiar-1;
- tab[0][0]=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- tab[0][dlugosc]=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- tab[dlugosc][0]=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- tab[dlugosc][dlugosc]=static_cast<float>(static_cast<float>(rand())/static_cast<float>(RAND_MAX));
- setcolors(0,0,dlugosc,dlugosc,0);
- for(int i=0;i<wymiar;i++)
- {
- for(int j=0;j<wymiar;j++)
- {
- glBegin(GL_POINTS);
- glColor3f(tab[i][j],tab[i][j],tab[i][j]);
- glVertex2f((float)(i-256),(float)(j-256));
- glEnd();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement