lunes, diciembre 04, 2006

El método Bolonya /Bolonia de adaptación al EEES

Ahora nos intentan vender la moto de que nos tenemos que adaptar al EEES (Espacio Europeo de Educación Superior). Todo esa parafernalia de que tenemos que ser iguales que Europa, de que todo tiene que ser compatible y sin ningún problema. En primer lugar, 2+2 serán siempre 4 y una transformada de Fourier o de Laplace será lo mismo aquí y en Grecia. Pues bien, en nuestra ETSE de la UAB los estudiantes de ingeniería informática tenemos que ir superando obstáculos peldaño a peldaño y ojo no te caigas en uno que como ahora los métodos son tan "modernos" y "continuados" no hay segundas convocatorias.

Al principio todo parece perfecto, mucho trabajillo en caasa, se valorará las horas de estudio del alumno, etc. Esto en principio es bueno, el problema es que para hacer un seguimiento de ese trabajo, el profesor tiene que trabajar el doble. Aquí debemos ser en cuarto curso unos 100 y pico alumnos por clase y hay dos grupos
así que perfectamente podríamos llegar hasta casi 300. El gran invento de los profes es unir a todo el mundo en grupitos de ... tachán: 5 y 6 personas!!! de esta forma corrigen mucho menos .. tan facil como hacer la cuenta de la vieja 300 / 6 . Es un follón todo esto! Nunca podemos quedar todos juntos, millones de informes que no sirven para nada y que dudo que todos los profes se lean ... Ah! y como necesites trabajar durante el curso para sacarte la carrera, olvídate porque te harán firmar al entrar en algunas aulas y muy pocos profes son flexibles con estas cosas.

Luego vienen los exámenes parciales ... en principio la idea es buena ya que vas recortándote materia ... pero también es una trampa porque como caigas en uno de ellos no podrás recuperarlo hasta lo que entendiamos la convocatoria ordinaria de febrero (siempre la primera) ... pero gracias al plan Bolonia la convocatoria de febrero se convierte en la segunda si tropiezas en un obstáculo ... es decir que si la mitad de la asignatura no te la sacas, en febrero te examinas de todo (lo que era lo normal) pero para la segunda mitad de la asignatura solamente tienes una oportunidad de superarla.

Todo esto es lo que sucede en general, en las asignaturas de la ETSE UAB en 4º curso de ingeniería informática.

Salut

NOTAS D'ENGINYERIA DEL SOFTWARE

A ver pimponacos de la ETSE! ya han salido las notas de Enginyeria del Software ... lo publico por si miráis antes esta cosa (mi blog) que la página del cvc.

Las notas están en la página esta:

(PDF) http://www.cvc.uab.es/shared/teach/a20363/es1blln06.pdf

Cómo dibujar un coche con MS Paint

Cómo dibujar un coche con MS Paint --- Un espectáculo

domingo, diciembre 03, 2006

SABADO 23 DE DICIEMBRE A LAS 17:00 HORAS *Macro Manifestación *

SABADO 23 DE DICIEMBRE A LAS 17:00 HORAS

Macro Manifestación

"No podemos volver a casa por navidad porque todavía
no nos hemos
marchado
de ella."



Se convoca con tanta antelación para que se difunda
lo máximo posible.
Se ruega a todo el que reciba este mensaje que lo
difunda de todas las
formas que se le ocurran: panfletos, mails, mensajes,
foros de
internet,cartas a los medios de comunicación, a todo
tipo de
asociaciones...

COMO SE REALIZARÁ:
Esta manifestación se hará en forma de marcha cortando
el tráfico por
las
principales calles de España, ya que ha quedado claro
que las simples
sentadas no son atendidas.

Aunque nunca se abandonará el espíritu *pacífico* con
el que esta
iniciativaha nacido.Si la policía detiene la marcha,
se volverá al punto inicial
pacificamente, sin enfrentamientos, y se esperará a
que se pueda
reanudar,
en el caso de no poder hacerse, se convertirá en una
sentada más pero
se
habrá llamado más la atención.

Debido a las fechas navideñas de la
MACRO-MANIFESTACIÓN el slogan
principal
será:
"No podemos volver a casa por navidad porque todavía
no nos hemos
marchado
de ella."

CIUDADES CONVOCADAS: (Si la tuya no está ponla)
- A/La Coruña: Plaza de Maria Pita
- Barcelona: Plaça Catalunya
- Sabadell: plaza doctor robert(ayuntamiento)
- Madrid: Puerta del Sol
- Girona: Plaça de correus DEVESA
- Zaragoza: Plaza del Pilar
- Salamanca: Plaza Mayor
- Valladolid: Plaza Mayor
- Pamplona: Plaza del Castillo
- Vigo: Puerta del Sol
- Elche: Plaça Baix
- Collado Villalba (Madrid): Plaza del Ayuntamiento
- Badajoz: Plaza de San Francisco
- Toledo: Plaza de Zocodover
- Córdoba: Plaza de las Tendillas
- Palencia: Plaza Mayor
- León: Plaza de San Marcelo
- Bilbo: Plaza del Teatro Arriaga.
- Granada: Fuente de las Batallas
-Málaga: Plaza de la Constitución
-Sevilla: Plaza Nueva
- Valencia: Plaza de San Agustín
- Albacete: Plaza del Altozano
-Lleida: Rectorat ( Universitat de Lleida )
-Palma de Mallorca......
-Mahó.......
-Tarragona.......
-Mataró.........
-

