Obtención de la Triesfera Interior de Máximo Volumen.
Irbl6 Obtención de la Triesfera Interior de Máximo Volumen. Irbl6

En la segunda parte del proyecto se pretende encontrar la triesfera que teniendo volumen máximo, no envuelva a ningún punto del objeto modelado.

El proceso es similar al seguido anteriormente para el cálculo de la triesfera de mínimo volumen exterior, por lo que se tratarán aquí los aspectos diferentes con el anterior y se hará referencia a los ya expuestos cuando sea necesario.

El punto de partida es el mismo que en el otro caso, es decir, el conjunto de puntos 3D que definen el objeto.

A continuación se calcula la posición de la triesfera inicial P0 y 9 posiciones más como se explicó anteriormente.

El Downhill Simplex, en este caso, maximizará la función que tiene que evaluar. Dicha función es, también, una llamada al nivel inferior que computará los radios que hagan máximo el volumen engendrado por la triesfera.

El nivel inferior lo podemos considerar dividido en 2 partes. La primera dedicada a la transformación de los pi en los li1, li2, y di. Y la segunda que, con esa información, obtiene los radios.

La primera parte es casi idéntica a la vista anteriormente, sus únicas diferencias son:

  • Las restricciones impuestas ahora por los OWP serán radios máximos que no envuelven a los citados OWP. Dichos radios máximos se nombran con d0max, d1max y d2max y corresponden a las siguiente expresiones

Nótese que algún conjunto OWP puede estar vacío y, por lo tanto, carecer de significado su correspondiente dimax.

La segunda parte es radicalmente diferente en su tratamiento, que no en su concepto. Aquí se descarta la utilización del Golden-Ratio basándonos en la siguiente observación:

  • Dado que la función volumen de la triesfera presenta sus máximos locales en los puntos de corte de las rectas de Hough que pertenecen al MXVL, es decir, en los cambios de recta que se producen al recorrer el lugar. Es allí donde deberemos buscar el máximo global. No siendo necesario, por tanto, recorrer todo el lugar. Consideraremos, entonces, únicamente los citados puntos de corte.

Figura 21 Evaluación de la función volumen en un MXVL.

La determinación del intervalo de búsqueda, puntos A y B, inicio y final del intervalo respectivamente, vendrá determinada por la existencia o no de las restricciones d0max, d1max y d2max. El procedimiento a seguir es el que a continuación se indica:

  • Determinación de A=(A.r0,A.r1,A.r2).

Si el conjunto implica que existe d1max, entonces, si existen rectas 01 de Hough, se calcularán A.r0 y A.r1 como sigue

( 6 )

Dado que las rectas están ordenadas de menor a mayor bi, será la primera recta de esta lista la que tenga el bi mínimo. El valor de A.r0 dependerá del valor que haya tomado A.r1, así

  • Si A.r1=min{bi}, entonces A.r0=0
  • Si A.r1=d1max, A.r0 se obtiene a partir de la recta que menor punto de corte dé con el eje r1=d1max.

( 7 )

El A.r0 obtenido debe cumplir que si . Si esto no se cumple, el MXVL 01 consistiría en un sólo punto (d0max,d1max) y podríamos eliminar todas las rectas 01 de Hough, fijando el r1 a d1max. Por el contrario, si se cumple lo anterior, podemos eliminar de la lista las rectas que tengan un bi menor que el de la recta que satisfizo ( 7 ), ya que dichas rectas no aparecerán en el MXVL.

Si no existieran rectas 01, las únicas restricciones las impondrían d0max y d1max, en el caso de que ellos también existan.

Si , entonces directamente y si existen rectas 01

en caso de no existir rectas 01, estaríamos, como en el caso anterior, con las únicas restricciones impuestas por d0max y d1max. De ahora en adelante, siempre que no existan rectas 01 y/o 02 de Hough, se fijarán los radios r1 a d1max y/o r2 a d2max respectivamente, por lo que no se comentará más este detalle.

Ahora se procede de forma análoga en el MXVL 02, es decir, la forma de obtener A’.r0 y A.r2 es idéntica en la forma, si más que cambiar los r1 por r2 y el d1max por d2max, además, las rectas 01 de entonces serán ahora las rectas 02.

Tenemos dos puntos A (A.r0 y A’.r0), nos quedamos con el mayor r0. Y si el mayor lo dio el MXVL 01 calculo A.r2, pero si el mayor lo dio el MXVL 02 calcularemos A.r1 y con ello queda completamente definido el punto A.

  • Determinación de B=(B.r0,B.r1,B.r2).

Buscamos B en el MXVL 01 de la siguiente forma:

Si implica la existencia de d0max, entonces si hay rectas 01

donde es el punto de corte de las rectas con el eje r1 = 0. B.r1 dependerá del valor que haya tomado B.r0. Así

  • Si B.r0=d0max, B.r1 se obtendrá de la recta con menor punto de corte para r0=d0max.

( 8 )

el r1 obtenido deberá cumplir que si . Si no se cumple, el lugar queda reducido a un único punto (d0max,d1max) y, por tanto, se pueden eliminar todas las rectas 01 fijando el r1 a d1max. Por el contrario, si se cumple lo anterior, podremos eliminar del conjunto de rectas, aquellas cuya bi sea superior a la bi de la recta que satisfizo ( 8 ).

  • Si
