miércoles, 8 de diciembre de 2010

METAFLEX


Diseñado por científicos de la Universidad británica de St Andrews, Metaflex es el nombre de un material que nos acerca un paso más a la fabricación de tejidos que permitirán crear el efecto de la invisibilidad de los objetos.
El Metaflex es un meta-material, o lo que es lo mismo, un material artificial que presenta propiedades electromagnéticas inusuales, propiedades que proceden de la estructura diseñada y no de su composición.
En el pasado ya se han desarrollado meta-materiales que curvan y canalizan la luz para convertir en invisibles los objetos en largas longitudes de onda, pero la luz visible supone un desafío mayor. La pequeña longitud de onda de la luz del día supone que los átomos del meta-material tengan que ser muy pequeños, y hasta ahora estos átomos menores solamente se han podido producir sobre superficies planas y duras, incompatibles con los tejidos de la ropa.
La novedad que aporta este trabajo es que el Metaflex consta de unas membranas flexibles de meta-material, creadas gracias al empleo de una nueva técnica que ha permitido liberar los meta-átomos de la superficie dura sobre la que fueron construidos. De esta forma, el Metaflex puede operar en longitudes de onda de unos 620 nanómetros dentro de la región de la luz visible.
La unión de estas membranas podría producir un "tejido inteligente", que sería el primer paso para fabricar una capa o cualquier otra prenda para "hacer desaparecer" a la persona que la porte. Los meta-materiales, pues, nos dan el impulso último para poder manipular el comportamiento de la luz.

martes, 28 de septiembre de 2010

domingo, 7 de febrero de 2010

Avances técnicos en el cine

Mira como se filman las imágenes en estudio para luego situarlas en el lugar de la escena:

domingo, 17 de enero de 2010

PROGRAMAR VIDEOJUEGOS

Más de una vez algún alumno me ha preguntado cómo podrían programar videojuegos. La verdad es que estamos acostumbrados a juegos tan bien hechos y tan complejos que cualquier cosa que pueda hacer un alumno de secundaria va a ser algo bastante simple comparado con aquellos con los que suele jugar.

Los lenguajes específicos que hay para programar videojuegos son bastante profesionales y es difícil iniciarse en su aprendizaje. Cuando yo estaba en el instituto, los videojuegos eran bastante sencillos y los ordenadores que teníamos en casa nos permitían programar videojuegos muy simples de manera sencilla.

Hace poco he descubierto un lenguaje de programación bastante sencillo de manejar, gratuíto y que permite iniciarse en el mundo de los videojuegos. Evidentemente, lo que podemos hacer como primer paso va a ser muy simple, pero poco a poco podemos ir comprendiendo ciertos conceptos de programación y hacer algo más complejo. Por otro lado, para un alumno de secundaria, siempre va a ser más divertido introducirse en el mundo de la programación por medio de los videojuegos que programando bases de datos o algo parecido.

El programa se llama processing:

Hay páginas como ésta en la que la gente comparte sus códigos. Lo malo es que todo está en inglés.

Para empezar a programar videojuegos lo mejor es empezar siguiendo el orden de los videojuegos que han ido surgiendo en el mercado: tenis, space invaders, moon cresta, galaxians, pac-man, etc.

Aquí tenéis el código del juego del tenis. Los controles son az para un jugador y pñ para el otro.



//Primera parte del programa. Declaración de variables.
//dimensiones de la ventana de juego
int ancho= 600;
int alto=400;
int goles1;//goles de jugador uno y dos
int goles2;
int x=150;//coordenadas de la pelota
int y=150;
int r=10;//radio de la pelota
int incx=1;//incrementos. Lo que se le va a sumar a x e y para que se mueva la pelota
int incy=1;
boolean sub1;//variable booleana, ésto quiere decir que sólo puede valer verdadero o falso. Verdadero si el jugador uno ha pulsado subir
boolean baj1;//Verdaderosi el jugador uno ha pulsado bajar
boolean sub2;//bubir jugador dos
boolean baj2;//bajar jugador dos
int posx=40;//coordenadas del centro de la raqueta uno
int posy =150;
int pos2x=ancho-40;//coordenadas del centro de la raqueta dos
int pos2y =150;
// definición de la función setup, que se ejecuta siempre al principio
void setup(){
size(ancho,alto); //dimensiones de la ventana
background(0);//color de fondo
smooth();//hace que los contornos de lo que se dibuja sean suaves, que no haya picos
frameRate(200);//velocidad. Veces por segundo que se ejecuta la función draw. En teoría a partir de 60 da igual lo que se ponga, pero lo cierto es que con 200 va más rápido que con 60
PFont font;//define el tipo de letra para el texto
font = loadFont("Impact-48.vlw");
textFont(font);
}
//el bucle draw se repite constantemente
void draw() {
background(0);//pinta de negro la pantalla
text(goles1, width/2-40, 60);//escribe el marcador
text(goles2, width/2+40, 60);
ellipse(x,y,r,r);//dibuja la pelota
//bote con el borde
if ((y>alto-1)||(y<1)){
incy=incy*(-1);
}
//goles
if (x>ancho-40){
background(80);
}
if(x==ancho){
goles1++;
x=width/2;
incx=-1;
}
if (x==0){
x=width/2;
incx=+1;
goles2++;
}
if (x<20){
background(80);
}
//bote con las raquetas
if (((x==posx+5)&&((posy-y)*(posy-y)<2500))||(((x==pos2x-5)&&((pos2y-y)*(pos2y-y)<2500)))){
incx=-(incx);
}
//movimiento de la pelota
x=x+incx;
y=y+incy;
//dibuja las raquetas
rect(posx,posy,10,50);
rect(pos2x,pos2y,10,50);
//mueve las raquetas
if (sub1){
posy--;
}
if (baj1){
posy++;
}
if (sub2){
pos2y--;
}
if (baj2){
pos2y++;
}

}
void keyPressed(){
if (key == 'a'){
sub1=true;
}
if (key =='z'){
baj1= true;
}
if (key == 'p'){
sub2=true;
}
if (key =='ñ'){
baj2=true;
}
}
void keyReleased(){
if (key == 'a'){
sub1=false;
}
if (key =='z'){
baj1= false;
}
if (key == 'p'){
sub2=false;
}
if (key =='ñ'){
baj2=false;
}
}