*Si crees que eres libre es que no has volado lo
suficiente como para
encontrarte con tus rejas.
Que se organice de nuevo, todos unidos, espero que los
malditos
politicos se
enteren...

Un domingo

un domingo cualquiera Terrassa - Vacarisses



¿Qué quieres de mayor?

¿Qué quieres ser de mayor? Yo no quiero ser nada

Cada vez que me preguntan qué quiero ser de mayor..todo se complica. Según los mayores, hay que hacerse adulto para entenderlo todo. Pero yo miro a la gente en la calle... y no veo que sean felices. Solo nosotros, los niños, disfrutamos de la vida. Es como si cumplir los 18 todo el mun do perdiera la cabeza. Todo son caras largas, dolidos y malas noticias. Luego en la tv hay que ponerse desodorante, comprarse el coche más rápido ... un par de operaciones de estética, y con esto tienes que estar loco para no ser feliz. Pero para esto hace falta dinero y los adultos hacen lo que sea por el dinero. Fíjate que es el único objetivo de todo el año , conseguir dinero y más dinero. Total día tras día a trabajar, y yo me pregunto, para qué? para conseguir a fin de año 15 días? 15 tristes días de vacaciones? 15 días de donde te vas muy lejos para olvidar el resto de los días que te pasas trabajando? 15 días para no perder ni un segundo, con muchas prisas. 15 días en agosto, en la playa, 15 días como borregos que traen al mundo borreguitos que a su vez tendrán que trabajar el resto de s vida a cambio de los 15 días. Yo no quiero ser nada de mayor...pensándolo biem , yo no quiero crecer, sinceramente ni siquiera quiero ser mayor. Me quedo con Petar Pan, con los inmaduros, con la fantasía, con la reflexión ... con la vida! Así que no me vuelvan a preguntar, qué quiero ser de mayor.


jueves, noviembre 30, 2006

Spam diario en Gmail


Este es el SPAM diario que recibo en un dia cualquiera de la semana en mi cuenta de Gmail (unos 1000 correos electrónicos no deseados). Exceptuando los fines de semana donde se nota bastante que baja el tráfico. Debe ser motivado a que uso el correo electrónico para los registros en blogs y webs varias y que también en esta cuenta tengo redireccionadas varias otras como la de la UAB entre ellas.

La mayoría incluyen un texto en inglés en el que te intentan vender desde todo tipo de medicamentos a ofrecerte trabajo o cuentas de ahorro en no sé qué bancos de no sé dónde.

La cuestion es que el gestor de correo electrónico de Google funciona bastante bien y me los detecta casi todos... aunque de vez en cuando se me cuelan unos 10 al dia en mi Inbox ... así que voy "entrenando" la máquina... I have a dream...

martes, noviembre 28, 2006

Salida a Arenys de Mar - Fotos -

Fotos de la salida a Arenys de Mar

(pincha en las fotos para high-res
1024 - 768 px aptas para fondo de pantalla)

Vista de la zona alta del pueblo un día azul.



El mar en octubre a eso de las 12 del mediodía.


Una palmera... :P

miércoles, noviembre 22, 2006

Terrassa FC 3 - 1 RCD Espanyol B

Terrassa FC 3 - 1 RCD Espanyol B

lunes, noviembre 20, 2006

Barça B 0 - 2 Terrassa FC

Barça B 0 - 2- Terrassa FC

viernes, noviembre 10, 2006

Ventajas de tener un novio friki (geek en inglés)

Ventajas de tener un novio friki (geek en ingles):