, entonces B.r1 = 0. Además, se pueden eliminar del conjunto de rectas, aquellas cuya bi sea superior a la bi de la recta que dio el mínimo.

Si , directamente y si existen rectas 01

y se eliminan las rectas cuya bi sea mayor que la bi de la recta que dio el mínimo.

Igual que en la búsqueda de A, ahora se procede a buscar el punto B en el MXVL 02, con los cambios que vimos anteriormente. De los dos B encontrados nos quedaremos con el menor. Si éste fue el perteneciente al MXVL 01, calcularemos B.r2, si lo fue el del MXVL 02, calcularemos B.r1 y dispondremos ya del punto B completamente definido.

 

Figura 22 Determinación del intervalo [A,B] en función de la existencia o no de d0max y d1max.

Falta una última consideración. Es posible que los intervalos [A,B] calculados para los dos lugares, no se solapen, es decir, que el punto B.r0 de uno de ellos sea inferior al punto A.r0 del otro. Si este fuera el caso, nos quedaríamos con el intervalo que recorre los menores r0 y fijaríamos el otro radio (r1 ó r2 según el caso) a dimax convenientemente. En la Figura 23 se ha representado esta situación superponiendo el MXVL 01 y 02 para poder apreciar el NO-SOLAPAMIENTO de los intervalos.

Figura 23 NO-SOLAPAMIENTO de los intervalos [A,B] del MXVL 01 y 02.

Ahora que tenemos plenamente identificado el intervalo de búsqueda [A,B], debemos comprobar los radios r2 de ambos puntos en el MXVL 12, quedándonos con el que sea menor, en ambos casos.

En este momento estamos en condiciones de iniciar la búsqueda. Si A=B, calculamos el área de la triesfera en ese punto y acabamos devolviendo estos valores al nivel superior. Si A es distinto de B, lo primero que hacemos es calcular el área en A y luego en B y guardamos el que haya obtenido la mayor. Se entra ahora en un bucle que consiste en buscar en el MXVL que corresponda (01 y/ó 02) el siguiente cruce de la 1ª recta de la lista con las pertenecientes al lugar. Dicho cruce debe cumplir que su r0 sea mayor que el r0 del cruce anterior y menor que B.r0. Pues bien, en todo momento tendremos dos cruces a considerar, cada uno correspondiente a uno de los lugares de búsqueda, consideramos el menor y guardamos el otro (con lo que no habrá que buscar en ése lugar en la próxima iteración). Si el menor lo dio el MXVL 01, calcularemos el r2 correspondiente y evaluaremos el área en ese punto, quedándonos con la mayor hasta el momento. Si el menor lo dio el MXVL 02, calcularemos el r1 que nos falta y procederemos a calcular el área en ese punto guardando la mayor. Hay que tener en cuenta que, antes de calcular el área, se debe comprobar el r2 en el MXVL 12 y rectificarlo si es necesario, quedándonos con el menor.

El algoritmo seguirá iterando hasta que se alcance el punto B en los dos lugares, es decir, si en uno de los lugares llegamos a B y no en el otro, el bucle continúa buscando cruces en ése lugar hasta alcanzar B. También hay que decir que al bucle se entra si existen, al menos, rectas de algún tipo (01 ó 02).

Manteniendo la coherencia en el tratamiento de las biesferas NO válidas que se producen, la función que calcula su área devolverá esta vez, en esos casos, la mitad del área de la circunferencia de radio menor, para obligar así al Downhill Simplex a rectificar la posición.

He dejado para el final una última consideración a tener muy en cuenta, dada su importancia. Comenté antes que el máximo volumen se encontraba únicamente en los cambios de recta del MXVL. Esto no es del todo cierto. Como hemos visto, los radios r2 pueden verse rectificados al comprobarlos en el MXVL 12. Analizando este asunto, se comprueba que como empezamos con valores para r0 pequeños, ello implica que se obtengan r1 y r2 grandes. Al trasladar esto al lugar 12, un r1 grande implica un r2 pequeño y, por tanto, como nos quedamos con el menor, el r2 será rectificado. Esto es así hasta que llegado a un punto el r2 se deja de rectificar.

Pues bien, es en ése punto, donde se puede encontrar el máximo de la función volumen, luego habrá que determinar su posición. Para ello se anota el valor del r0 donde se rectificó por última vez y que llamaremos r0último cambio y el del r0 en donde ya no se rectifica que llamaremos r0no rectifica. Es evidente que el r0 buscado estará en el intervalo ]r0último cambio, r0no rectifica[. Para su obtención sabemos que en dicho punto se cumple que

despejando r2 en la última ecuación y r1 en la primera. Sustituyendo estos valores en la segunda y operando se llega a

que es, precisamente, el punto buscado.

Hay que destacar dos casos particulares que se pueden presentar. Son los casos en los que alguna de las listas de rectas 01 ó 02 está vacía. En estos casos se procede así:

  • Rectas 01 vacía.

r1 = d1max

r2 = mínimo punto de corte de las rectas 12 con el eje r1 = d1max

r0 = El correspondiente en el MXVL 02 al r2 calculado.

  • Rectas 02 vacía.

r1 = mínimo punto de corte de las rectas 12 con el eje r2=d2max

r2 = d2max

r0 = El correspondiente en el MXVL 01 al r1 calculado.

Dichos radios serían el punto en donde se deja de rectificar en esos casos.


Página anterior Volver al principio Página siguiente
.