• No results found

Current Industrial Perception of Last Planner System and Collaborative Planning in the UK

Distribution of interviewee across the case studies

6.2 Phase 2: Semi-Structured Interviews

6.2.4 Current Industrial Perception of Last Planner System and Collaborative Planning in the UK

1: si costeSolapamiento == numeroMuyGrande entonces 2: devolver numeroMuyGrande

3: si no

4: devolver (costeEquilibrio * factorEquilibrio) + (costeAlineacion * factorAlineacion)

5: fin si

En la versi´on final de Gaudii se ha otorgado un 70 % de importancia al coste por alineaci´on y un 30 % al coste por equilibrio. A continuaci´on explicaremos con mayor detalle estas dos funciones.

Coste de equilibrio

Para calcular el equilibrio de un dise˜no, al que tambi´en podemos referirnos como equi- librio visual, consideramos que cada elemento en el plano del dise˜no tiene un determinado peso visual, y lo que se pretende es distribuir los pesos de los elementos de forma que el cen- troide resultante del pol´ıgono de los puntos medios de los grupos est´e lo m´as cercano posible al centro del dise˜no (Figura 4.13). La distancia de este centroide respeto al centro del espacio en blanco se normalizar´a con la m´axima distancia posible en el espacio libre. Cuanto m´as cerca est´e el centroide del centro, mejor ser´a la soluci´on.

Para conocer el valor del centroide utilizamos la f´ormula de calcular ´estos en geometr´ıa, cambiando las x en el caso de querer calcular las ordenadas.

C =

P

x1∗ p1+ x2∗ p2+ x3∗ p3+ ... + xk∗ pk

P

p1+ p2+ p3+ ... + pk

El peso visual de cada grupo, px, se calcula dependiendo de su tama˜no y de los elementos

Título

Texto

Texto Texto

Figura 4.13: Ejemplo de calculo del centroide en funci´on del peso visual de cada elemento.

cerca por el t´ıtulo del cartel. El resto de elementos (subtitulo, texto destacado, texto normal y notas) le siguen de forma decreciente.

Esta funci´on del coste de equilibrio es muy importante para que los elementos consigan no solo colocarse, sino que adem´as lo hagan consiguiendo una composici´on arm´onica desde el punto de vista gr´afico.

Coste de alineaci´on

Utilizando ´unicamente la funci´on de coste de equilibrio, los elementos se colocan de una forma visualmente atractiva, pero sin ning´un tipo de orden visual. La funci´on de coste de alineaci´on suple esta carencia, puesto que obliga a los elementos a colocarse respecto a ciertos ejes viuales para obtener un mejor coste.

Esta funci´on se basa en uno de los principios C.R.A.P., concretamente en el de Alinea- miento, que especificaba que hay que tratar de colocar los elementos en la misma alineaci´on para conseguir una conexi´on visual entre ellos.

respecto a ciertas lineas de alineamiento, y se le da un valor dependiendo de como de buena sea esta alineaci´on. Las lineas de alineamiento son las propias de cada grupo, los m´argenes generados y las del punto de inter´es de la imagen.

Cada grupo de textos comienza con un determinado coste, y este se va restando en funci´on de lo bueno que sea su alineamiento. Las mejores posiciones que puede tener un grupo de textos son, de mejor a peor:

1. Alignment Complete Great: En este alineamiento, el grupo de textos est´a alineado, tanto en el eje X como en el Y, con los m´argenes y con al menos otro grupo de textos.

2. Alignment Complete Good: Este indica que el grupo se ha alineado correctamente con los m´argenes del cartel, tanto eje X como Y, pero no con ning´un otro objeto.

3. Alignment Complete Poor: El grupo de textos se ha alineado con alg´un otro objeto, pero ambos est´an lejos de los m´argenes del documento.

4. Alignment Halfway: Aqu´ı indica que el grupo est´a alineado con alg´un margen o grupo, pero solo en alguno de los ejes. La resta al coste es menor en este caso, pero al acercarse a una soluci´on ideal se le premia.

Adem´as de estas posible soluciones, estar alineado con los m´argenes o con el punto de inter´es de la imagen todav´ıa sigue restando m´as al coste inicial de cada grupo. Al final, todos los costes individuales se suman y se divide entre el m´aximo posible, de forma que se obtiene el coste normalizado.