1. Los frikis son útiles: pueden arreglar tu ordenador, portátil… Estas habilidades son muy útiles y pueden hacer que tu vida transcurra sin problemas.
2. Son más románticos de lo que se dice. Su idea de romanticismo puede ser hacer una página web sobre ti. Pero, hey, eso dura más tiempo que unas flores y se la puedes enseñar a tus amigas.
3. Tienen cerebros y normalmente tienen mucha educación.
4. Son relativamente de bajo mantenimiento, así que no necesitarás cenas complicadas. Y si no eres buena cocinera, puedes encargar una pizza.
5. No tienes que preocuparte por lo que estará haciendo. Probablemente le encuentres delante de su ordenador.
6. Confían en ti, así que puedes ser tú misma delante de él. ¿Te gusta andar por la casa con una camiseta andrajosa porque es cómoda? A él no le importa. No se mosquean porque no te maquilles o no te quieras molestar en arreglarte el pelo.
7. Te hará brillar donde quiera que vayáis. No importa lo cutre que sea tu sentido del estilo, no importa lo torpes que sean tus habilidades sociales, a su lado serás una estrella de la moda y una elegante diplomática. Hará que causes tan buena impresión, que te enamorarás de ti misma.
8. Si no te interesan las computadoras, televisores y DVD, y no te preocupa ser popular y estar a la moda, ¿qué hay de los últimos chismes tecnológicos? Si decides salir con un friki, serás la orgullosa propietaria de los chismes más novedosos.
9. Tampoco te engañará. Coloca a la mujer más sexy del mundo, pongamos Angelina Jolie, en una habitación con un friki. En el otro rincón de la habitación, coloca el último modelo de algun ordenador. Apuesto a que tu friki preferirá con mucho más jugar con el ordenador que conocer a Angelina Jolie. De hecho, puede que ni la vea si el ordenador está encendido y conectado a Internet. Tendra que mirar su correo electrónico, navegar por la web y poner en su blog que está en una habitación con Angelina Jolie.
10. La razón final es: realmente le importas. No que aspecto tienes (aunque también cuenta), no lo delgada que estás, no con cuanto maquillaje te arreglas, sino que le gustas por ser tu misma.

Artículo original escrito por Nick Denoo bajo la Licencia Creative Commons.

jueves, noviembre 09, 2006

martes, noviembre 07, 2006

Terrassa 2 - Eldenc 0

El Terrassa FC més líder encara després de guanyar per 2 gols a 0 a l'Eldenc

viernes, noviembre 03, 2006

Espinete y don Pimpón chanantes

Espinete y don Pimpón chanantes


jueves, noviembre 02, 2006

Remember Terrassa - Barakaldo ascenso a 2º A

Remember Terrassa - Barakaldo ascenso a 2º A

Golazo de Gibanel



Golazo de Keko



Ascenso!!!

...pegad, violad, acosad, robad pero ¡no se os ocurra usar eMule!

Se trata de aprender a interpretar correctamente el Código Penal siguiendo la lógica aplicada por la industria y que considera que la reproducción, distribución y comunicación pública de obras intelectuales que te den cualquier beneficio o utilidad es delictiva.

Para ello, os recomiendo practicad con este sencillo test, siguiendo la interpretación que hace la industria del artículo 270 del Código Penal.

Por favor, elegid cuál es la acción considerada de mayor gravedad

1. PREGUNTA:
(a) Luis se descarga una canción de Internet.
(b) Luis decide que prefiere el disco original y va a El Corte Inglés a hurtarlo. Una vez allí, y para no dar dos viajes, opta por llevarse toda una discografía. La suma de lo hurtado no supera los 400 euros.

RESPUESTA: La descarga de la canción sería un delito con pena de 6 meses a dos años. El hurto de la discografía en El Corte Inglés ni siquiera sería un delito, sino una simple falta (art. 623.1 del Código Penal).

2. PREGUNTA:
(a) Luis se descarga una canción de Internet.
(b) Luis va a hurtar a El Corte Inglés y, como se la va la mano, se lleva cincuenta compactos, por valor global de 1.000 euros.

RESPUESTA: Seguiría siendo más grave la descarga de Internet. El hurto sería un delito, porque supera los 400 euros, pero sería de menor pena que la descarga (artículo 234 del Código Penal).

3. PREGUNTA:
(a) Sergio, en el pleno uso de sus facultades mentales, se descarga una canción de Malena Gracia.
(b) Sergio, en un descuido de Malena Gracia, se lleva su coche y lo devuelve 40 horas después.

RESPUESTA: Sería más grave la descarga. El hurto de uso de vehículo tiene menos pena, a tenor del artículo 244.1 del Código Penal.

4. PREGUNTA:
(a) Ocho personas se intercambian copias de su música favorita.
(b) Ocho personas participan en una riña tumultuosa utilizando medios o instrumentos que pueden poner en peligro sus vidas o su integridad física.

RESPUESTA: Es menos grave participar en una pelea que participar en el intercambio de compactos. Participar en una riña tumultuosa tiene una pena de tres meses a un año (art. 154 del Código Penal) y el intercambio tendría una pena de 6 meses a 2 años (art. 270 del Código Penal). Si algún día te ves obligado a elegir entre participar en un
intercambio de copias de CDs o participar en una pelea masiva, escoge siempre la segunda opción, que es obviamente menos reprobable.

5. PREGUNTA:
(a) Juan copia la última película de su director favorito de un DVD que le presta su secretaria Susana.
(b) Juan, aprovechando su superioridad jerárquica en el trabajo, acosa sexualmente a Susana.

RESPUESTA: El acoso sexual tendría menos pena según el artículo 184.2 del Código Penal.

6. PREGUNTA:
(a) Pedro y Susana van a un colegio y distribuyen entre los alumnos de preescolar copias de películas educativas de dibujos animados protegidas por copyright y sin autorización de los autores.
(b) Pedro y Susana van a un colegio y distribuyen entre los alumnos de preescolar películas pornográficas protagonizadas y creadas por la pareja.

