All pastes #609624 Raw Edit

cone effect

public c v1 · immutable
·published 2007-07-09 00:08 UTC
rendered paste body
#include <SDL/SDL.h>#include <GL/gl.h>#include <GL/glu.h>#include <math.h>#include <time.h>float WIDTH = 1024;float HEIGHT = 768;float RWIDTH = 1024;float RHEIGHT = 768;#define GWIDTH 1024#define GHEIGHT 768SDL_Event event;int glSetupView();double rot = 0;int sinwave[GWIDTH];int coswave[GWIDTH];int tanwave[GWIDTH];int interpol(double a);int radius = 0;int buildarrays(){	int x;	for(x=0;x!=GWIDTH;x++) {		sinwave[x] = interpol(sin((x/57.3)));		coswave[x] = interpol(cos((x/57.3)));		tanwave[x] = interpol(tan((x/57.3)));		}}int glPutPixel(int xpos,int ypos,int r,int g,int b){	glBegin(GL_QUADS);		glColor3f(	r /255,				 	g / 255,					b / 255);		glVertex2i(xpos,ypos);		glVertex2i(xpos+10,ypos);		glVertex2i(xpos+10,ypos+10);		glVertex2i(xpos,ypos+10);	glEnd();			/*	glBegin(GL_POINTS);		glColor3f(r / 255,g / 255,b / 255);		glVertex2i(xpos,ypos);	glEnd();	*/}double sin1(int a) {	return(sin(a));}float rand1(int seed) {	int i;	srand(seed);	i = rand() % 10;//	printf("%f\n",(float)i/10.0f);	return (float)i/10.0;}int interpol(double a){	return(((a+1) /2) * 255);}int getItem(int* array,int index){	int i;	if(index < GWIDTH) return array[index];	for(i=1;i*GWIDTH < index;i++);	return array[(i*(GWIDTH-1))-index];}int loop(){	static int a = 0;	static int x =0;	while(1) 	{		while(SDL_PollEvent(&event)) 		{			if(event.type == SDL_QUIT) return 0;			if(event.type == SDL_VIDEORESIZE) {				a = 1;				WIDTH = event.resize.w;				HEIGHT = event.resize.h;				RWIDTH = event.resize.w;				RHEIGHT = event.resize.w*.75;			}else if(a == 1) {				a = 0;				glSetupView();			}			if(event.type == SDL_KEYDOWN) {				if(event.key.keysym.sym == SDLK_UP) 					radius+=40;				else if (event.key.keysym.sym == SDLK_DOWN) 					radius-=40;			}			}		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		glClearColor(0.0f,0.0f,0.0f,0.0f);		glLoadIdentity();		for(int i=-GWIDTH/2;i<=0;i++)	   	{			glRotatef(rot,1.0f,1.0f,1.0f);			glPutPixel(i,				interpol(					sin( (i-x)/57.3) + 					rand1(i)			//		rand1(time(NULL))					 				) + radius				,				255,255,255			);		}		x++;		rot+=.01;		SDL_GL_SwapBuffers();	}	return 0;}int glSetupView(){	SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );	SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );	SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );	SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );	SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );	SDL_SetVideoMode(WIDTH,HEIGHT,32,SDL_OPENGL | SDL_RESIZABLE);	glViewport(0,0,WIDTH,HEIGHT);	glMatrixMode(GL_PROJECTION);	glLoadIdentity();	glOrtho(-GWIDTH/2,GWIDTH/2,-GHEIGHT/2,GHEIGHT/2,		-100000.0f,100000.0f);	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();	glPointSize(1.0f);	return 0;}int main(int argc,char * argv[]){	buildarrays();	SDL_Init(SDL_INIT_VIDEO);	glSetupView();/* main loop */	loop();	SDL_Quit();}