Como mezclar el nuevo triangulo con el dibujo que ya está en la pantalla August 27, 2004
Posted by winden in coding, demoscene.trackback
Bien, supongamos que tenemos 3 variables:
m = (0,0,-1,-1,-1,-1,-1,0)
c = (9,9,9,9,9,9,9,9)
s = (1,2,3,4,5,6,7,8)
donde C es el color con que queremos pintar el triángulo y S es el contenido anterior de la pantalla y M tiene un 0 en los puntos fuera del triángulo y -1 en los de dentro. Aplicando esta operación:
for(i = 0 .. 7) if(m[i]) s[i] = c[i];
tendríamos el resultado que buscamos. Sin embargo, podemos aprovechar las propiedades de las operaciones binarias AND y OR:
0 = 0 & x
1 = 1 | x
para quitar el if y tener un código 100% lineal:
a = c[i] & m[i]
a = (9,9,9,9,9,9,9,9) & (0,0,1,1,1,1,1,0)
a = (0,0,9,9,9,9,9,0)
b = s[i] & ~m[i]
b = (1,2,3,4,5,6,7,8) & ~(0,0,1,1,1,1,1,0)
b = (1,2,3,4,5,6,7,8) & (1,1,0,0,0,0,0,1)
b = (1,2,0,0,0,0,0,8)
c = a | b
c = (0,0,9,9,9,9,9,0) | (1,2,0,0,0,0,0,8)
c = (1,2,9,9,9,9,9,8)
lo que se traduce en este bucle:
for(i = 0 .. 7){
a = c[i] & m[i];
b = s[i] & ~m[i];
s[i] = a | b;
}
¿Adivinais que ventajas tiene este código?
Comments»
No comments yet — be the first.