RESPUESTA: La acción menos grave es la de distribuir material pornográfico a menores según el artículo 186 del Código Penal. La distribución de copias de material con copyright sería un delito al existir un lucro consistente en el ahorro conseguido por eludir el pago de los originales cuyas copias han sido objeto de distribución.

7. PREGUNTA:
(a) Ramón, que es un bromista, le copia a su amigo el último disco de Andy y Lucas, diciéndole que es el "Kill'em All" de Metallica.
b) Ramón, que es un bromista, deja una jeringuilla infectada de SIDA en un parque público.

RESPUESTA: La segunda broma sería menos grave, a tenor del artículo 630 del Código Penal.

8. PREGUNTA:
a) Juan fotocopia una página de un libro.
b) Juan le da un par de puñetazos a su amigo por recomendarle ir a ver la película "Los Ángeles de Charlie".

RESPUESTA: La acción más grave desde un punto de vista penal sería la "a", puesto que la reproducción, incluso parcial, sería un delito con pena de 6 meses a dos años de prisión y multa de 12 a 24 meses. Los puñetazos, si no precisaron una asistencia médica o quirúrgica, serían tan solo una falta en virtud de lo dispuesto en el artículo 617 en relación con el 147 del Código Penal.

Así que ya sabéis: pegad, violad, acosad, robad pero que no se ocurra usar el EMULE!!!

Artículo original escrito por Internautas.

miércoles, noviembre 01, 2006

Práctica de Gráficos por Computador 1

Lo tenía por ahí y antes de que se heche a perder...

#include
#include
#include
#include
#include
#include
#include
#include

/***********************************************/
/* Deficinicio de les estructures del programa */
/***********************************************/
typedef struct Punt { int x,y; } Punt;
typedef struct Poligon { int n,color; Punt *p; } Poligon;
typedef struct Xwindow { int x0,x1,y0,y1; } Xwindow;

typedef struct Pila
{ Punt *p;
struct Pila *anterior;
} Pila;

typedef struct Costat
{ float x, dx;
int ymax;
struct Costat *seg;
} Costat;
/***********************************************/

int llegir_poligon (char *, Poligon *);
void alliberar_poligon(Poligon *);
void llegir_comandes(char *, char *);
void inicialitzar(void);
void finalitzar(void);
int cls(void);

int mode_grafic(void);
int mode_texte(void);

/********************************************************************/
/* PROTOTIPUS DE LES FUNCIONS */
/********************************************************************/

/* Prototipus del retall Sutherland-Hogman */
void retall_SH(int,int,int,int,Poligon *);
void interseccio(Punt *,Punt *,Xwindow *,int);
int dintre(int,int,Xwindow *,int);

/* Llavor millorada (iterativament i amb una pila dinamica) */
void llavor_millorat(int,int,Poligon *,int);
void vei(int *,int,int,int);
void lineas_adjacents(int,int,int,Pila **,int);
Poligon* intercambiar(Poligon** pol);

void Finestra(Xwindow *,int);
void DibuixaPoligon(Poligon *,int);
float pendent(int,int,int,int);

/* Prototipus per a la pila que sutilitza en la llavor millorada */
Pila* Crear_node();
void Push(Pila **,Punt);
Punt Pop(Pila **);

/* Prototipus del algorisme Y-X */

void emplenat_Y_X(Poligon *);
void Y_max_min(int *max,int *min,Poligon *pol);
Costat** crear_TC(Poligon *pol,int max,int min);
void iniciar_a_null(Costat **tabla,unsigned int valor);
Costat* crear_lado(Poligon *pol,unsigned int *vertice,unsigned int *min,long
int *dy);
void guardar_TC(Costat** TC, Costat* lado,unsigned int y_min);
int alliberar_TC(Costat **taula);
void afegir_costats_LCA(Costat* lista,Costat** LCA);
Costat *ordenar_LCA(Costat* llista);
Costat* mezclar_listas(Costat* lista1,Costat* lista2);
int eliminar_lados_LCA(Costat** llista,int y_actual);
void actualizar_LCA(Costat** llista);
void pintar(Costat* lista,int posicion_y);

/* -----------------------------------------------------------------*/


/*************************************************/
/* M A I N */
/*************************************************/

void main(int argc,char *argv[])
{
if(argc!=3)
{
printf("Us: prac \n");
exit(0);
}

inicialitzar();
llegir_comandes(argv[1],argv[2]);
finalitzar();
}