4.3.3.4. Otras funciones de ordenaci´on de elementos

Se ha visto que en el algoritmo de Enfriamiento Simulado que existe una funci´on desti- nada a aumentar el tama˜no del lienzo en caso de que los textos no quepan en el espacio libre asignado. Esto solo funciona, por razones evidentes, en los casos que la imagen principal no ocupaba el fondo del cartel en su totalidad. Para estos ´ultimos casos no se puede ampliar el ta- ma˜no del lienzo, por lo que se ha optado por crear una funci´on que compruebe la disposici´on de los elementos y que reduzca el tama˜no de las fuentes si es necesario.

El subm´odulo en C no dispone de la informaci´on necesaria para acometer esta tarea, puesto que, por un lado, la funci´on que calcula las dimensiones de los textos pertenece a RMagick, y por otro, a ese m´odulo no se le pasa toda esa cantidad de informaci´on por la l´ınea de argumentos. La soluci´on es que el m´odulo de C devuelva la cadena no solo con la posici´on de los elementos, sino tambi´en con el coste final de esa soluci´on. De ser mayor que 1.0, se entiende que no ha encontrado el espacio porque no hab´ıa, por lo que se reduce el tama˜no de las fuentes, se recalculan los tama˜nos y se vuelve a llamar al m´odulo de distribuci´on de elementos. Esto se hace hasta tres veces; en caso de que tras tres intentos los textos no quepan, se devolver´a la ´ultima soluci´on encontrada.

Antes de procesar la posici´on de los grupos de textos que nos ha devuelto el m´odulo, la funci´on cut white space edges comprueba la posici´on de los grupos y elimina el posible espacio sobrante en alguno de los bordes (Figura 4.14)

Titulo Textos 1 Textos 2 Titulo Textos 1 Textos 2 cut_white_space_edges

Figura 4.14: Esta funci´on elimina el espacio blanco restante en los bordes.

Por ´ultimo, un bucle recorre los grupos del dise˜no para generar la posici´on de los items de cada grupo. La funci´on a la que llama cada grupo es process texts position; la posici´on x de cada item ser´a la misma que la del grupo, mientras que la del eje y ir´a varian- do respecto a la altura de cada item. Como se vio en el calcul´o del tama˜no de los grupos, cada grupo guarda un array con la altura de todos sus elementos, por lo que simplemente va sum´andolas.

4.4.

Etapa de Composici´on

Durante esta etapa se recogen todos los objetos generados en la anterior etapa y se pro- cesan para crear el archivo de salida al usuario. Por tanto, el ´unico objetivo de esta etapa es procesar los datos creados durante las anteriores etapas, crear un archivo de salida para el usuario y devolver al proceso principal la ruta de este archivo.

Los objetos generados anteriormente tienen la suficiente informaci´on como para poder ser enviados a distintos compositores, por lo que esta etapa del proceso es totalmente indepen- diente y pueden usarse distintas herramientas para la generaci´on de los carteles.

Compositor

create_png(design : Design) : Array get_number(number : int) : String add_text(item : Letters) : void

add_piscture(item : DesignImage) : void sketch : Image

design : Design

Figura 4.15: Clase Compositor.

En una primera versi´on de Gaudii, el compositor se implement´o utilizando Processing, un lenguaje de programaci´on de c´odigo abierto basado en Java. Debido a problemas de eficien- cia, en la versi´on final de Gaudii se ha implementado utilizando ImageMagick y su interfaz para Ruby, RMagick. En cualquier caso, y como se ha dicho ya, cualquier compositor podr´ıa utilizarse.

El m´etodo principal de la clase Compositor (Figura 4.15) es create png, que recibe el objeto Design y procesa la informaci´on para crear el archivo de imagen del dise˜no. El pseudoc´odigo del proceso completo puede verse en el Algoritmo 8.

Primero se crea un objeto de la clase Image, de la librer´ıa de ImageMagick, especific´ando- le las dimensiones que se establecieron en la generaci´on de los elementos del dise˜no. En este objeto, la variable sketch, insertaremos las im´agenes y textos generados. El primero de es-