MaterialPeonNegro::MaterialPeonNegro(){ textura = NULL; color[0] = Tupla4f(0,0,0,1); color[1] = Tupla4f(0,0,0,1); color[2] = Tupla4f(0.01,0.01,0.01,1); color[3] = Tupla4f(0.7,0.7,0.7,1); exponente = 5; }
FuenteDireccional::FuenteDireccional( float alpha_inicial, float beta_inicial ){ posvec = Tupla4f(0, 0, 0,0); lng=alpha_inicial; lat=beta_inicial; colores[0] = Tupla4f(0.9,0.9,0.9,1.0); colores[1] = Tupla4f(0.9,0.9,0.9,1.0); colores[2] = Tupla4f(0.9,0.9,0.9,1.0); }
MaterialLata::MaterialLata(){ textura = new Textura("../imgs/lata-coke.jpg",0); color[0]=Tupla4f(0.2,0.2,0.2,1.0); color[1]=Tupla4f(0.02,0.02,0.02,1.0); color[2]=Tupla4f(0.4,0.4,0.4,1.0); color[3]=Tupla4f(1.0,1.0,1.0,1.0); exponente=5; }
MaterialPeonMadera::MaterialPeonMadera(){ textura = new Textura("../imgs/text-madera.jpg",1); color[0] = Tupla4f(0.3,0.3,0.3,1); color[1] = Tupla4f(0.05,0.05,0.05,1); color[2] = Tupla4f(0.7,0.7,0.7,1); color[3] = Tupla4f(1,1,1,1); exponente = 6; }
MaterialTapasLata::MaterialTapasLata(){ text = NULL; color[0]=Tupla4f(0.3,0.3,0.3,1.0); color[1]=Tupla4f(0.03,0.03,0.03,1.0); color[2]=Tupla4f(0.3,0.3,0.3,1.0); color[3]=Tupla4f(1.0,1.0,1.0,1.0); exponente=1; }
MaterialBlanco::MaterialBlanco(){ text=NULL; color[0]=Tupla4f(0.5,0.5,0.5,1.0); color[1]=Tupla4f(0.05,0.05,0.05,1.0); color[2]=Tupla4f(0.2,0.2,0.2,1.0); color[3]=Tupla4f(0.0,0.0,0.0,0.0); exponente=5; }
MaterialMadera::MaterialMadera(){ text = new Textura("../imgs/text-madera.jpg",2); color[0]=Tupla4f(0.3,0.3,0.3,1.0); color[1]=Tupla4f(0.05,0.05,0.05,1.0); color[2]=Tupla4f(0.7,0.7,0.7,1.0); color[3]=Tupla4f(1.0,1.0,1.0,1.0); exponente=6; }
MaterialNegro::MaterialNegro(){ text=NULL; color[0]=Tupla4f(0.0, 0.0, 0.0, 1.0); color[1]=Tupla4f(0.0, 0.0, 0.0, 1.0); color[2]=Tupla4f(0.01,0.01,0.01,1.0); color[3]=Tupla4f(0.7,0.7,0.7,1.0); exponente=5; }
// activa la fuente de luz (con número GL_LIGHT0+i) void FuenteLuz::activar( int i ) { glEnable(GL_LIGHT0+i); // glLightfv(GL_LIGHT0+i, GL_POSITION, fuentes[i]->posvec); glLightfv(GL_LIGHT0+i, GL_AMBIENT, colores[0]); // hace SiA := (ra, ga, ba) glLightfv(GL_LIGHT0+i, GL_DIFFUSE, colores[1]); // hace SiD := (rd, gd, bd) glLightfv(GL_LIGHT0+i, GL_SPECULAR, colores[2]); // hace SiS := (rs , gs , bs) if(posvec[3]==1){ glLightfv(GL_LIGHT0+i, GL_POSITION, posvec); } else{ //const float[4] ejez={0,0,1,0}; glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); // hacer M = Ide glMultMatrix( A ) ; // A podría ser Ide,V o V N // (3) rotación α grados en torno a eje Y glRotatef( lng, 0.0, 1.0, 0.0 ) ; // (2) rotación β grados en torno al eje X- glRotatef( lat, -1.0, 0.0, 0.0 ) ; // (1) hacer li := (0, 0, 1) (paralela eje Z+) glLightfv( GL_LIGHT0+i, GL_POSITION, Tupla4f(0,0,1,0) ); glPopMatrix() ; } glEnable(GL_DEPTH_TEST); //Activa el buffer de profundidad. }
Tupla3f Matriz4x4::operator*(Tupla3f& t) { Tupla4f resultado; Tupla4f t2 = Tupla4f(t[0],t[1],t[2],1); for (unsigned fila = 0; fila < 4; fila++) { resultado[fila] = 0.0f; for (unsigned col = 0; col < 4; col++) { resultado[fila] += this->coe[col][fila]*t2[col]; } } return Tupla3f(resultado[0],resultado[1],resultado[2]); }
MaterialPeonNegro::MaterialPeonNegro() { this=new MaterialEstandar(Tupla4f(0.0, 0.0, 0.0, 1.0),Tupla4f(0.02, 0.02, 0.02, 1.0),Tupla4f(0.0, 0.0, 0.0, 1.0),Tupla4f(1.0, 1.0, 1.0, 1.0),3.0); }
// colores: 0=ambiental, 1=difuso, 2=especular. FuentePosicional::FuentePosicional( const Tupla3f & posicion ){ posvec = Tupla4f(posicion[0], posicion[1], posicion[2], 1); colores[0] = Tupla4f(0.2,0.3,0.4,1.0); colores[1] = Tupla4f(0.2,0.3,0.4,1.0); colores[2] = Tupla4f(0.2,0.3,0.4,1.0); }