void llegir_comandes(char *nom_fitxer,char *nom_poligon){

FILE *fp;
Poligon pol;
char comanda[256], comentari[256];
int x0, y0, x1, y1, color;

if ((fp=fopen(nom_fitxer,"rt"))==NULL)
{
printf("Error en obrir el fitxer de comandes\n");
getch();
finalitzar();
exit(0);
}

if (strcmp(nom_poligon,""))
{ if (!llegir_poligon(nom_poligon,&pol))
{ printf("Error en obrir el poligon \n");
getch();
finalitzar();
exit(0);
}
}

while (fscanf(fp,"%s",comanda)!=EOF)
{ /* COMANDES GENERALS */

if (strcmp(comanda,"REM")==0) fgets(comentari,256,fp);
else if (strcmp(comanda,"CLS")==0) {cls();}
else if (strcmp(comanda,"PAUSA")==0) {getch();}
else if (strcmp(comanda,"RETALLA")==0)
{ fscanf(fp,"%d",&x0);
fscanf(fp,"%d",&y0);
fscanf(fp,"%d",&x1);
fscanf(fp,"%d",&y1);
retall_SH(x0,y0,x1,y1,&pol);
}

else if (strcmp(comanda,"OMPLE")==0)
{ emplenat_Y_X(&pol);
getch();
cls();
DibuixaPoligon(&pol,4);
}

else if (strcmp(comanda,"LLAVOR")==0)
{ fscanf(fp,"%d",&x0);
fscanf(fp,"%d",&y0);
fscanf(fp,"%d",&color);
llavor_millorat(x0,y0,&pol,color);
getch();
}

/* COMANDO NO RECONOCIDO */
else {printf("comanda: %s no reconeguda\n",comanda);}
} if (strcmp(nom_poligon,"")!=0) alliberar_poligon(&pol);
}

void inicialitzar()
{ if(mode_grafic()==0)
{ printf("Error en inicialitzar");
exit(0);}
}

void finalitzar()
{ if(mode_texte()==0)
{ printf("Error en finalitzar");
exit(0);}
}

int llegir_poligon(char *nom_fitxer, Poligon *pol){

FILE *fitx_in;
int i;

pol->n=0;
pol->color=0;
pol->p=NULL;

fitx_in=fopen(nom_fitxer,"rt");
if(!fitx_in) return 0; /* No s'ha pogut obrir */

if(fscanf(fitx_in,"%d",&pol->n)!=1){
pol->n=0;
fclose(fitx_in);
return 0;
} /* No pot llegir */

/*Reserva de memoria pels punts del poligon*/
pol->p=(Punt *)malloc(sizeof(Punt)*pol->n);

if(!pol->p){

pol->n=0;
fclose(fitx_in);
return 0;
} /* No es pot aconseguir memoria */

for(i=0;in;i++) {
if(fscanf(fitx_in,"%d %d",&(pol->p[i].x),&(pol->p[i].y))!=2){
pol->n=0;
free(pol->p);
pol->p=NULL;
fclose(fitx_in);
return 0;
}
}
return 1;
}

void alliberar_poligon(Poligon *pol)
{

if( (pol->p) != NULL )
{
free(pol->p);
pol->p=NULL;
pol->color=NULL;
pol->n=0;
}
}

int cls()
{ cleardevice();
return 1;
}

int mode_grafic()
{ int gdriver=DETECT,gmode,errorcode;

initgraph(&gdriver,&gmode,"h:\\");
errorcode=graphresult();
if (errorcode!=grOk)
{ printf("Error: %s\n",grapherrormsg(errorcode));
printf("Prem una tecla per continuar");
getch();
return 0;
}
return 1;
}

int mode_texte(){
closegraph();
return 1;
}

/*********************************************************/
/* Nomes incloure codi a partir d'aquest punt */
/*********************************************************/

void retall_SH(int x0,int y0,int x1,int y1,Poligon *pol)
{
int vertex,recta,anterior,actual,last,i;
Poligon tmp;
Xwindow window1;
Punt s;

if (pol->n==0){/*Es por si nos pasa un poligono vacio*/
printf("Poligon inexistent");
exit(1);
}
tmp.p=(Punt *)malloc( sizeof(Punt) * 2 * (pol->n) );
if( (tmp.p) == NULL) {printf("RAM1 out");exit(0);}
tmp.n=0;
tmp.color=0;

window1.x0 = x0;
window1.x1 = x1;
window1.y0 = y0;
window1.y1 = y1;

DibuixaPoligon(pol,6);
Finestra(&window1,2);

for(recta=0;recta<4;recta++)
{
last=0;
s=(pol->p[(pol->n)-1]);
for(vertex=0;vertexn;vertex++)
{
anterior=dintre(s.x,s.y,&window1,recta);
actual=dintre(pol->p[vertex].x,pol->p[vertex].y,&window1,recta);

if (anterior==1 && actual==1) /*s i p a dintre => fikar p a tmp*/
{
tmp.p[last].x=pol->p[vertex].x;
tmp.p[last].y=pol->p[vertex].y;
last++;
}

else if(anterior==1 && actual==0) /*s->adintre i p->afora => interseccio
a tmp*/
{ interseccio(&s,&pol->p[vertex],&window1,recta);
tmp.p[last].x=s.x;
tmp.p[last].y=s.y;
last++;
}

else if(anterior==0 && actual==1) /*s->afora i p->adintre =>
interseccion i p a tmp*/
{
interseccio(&s,&pol->p[vertex],&window1,recta);
tmp.p[last].x=s.x;
tmp.p[last].y=s.y;
last++;
tmp.p[last].x=pol->p[vertex].x;
tmp.p[last].y=pol->p[vertex].y;
last++;
}
s=(pol->p[vertex]);
}
alliberar_poligon(pol);
if (last==0){/*Es por si al recortar da un poligono vacio*/
printf("Poligon inexistent");
exit(1);
}
pol->p=(Punt *)malloc(sizeof(Punt)*(last) );
if(pol->p==NULL) {printf("RAM2 out");exit(0);}
pol->n=last;
pol->color=tmp.color;
for(i=0;in;i++)
{ pol->p[i].x=tmp.p[i].x;
pol->p[i].y=tmp.p[i].y;
}

}
alliberar_poligon(&tmp);
DibuixaPoligon(pol,4);
getch();
cleardevice();
DibuixaPoligon(pol,4);
getch();
}

float pendent(int s0,int s1,int p0,int p1)
{
if(s0==p0) return(0);
else return( (float)(s1-p1) / (float)(s0-p0) );
}


void llavor_millorat(int x0,int y0,Poligon * pol,int color)
{
int cont_e,cont_d,color_ini;
Punt *s=NULL;
Pila *stack=NULL;

s=(Punt *)malloc(sizeof(Punt));
s->x=x0;
s->y=y0;

color_ini=getpixel(x0,y0);
DibuixaPoligon(pol,4);
setcolor(color);
Push(&stack,*s);

while(stack!=NULL)
{ *s=Pop(&stack);
cont_e=s->x; cont_d=s->x;

vei(&cont_e,s->y,color_ini,-1);
vei(&cont_d,s->y,color_ini,1);
line(cont_e,s->y,cont_d,s->y);
if( (s->y>=0) && (s->y<=getmaxy()) ){
lineas_adjacents(cont_e,cont_d,(s->y)-1,&stack,color_ini);
lineas_adjacents(cont_e,cont_d,(s->y)+1,&stack,color_ini);
}
}
free(s);
}

void lineas_adjacents(int xe,int xd,int y,Pila **stack,int color)
{
int out,axx,ayy;
Punt tmp;

out=xe;
while(out<=xd)
{ getpixel(out,y);
if( getpixel(out,y)==color )
{ vei(&out,y,color,1);
tmp.x = out;
tmp.y = y;
Push(&(*stack),tmp);
out++;
} else out++;
}
}

void Finestra(Xwindow *wind,int color)
{
setcolor(color);
rectangle(wind->x0,wind->y0,wind->x1,wind->y1);
}

void DibuixaPoligon(Poligon *poli,int color)
{
int tmp,tmp2;

tmp2=getcolor();
setcolor(color);
for(tmp=0;tmp<(poli->n)-1;tmp++)
line(poli->p[tmp].x,poli->p[tmp].y,poli->p[tmp+1].x,poli->p[tmp+1].y);
line(
poli->p[(poli->n)-1].x,poli->p[(poli->n)-1].y,poli->p[0].x,poli->p[0].y);
setcolor(tmp2);
}

int dintre (int x0,int y0,Xwindow *fines,int codig)
{ /* 0=arriba 1=derecha 2=abajo 3=izquierda */

if(codig==0)
{ if ( (y0) > (fines->y0) ) return 1;
else return 0;}

if(codig==1)
{ if ( (x0) < (fines->x1) ) return 1;
else return 0;}

if(codig==2)
{ if ( (y0) < (fines->y1) ) return 1;
else return 0;}

if(codig==3)
{ if ( (x0) > (fines->x0) ) return 1;
else return 0;}
return 0;
}

Pila* Crear_node()
{
Pila *aux=(Pila *)malloc(sizeof(Pila));
if(aux==NULL)
{ printf("No hi ha memoria RAM lliure disponible...\n");
getche();
exit(1);
}
return aux;
}

void Push(Pila **cab,Punt s)
{
Pila *aux=Crear_node();
aux->p->x=s.x;
aux->p->y=s.y;

if(cab==NULL) aux->anterior=NULL;
else
{ aux->anterior=*cab;
*cab=aux;}
}

Punt Pop(Pila **cab)
{
Pila *aux;
Punt s;
//s=(Punt *)malloc(sizeof(Punt));

if(*cab==NULL)
printf("Error: pila buida\n");
else
{ aux=*cab;
*cab=(*cab)->anterior;
s.x=aux->p->x;
s.y=aux->p->y;
free(aux);
}

return s;
}

void interseccio(Punt *s, Punt *p, Xwindow *wind,int recta)
{
float x_one=0, y_one=0;
Punt *intersec;

if(recta==0)
//calcula_int();
{ if(s->x==p->x)
{ x_one = p->x;
y_one = wind->y0;
}
else
{ x_one = p->x + (float)(wind->y0 - p->y) * pendent(s->y,s->x,p->y,p->x);
y_one = wind->y0;
}
}

if(recta==1)
{ y_one = p->y + (float)(wind->x1 - p->x) * pendent(s->x,s->y,p->x,p->y);
x_one = wind->x1;
}

if(recta==2)
{ if(s->x==p->x)
{ x_one = p->x;
y_one = wind->y1;
}
else
{ x_one = p->x + (float)(wind->y1 - p->y) * pendent(s->y,s->x,p->y,p->x);
y_one = wind->y1;
}
}

if(recta==3)
{ y_one = p->y + (float)(wind->x0 - p->x) * pendent(s->x,s->y,p->x,p->y);
x_one = wind->x0;
}

s->x=(int)(x_one+0.5);
s->y=(int)(y_one+0.5);


}

void vei(int *x,int y,int color_a,int suma)
{ while( (getpixel(*x,y)==color_a)&&((*x)<=getmaxx())&&((*x)>=0) )
{ (*x)=(*x)+suma; }
(*x)=(*x)-suma;
}

void emplenat_Y_X(Poligon * pol){
Costat **TC,*LCA=NULL,*aux;
int y_max=0,y_min=getmaxy(),i,out=0;

DibuixaPoligon(pol,1);
setcolor(14);
Y_max_min(&y_max, &y_min, pol);
TC=crear_TC(pol,y_max,y_min);
for(i=0;i {
if(TC[i])
afegir_costats_LCA(TC[i],&LCA);
/* if((i)==190){
aux=LCA;
while(aux){
printf(" %f %f %d\n",aux->x,aux->dx,aux->ymax);
aux=aux->seg;
}
printf("\n");
}*/
LCA=ordenar_LCA(LCA);
/* if((i)==190){
aux=LCA;
while(aux){
printf(" %f %f %d\n",aux->x,aux->dx,aux->ymax);
aux=aux->seg;
}
printf("\n");
}*/
pintar(LCA,i+y_min);
do{
out=eliminar_lados_LCA(&LCA,i+y_min);
}while(out);
/* if((i)==189){
aux=LCA;
while(aux){
printf(" %f %f %d\n",aux->x,aux->dx,aux->ymax);
aux=aux->seg;
}
printf("\n");
}*/
actualizar_LCA(&LCA);
}
if(!alliberar_TC(TC))
printf("Error al liberar la TC");
}

void afegir_costats_LCA(Costat* lista,Costat** LCA){
Costat *auxiliar=*LCA;


if(*LCA){/*La LCA tiene como minimo un campo*/
while(auxiliar->seg) auxiliar=auxiliar->seg;
auxiliar->seg=lista;
}else/*La LCA esta a vacia*/
*LCA=lista;

}

Costat *ordenar_LCA(Costat *llista){
Costat *llista1, *llista2;

if (!(llista->seg) || !(llista))
return llista;
llista1 = llista;
llista2 = llista1->seg->seg;
while (llista2 && llista2->seg ) {
llista1 = llista1->seg;
llista2 = llista2->seg->seg;
}
llista2 = llista1->seg;
llista1->seg = NULL;
llista1 =ordenar_LCA(llista);
llista2 =ordenar_LCA(llista2);
llista = mezclar_listas(llista1, llista2);
return llista;
}

Costat* mezclar_listas(Costat* lista1,Costat* lista2){
Costat *lista, *auxiliar;

if (lista1->x > lista2->x){
lista= lista2;
lista2 = lista2->seg;
}else{
lista = lista1;
lista1 = lista1->seg;
}
auxiliar = lista;
while (lista1 && lista2) {
if (lista1->x > lista2->x) {
auxiliar->seg = lista2;
lista2 = lista2->seg;
}else {
auxiliar->seg = lista1;
lista1 = lista1->seg;
}
auxiliar = auxiliar->seg;
}
if (lista1)
auxiliar->seg = lista1;
else if (lista2)
auxiliar->seg = lista2;

return lista;
}

int eliminar_lados_LCA(Costat** llista,int y_actual){
Costat* auxiliar=*llista,*temporal;
int salida=0;

if(auxiliar->ymax<=y_actual){
temporal=*llista;
(*llista)=(*llista)->seg;
free(temporal);
salida=1;
}else{
while(auxiliar){
if(auxiliar->seg->ymax<=y_actual){
temporal=auxiliar->seg;
if(auxiliar->seg->seg)
auxiliar->seg=auxiliar->seg->seg;
else
auxiliar->seg=NULL;
free(temporal);
salida=1;
}
auxiliar=auxiliar->seg;
}
}
return(salida);
}
void actualizar_LCA(Costat** llista){
Costat *auxiliar=*llista;

while(auxiliar){
auxiliar->x+=auxiliar->dx;
auxiliar=auxiliar->seg;
}
}

void pintar(Costat* lista,int posicion_y){
Costat *auxiliar=lista;
while(auxiliar){
line((int)(auxiliar->x+0.5),(int)(posicion_y+0.5),(int)(auxiliar->seg->x+0.5),(int)(posicion_y+0.5));
auxiliar=auxiliar->seg->seg;
}
}

void Y_max_min(int *max,int *min,Poligon *pol){
int cont;

*max=0;
*min=getmaxy();

for(cont=0;contn;cont++){
if( *max <>p[cont].y){/*Saca la y maxima del poligon*/
*max=pol->p[cont].y;
}
if(*min>pol->p[cont].y){/*Saca la y minima del poligon*/
*min=pol->p[cont].y;
}
}
}

Costat** crear_TC(Poligon *pol,int max,int min){
Costat **taula;
Costat *A,*B,*inicio;
unsigned int y_min_lado,vertex=1;
long int dyA,dyB,dyI;

taula= (Costat**) malloc(sizeof(Costat*) * (max-min));
iniciar_a_null(taula,max-min);
A=crear_lado(pol, &vertex, &y_min_lado, &dyA);
inicio=crear_lado(pol, &vertex, &y_min_lado, &dyI);
guardar_TC(taula, A, y_min_lado-min);
vertex++;
while((vertex<=pol->n) && (B=crear_lado(pol, &vertex, &y_min_lado, &dyB))){
if(dyB * dyA>=0){/*Mismo signo, sacamos un punto a B*/
if(dyB>0){/*Baja*/
y_min_lado++;
(B->x)+=(B->dx);
}else{/*Sube*/
(B->ymax)--;
}
}
if(vertex==pol->n){
if(dyB * dyI>=0){/*Mismo signo, sacamos un punto a B*/
if(dyI>0){/*Baja*/
(B->ymax)--;
}else{/*Sube*/
y_min_lado++;
(B->x)+=(B->dx);
}
}
}
guardar_TC(taula,B,y_min_lado-min);
dyA=dyB;
A=B;
vertex++;
}
if (inicio)
free(inicio);
return(taula);
}
void iniciar_a_null(Costat **tabla,unsigned int valor)
{ unsigned int cont=0;
for(cont=0;cont /*Recorremos toda la TC poniendo sus punteros a NULL*/

}

Costat* crear_lado(Poligon *pol,unsigned int *vertice,unsigned int *min,long
int *dy){

Costat *lado;
float m;

if(*verticen){/*Del 1er vertice al penultimo*/
m=pendent(pol->p[*vertice].x,pol->p[*vertice].y,pol->p[*vertice-1].x,pol->p[*vertice-1].y);
if(pol->p[*vertice-1].y!=pol->p[*vertice].y){/*Mira si es horizontal*/
lado=(Costat*) malloc(sizeof(Costat));
lado->seg=NULL;
if(m==0)
lado->dx=0;
else
lado->dx=1.0/m;
if(pol->p[*vertice-1].yp[*vertice].y){/*Baja*/
lado->x=pol->p[*vertice-1].x;
lado->ymax=pol->p[*vertice].y;
*min=pol->p[*vertice-1].y;
}else{/*Sube*/
lado->x=pol->p[*vertice].x;
lado->ymax=pol->p[*vertice-1].y;
*min=pol->p[*vertice].y;
}
*dy=(pol->p[*vertice].y)-(pol->p[*vertice-1].y);
}else{/*Es horizontal*/
(*vertice)++;
lado=crear_lado(pol,vertice,min,dy);

}

}else{/*El ultimo vertice es pasado de parametro*/
m=pendent(pol->p[0].x,pol->p[0].y,pol->p[*vertice-1].x,pol->p[*vertice-1].y);
if(pol->p[*vertice-1].y!=pol->p[0].y){/*Para saber si es horizontal*/
lado=(Costat*) malloc(sizeof(Costat));
lado->seg=NULL;
if(m==0)
lado->dx=0;
else
lado->dx=1.0/m;
if(pol->p[*vertice-1].yp[0].y){/*Baja*/
lado->x=pol->p[*vertice-1].x;
lado->ymax=pol->p[0].y;
*min=pol->p[*vertice-1].y;
}else{/*Sube*/
lado->x=pol->p[0].x;
lado->ymax=pol->p[*vertice-1].y;
*min=pol->p[0].y;
}
*dy=(pol->p[0].y)-(pol->p[*vertice-1].y);
}else lado=NULL; /*Es horizontal y es el ultimo lado*/

}
return(lado);
}

void guardar_TC(Costat** TC, Costat* lado,unsigned int y_min){
Costat* aux=NULL;
if(!(TC[y_min])){/*La lista de este punto esta vacia*/
TC[y_min]=lado;
}else{/*La lista de este punto tiene como minimo un lado*/
aux=TC[y_min];
while(aux->seg){
aux=aux->seg;
}
aux->seg=lado;
}
}
int alliberar_TC(Costat ** taula){
if (taula)
free(taula);
return(1);
}

lunes, octubre 30, 2006

El Terrassa guanya a Vilajoiosa i torna a ser líder

Desperés de guanyar per 1 gol a 3 al Vilajoiosa el Terrassa FC torna a ser líder en solitari de la categoria.


jueves, octubre 26, 2006

Dragones y Mazmorras

Dragones y Mazmorras

jueves, octubre 19, 2006

Terrassa FC - Un Passat d'Èxit

El mejor vídeo del Terrassa FC de todos

Goles al Madrid, al Barça ... al Zaragoza... el penalti que le paramos al Barça y que nos dio la Copa Catalunya ..!!!!!!