<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ubicuos.com &#187; Ciencia</title>
	<atom:link href="http://www.ubicuos.com/temas/ciencia/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ubicuos.com</link>
	<description>Tecnología,Programación, Proyectos, Ciencia y Empresas</description>
	<lastBuildDate>Tue, 06 Sep 2011 01:01:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Algoritmos Genéticos</title>
		<link>http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/</link>
		<comments>http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 01:00:46 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Cómputo Evolutivo]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Algoritmos geneticos]]></category>
		<category><![CDATA[computo evolutivo]]></category>
		<category><![CDATA[inteligencia articial]]></category>
		<category><![CDATA[optimizacion]]></category>
		<category><![CDATA[optimizacion numerica]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2805</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Como estudiante de Ingeniería en Sistema Computacionales he encontrado una gran pasión por el tema de Algoritmos Evolutivos, hace poco tiempo leí una serie de libros relacionados con el tema y tomé nota de esas lecturas. Aquí les presento esas notas con referencias completas de los libros consultados, en [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F09%2F05%2Falgoritmos-geneticos%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F09%2F05%2Falgoritmos-geneticos%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<table>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
<p style="text-align: center;"><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/karger_group_banner/" rel="attachment wp-att-2856"><img class="aligncenter size-full wp-image-2856" title="Karger_Group_Banner" src="http://www.ubicuos.com/wp-content/uploads/2011/09/Karger_Group_Banner.jpg" alt="" width="499" height="65" /></a></p>
<p style="text-align: center;">Como estudiante de Ingeniería en Sistema Computacionales he encontrado una gran pasión por el tema de Algoritmos Evolutivos, hace poco tiempo leí una serie de libros relacionados con el tema y tomé nota de esas lecturas. Aquí les presento esas notas con referencias completas de los libros consultados, en esta ocasión el post es enfocado al paradigma más conocido dentro de los algoritmos evolutivos: <strong>Algoritmo Genéticos.</strong><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/evolvev2df2003621/" rel="attachment wp-att-2806"><img class="size-full wp-image-2806 aligncenter" title="evolveV2DF2003621" src="http://www.ubicuos.com/wp-content/uploads/2011/09/evolveV2DF2003621.gif" alt="" width="529" height="249" /></a></p>
<p><strong>Introducción</strong></p>
<p>Durante los últimos treinta años ha crecido el interés en sistemas basados en los principios de la evolución y herencia naturales, para resolver cierto tipo de problemas, dichos sistemas mantienen una población de soluciones potenciales, tienen algún proceso de selección basado en la aptitud de los individuos y algunos operadores &#8220;genéticos&#8221;. Las Estrategias Evolutivas son un tipo de esos sistemas i.e., algoritmos que imitan los principios de evolución natural para problemas de optimización por parámetros. La programación evolutiva de Fogel es una técnica por búsqueda a través de un espacio de pequeñas máquinas de estados finitos. Otro tipo de sistemas basados en la evolución natural son los Algoritmos Genéticos de Hollman. En 1990 Koza propusó otro tipo de sistemas, la Programación Genética, para buscar el programa computacional más apto para resolver un problema en particular. [1, pp. 1].</p>
<p><strong>Orígenes</strong></p>
<p>Los algoritmos genéticos son una técnica de búsqueda y optimización basada en los principios de la genética y la selección natural.Un algoritmo genético mantiene una población de varios individuos que evolucionan a un estado, bajo reglas especificadas, para maximizar la “aptitud&#8221; (i.e., maximizar el costo de una función). [2]Los algoritmos genéticos únicamente maximizan, pero la minimización puede realizarse fácilmente utilizando el recíproco de la función maximizante (debe cuidarse, por supuesto, que el recíproco de la función no genere una división por cero) ,i.e. si el problema es minimizar una función <em>f</em> esto es equivalente a maximizar una función <em>g</em> donde <em>g = -f</em>:</p>
<p><img class="alignnone" src="http://www.codecogs.com/gif.latex?%5Ctextit%7Bmin%20f%28x%29%20=%20max%20g%28x%29%20=%20%20max%5C%7B%20-f%28x%29%5C%7D%7D" alt="" width="276" height="19" /></p>
<p>Una definición bastante completa de un algoritmo genético es la propuesta por J. Koza [3, pp. 819]:</p>
<blockquote><p>Es un algoritmo matemático altamente paralelo que transforma un conjunto de objetos matemáticos individuales con respecto al tiempo usando operaciones modeladas de acuerdo al principio Darwiniano de reproducción y supervivencia del más apto, y tras haberse presentado de forma natural una serie de operaciones genéticas de entre las que destaca la recombinación sexual. Cada uno de estos objetos matemáticos suele ser una cadena de caractéres (letras o números) de longitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia con una cierta funci\&#8217;on matem\&#8217;atica que refleja su aptitud.</p>
<p>&nbsp;</p></blockquote>
<p>Estos algoritmos son muy probablemente los tipo de algoritmos evolutivos más ampliamente conocidos al día de hoy, recibiendo notable atención en todo el mundo. Probablemente el primer predecesor de éstos algoritmos surgió del trabajo de Fraser, un biólogo quien quería simular el proceso de evolución, con especial énfasis en la interacción de la epistasis(Un fenómeno, en el cual, las características de un gen son modificados por uno ó más genes) con selección. Trabajos similares a los de Fraser fueron resumidos por Goldberg [4, pp. 89-103].</p>
<p>Sin embargo, los algoritmos genéticos en su forma usual fueron desarrollados por Holland, científico computólogo y psicólogo de la Universidad de Michigan. En 1975 él resumió su trabajo en “adaptive and reproductive plans” un libro que sirve como el punto inicial de las primeras aplicaciones e implementaciones de algoritmos genéticos [4]. Mientras los biólogos intentaban simular evolución usando algoritmos genéticos, Holland estudiaba como éste tipo de algoritmos podrían ser combinados con problemas que ocurren en campos de aplicación práctica [5, pp. 106-107].</p>
<p>Los AG&#8217;s toman prestado cierto vocabulario de la genética. Se habla de individuos (o genotipos) en una población, algunas veces esos individuos son llamados cadenas o cromosomas, esto podría ser un poco confuso, para aclararlo veamos la siguiente explicación:</p>
<p>Cada célula de todo organismo de una especie dada acarrea un cierto número de cromosomas ( el hombre, por ejemplo, tiene 46 de ellos), sin embargo, aquí se hablará de individuos con un solo cromosoma, i.e. cromosomas haploides. Los cromosomas a su vez están formados de genes (también conocidos como características, caracteres ó decodificadores) organizados en sucesión lineal; cada gen controla la herencia de una o más características. Los genes de ciertas características esta colocados en ciertos lugares del cromosoma, a esta posición se le conoce como loci(posición dentro de la cadena).</p>
<p>Cada característica de los individuos (como el color de su cabello) puede manifestarse de diferentes maneras, se dice entonces que el gen puede estar en varios estados, llamados alelos.</p>
<p>Cada genotipo(un único cromosoma) representaría una posible solución a un problema, un proceso de evolución se ejecuta sobre una población de cromosomas correspondientes a una búsqueda a través de un espacio de soluciones potenciales. Por lo que una búsqueda requiere balancear dos objetivos (aparentemente conflictivos): explotar las mejores soluciones y explorar el espacio de búsqueda [6 pp. 61-73].</p>
<p><strong>El Algoritmo Genético Canónico</strong></p>
<p>El AG comienza, como cualquier otra técnica de optimización, definiendo las variables de optimización, la función mediante la cual se evaluarán las variables y el costo. Éste termina también como otros algoritmos de optimización, haciendo pruebas de convergencia. En la fase intermedia, sin embargo, el algoritmo es un poco diferente. En la figura 1 se muestra una ruta a través de los componentes de un algoritmo genético “canónico” o estándar [2, pp. 52].</p>
<div id="attachment_2827" class="wp-caption aligncenter" style="width: 441px"><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/ag_alg/" rel="attachment wp-att-2827"><img class="size-full wp-image-2827" title="AG_Alg" src="http://www.ubicuos.com/wp-content/uploads/2011/09/AG_Alg.png" alt="Estructura general de un algoritmo genético" width="431" height="548" /></a><p class="wp-caption-text">Estructura general de un algoritmo genético</p></div>
<p>El siguiente paso es generar una población inicial compuesta por cadenas ó cromosomas de longitud <em>L</em>, generalmente ésta se inicia aleatoriamente, diversas formas de inicializar una población pueden encontrarse en [3]. Cada miembro de dicha población es representado de acuerdo al problema, pero podemos encontrar tres tipos de representaciones comunes [7]:</p>
<ul>
<li><strong>Representación Binaria</strong>: Cada gen es un valor de 0 ó 1.</li>
<li><strong>Representación Entera</strong>: Cada gen es un valor entero.</li>
<li><strong>Representación Real</strong>: Cada gen es un valor real.</li>
</ul>
<p><strong>Operadores Genéticos</strong></p>
<p>Después de crear la población inicial, cada cromosoma es evaluado y se le asigna un valor de aptitud. Es importante distinguir entre lo que se conoce como una función de evaluación y una función aptitud; la función de evaluación, o función objetivo, proporciona una medida del desempeño con respecto a un conjunto de parámetros. La función aptitud transforma esa medición en asignación de oportunidades de reproducción para el individuo. La evaluación de una cadena es independiente de la evaluación de cualquier otra cadena. La aptitud, sin embargo, es siempre definida con respecto a otros miembros de la población actual.</p>
<p><strong>Selección</strong></p>
<p>La selección es la etapa del algoritmo genético en la cual individuos o cromosomas se eligen de una población para su posterior reproducción (recombinación y/o cruce).</p>
<p>Fundamentalmente, pueden considerarse 3 esquemas de selección, aunque existe múltiples esquemas distintos a estos, así como innumerables combinaciones de aspectos de estos tres mecanismos fundamentales. A continuación se describe cada uno de ellos:</p>
<p><em><strong>Ruleta o Seleccion proporcional</strong></em>: Con este método la probabilidad que tiene un cromosoma de reproducirse es proporcional a su valor de función de evaluación, es decir, a su adaptación. Una vez calculadas estas probabilidades, la selección de los individuos para reproducirse es aleatoria según estos valores. El algoritmo propuesto por Goldberg(1989) es el siguiente:</p>
<ul>
<li><strong>Construcción de la ruleta: </strong>Calcular el valor de aptitud <em>eval(u)</em> <img src="http://www.codecogs.com/gif.latex?eval%28$u_%7Bi%7D$%29%7D" alt="http://www.codecogs.com/gif.latex?eval($u_{i}$)}" /> para cada cromosoma de la población actual <img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /> (i=1, … , tamp), donde <em>tamp</em> corresponde al tamaño de la población.</li>
<li><strong>Calcular el valor total de la aptitud de la población</strong></li>
</ul>
<p style="text-align: center;">                                                                               <img class="aligncenter" src="http://www.codecogs.com/gif.latex?%5Ctextit%7BF%20=%20%7D$%5Csum_%7Bi=1%7D%5E%7Btamp%7Deval%28$u_%7Bi%7D$%29" alt="http://www.codecogs.com/gif.latex?\textit{F%20=%20}$\sum_{i=1}^{tamp}eval($u_{i}$)" width="150" height="22" /></p>
<ul>
<li><strong>Calcular la probabilidad de selección <img src="http://www.codecogs.com/gif.latex?$p_%7Bi%7D$" alt="http://www.codecogs.com/gif.latex?$p_{i}$" /> de cada cromosoma </strong><img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /></li>
</ul>
<p style="text-align: center;">  <img class="aligncenter" src="http://www.codecogs.com/gif.latex?p_%7Bi%7D%20=%20%5Cfrac%7Bu_%7Bi%7D%7D%7BF%7D" alt="http://www.codecogs.com/gif.latex?p_{i}%20=%20\frac{u_{i}}{F}" width="57" height="33" /></p>
<ul>
<li>La ruleta gira <em>tamp</em> veces, cada vez seleccionamos un cromosoma para una nueva población de la siguiente forma:</li>
<ul>
<li>Generar un número aleatorio flotante <em>r</em> del rango [0 ... 1].</li>
<li>Si <img src="http://www.codecogs.com/gif.latex?r%20%3Cq_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?r%20%3Cq_{i}" />  entonces seleccionar el primer cromosoma<img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /> , en otro caso seleccionar el i-ésimo cromosoma <img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /> <em>(2 ≤ i ≤ tamp)</em> tal que<img src="http://www.codecogs.com/gif.latex?q_%7Bi-1%7D%3C%20r%20%20%3C=%20q_%7Bi-1%7D" alt="http://www.codecogs.com/gif.latex?q_{i-1}%3C%20r%20%20%3C=%20q_{i-1}" /></li>
</ul>
</ul>
<p>&nbsp;</p>
<p>Obviamente con este algoritmo, algunos cromosomas serán elegidos en distintas ocasiones.</p>
<p><strong>Selección por ranking</strong>: Desarrollado por Whitley en 1989, el método consiste en calcular las probabilidades de reproducción atendiendo a la ordenación de la población por el valor de aptitud en vez de simplemente el valor de la función, la aptitud esta definida por:<img src="http://www.codecogs.com/gif.latex?%5Cfrac%7Bf_%7Bi%7D%7D%7B%5Cbar%20f%7D" alt="http://www.codecogs.com/gif.latex?\frac{f_{i}}{\bar%20f}" />, donde <img src="http://www.codecogs.com/gif.latex?f_%7Bi%7D%7D" alt="http://www.codecogs.com/gif.latex?f_{i}}" />  es la evaluación asociada con el cromosoma <em>i</em> , y   <img src="http://www.codecogs.com/gif.latex?%5Cbar%20f" alt="http://www.codecogs.com/gif.latex?\bar%20f" /> es la evaluación promedio de todos los cromosomas en la población [8]. Una vez realizada esta evaluación, se simula un proceso de selección natural, los individuos son acomodados de acuerdo a la función de aptitud, en esta etapa los mejores individuos son elegidos de la población actual y el resto son eliminados. Esta selección natural ocurre cada generación o iteración del algoritmo. La decisión del número de cromosomas elegidos es algo arbitrario, sin embargo, dejando que solo unos pocos cromosomas sobrevivan para la siguiente generación limita los genes disponibles para producir descendientes, almacenando demasiados cromosomas permite que los cromosomas con baja aptitud reproduzcan sus características en la siguiente generación.</p>
<p>&nbsp;</p>
<p><strong>Selección por torneo</strong>: Un esquema ideal de selección debería ser simple de codificar, y eficiente para arquitecturas paralelas y no paralelas, más aún, un esquema de selección debería ser capaz de ajustar su influencia de selección acorde a su dominio. El uso de selección por torneo ha ido en incremento debido a que satisface los criterios anteriores[9]. La idea es simple, se elige un número de individuos de una población(normalmente 2, torneo binario), se selecciona el mejor individuo de este grupo para un nuevo procesamiento genético, la selección se realiza tantas veces como se desee (por lo general hasta que a partir de ellos, sea posible realizar el proceso de apareamiento). El método puede aplicarse con reemplazo o sin reemplazo, en el primer caso los individuos seleccionados del actual torneo son candidatos para participar en otro torneos, por otro lado en un torneo sin reemplazo los individuos son seleccionados una sola vez.</p>
<p>Una comparación de complejidad entre estos tres esquemas de selección puede verse en [10].</p>
<p>&nbsp;</p>
<p><strong>Operador Mutación</strong></p>
<p><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/mutate/" rel="attachment wp-att-2851"><img class="aligncenter size-full wp-image-2851" title="MUTATE" src="http://www.ubicuos.com/wp-content/uploads/2011/09/MUTATE.gif" alt="" width="398" height="203" /></a></p>
<p>El operador de mutación fue introducido por Holland como un operador que ocasionalmente cambia bits individuales de cromosomas invirtiéndolos, la probabilidad de mutación <img src="http://www.codecogs.com/gif.latex?$p_%7Bm%7D%20%5Cepsilon%20[0,1]$" alt="http://www.codecogs.com/gif.latex?$p_{m}%20\epsilon%20[0,1]$" />  por bit es muy pequeña en un AG. Algunos valores comúnes son: <img src="http://www.codecogs.com/gif.latex?$p_%7Bm%7D%20=%200.001,%20p_%7Bm%7D%20=%200.01$" alt="http://www.codecogs.com/gif.latex?$p_{m}%20=%200.001,%20p_{m}%20=%200.01$" /> y <img src="http://www.codecogs.com/gif.latex?%20$p_%7Bm%7D%20%5Cepsilon[0.005,%200.01]$" alt="http://www.codecogs.com/gif.latex?%20$p_{m}%20\epsilon[0.005,%200.01]$" />. En últimos estudios, algunos investigadores formularon algunas reglas heurísticas indicando que el rendimiento es cada vez mayor tanto para poblaciones grandes (tamp &gt; 200) combinadas con una probabilidad de mutación grande <img src="http://www.codecogs.com/gif.latex?%20%28p_%7Bm%7D%20%3E%200.05%29" alt="http://www.codecogs.com/gif.latex?%20(p_{m}%20%3E%200.05)" /> como también para poblaciones de pequeño tamaño <img src="http://www.codecogs.com/gif.latex?%20%28tamp%20%3C%2020%29" alt="http://www.codecogs.com/gif.latex?%20(tamp%20%3C%2020)" /> combinadas con una probabilidad de mutación pequeña <img src="http://www.codecogs.com/gif.latex?%28$p_%7Bm%7D%20%3C%200.002$%29" alt="http://www.codecogs.com/gif.latex?($p_{m}%20%3C%200.002$)" />.</p>
<p>Valores pequeños de mutaciones, como Holland indica, garantiza que un individuo producido por mutación no difiera demasiado genéticamente de su antecesor. Esta declaración es cierta para el espacio de genotipos, pero como Bäck señala, solo es compatible con una codificación estándar(binaria) no para una representación con números reales [11].</p>
<p>El gen a mutar es seleccionado aleatoriamente del número total de genes (<em>tamp * L</em>) de la población actual.</p>
<p>&nbsp;</p>
<p><strong>Recombinación o Cruce</strong></p>
<p>&nbsp;</p>
<p>La recombinación es considerado como el operador más importante de los algoritmos genéticos. La idea es que segmentos útiles de diferentes padres podrían ser combinadas con el fin de dar a un nuevo individuo los beneficios de combinaciones de bits de ambos padres. De esta forma, más y más segmentos de aptitud alta se esperan que emergan, finalmente llegando a una total solución [5, pp. 97-106].</p>
<p>La recombinación es claramente un operador sexual(necesita dos cromosomas o individuos para llevarse a cabo) que con una probabilidad <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$" alt="http://www.codecogs.com/gif.latex?$p_{c}$" />selecciona dos individuos padres de la población, los recombina para formar dos nuevos individuos y descarta uno de los resultantes.</p>
<p>Valores comunes de <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$" alt="http://www.codecogs.com/gif.latex?$p_{c}$" /> son los propuestos por De Jong(1975) con <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$%20=%200.6" alt="http://www.codecogs.com/gif.latex?$p_{c}$%20=%200.6" />  y J.J Grefenstette(1985) con una <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$%20=%200.95" alt="http://www.codecogs.com/gif.latex?$p_{c}$%20=%200.95" />.</p>
<p>El operador de cruce permite realizar una exploración de toda la información almacenada hasta el momento en la población y combinarla para crear mejores individuos.</p>
<p>El tradicional método de cruce propuesto por Holland se conoce como <em>one-point crossover</em>:</p>
<p>Se elige una posición de cruce <img src="http://www.codecogs.com/gif.latex?%5Cchi%20%5Cepsilon" alt="http://www.codecogs.com/gif.latex?\chi%20\epsilon" /> <em>1, … , L-1</em> dentro de la cadena de bits al azar y se intercambian los bits a la derecha de esa posición entre ambos individuos. Sin embargo, éste método parece ser claramente inferior a los otros métodos con respecto al desempeño de los resultados.</p>
<p><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/cross0/" rel="attachment wp-att-2852"><img class="aligncenter size-full wp-image-2852" title="CROSS0" src="http://www.ubicuos.com/wp-content/uploads/2011/09/CROSS0.gif" alt="" width="317" height="299" /></a></p>
<p><strong>Cruce de n puntos</strong>: Es una generalización del método anterior. Se seleccionan varias posiciones <em>(n)</em> en las cadenas de los progenitores y se intercambian los genes a ambos lados de estas posiciones.</p>
<p><strong>Cruce Uniforme</strong>: Es radicalmente diferente a la técnica de un punto, cada gen de los descendientes es creado copiando el correspondiente gen de uno o del otro padre, elegido de acuerdo a una máscara de cruce generada aleatoriamente. Cuando existe un 1 en la máscara de cruce, el gen es copiado del primer padre, y cuando la posición de la mascara contiene un 0, el gen es copiado del segundo padre. El proceso es repetido intercambiando a los padres para generar el segundo descendiente. Para cada par de padres se genera una máscara nueva, los descendientes por lo tanto, contienen una mezcla de genes de cada padre. El número de puntos de cruce efectivos no es fijo, pero la media podría ser <img src="http://www.codecogs.com/gif.latex?%5Cfrac%7BL%7D%7B2%7D" alt="http://www.codecogs.com/gif.latex?\frac{L}{2}" /> (donde <em>L</em>) es la longitud de los cromosomas).</p>
<p><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/uniform/" rel="attachment wp-att-2853"><img class="aligncenter size-full wp-image-2853" title="UNIFORM" src="http://www.ubicuos.com/wp-content/uploads/2011/09/UNIFORM.gif" alt="" width="326" height="249" /></a></p>
<p><strong>Cruce heurístico</strong>: Éste operador propuesto por Wright \cite {Wright}, es único debido a las siguientes razones:</p>
<ol>
<li>Utiliza valores de la función objetivo para determinar la dirección de la búsqueda</li>
<li>Produce únicamente un descendiente</li>
<li>Podría no producir ningún descendiente</li>
</ol>
<p>El operador genera un descendiente <img src="http://www.codecogs.com/gif.latex?$x_%7B3" alt="http://www.codecogs.com/gif.latex?$x_{3" /> de dos padres <img src="http://www.codecogs.com/gif.latex?$x_1" alt="http://www.codecogs.com/gif.latex?$x_1" /> y <img src="http://www.codecogs.com/gif.latex?$x_2" alt="http://www.codecogs.com/gif.latex?$x_2" /> de acuerdo siguiente regla:</p>
<p><img src="http://www.codecogs.com/gif.latex?x_%7B3%7D%20=%20r%20*%20%28x_%7B2%7D%20-x_%7B1%7D%29%20+x_%7B2%7D" alt="http://www.codecogs.com/gif.latex?x_{3}%20=%20r%20*%20(x_{2}%20-x_{1})%20+x_{2}" /></p>
<p>Donde  <em>r</em> es un número aleatorio entre 0 y 1, y el padre   <img src="http://www.codecogs.com/gif.latex?$x_2" alt="http://www.codecogs.com/gif.latex?$x_2" /> no es peor que <img src="http://www.codecogs.com/gif.latex?$x_1" alt="http://www.codecogs.com/gif.latex?$x_1" />, es decir, <img src="http://www.codecogs.com/gif.latex?f%28x_%7B2%7D%29%20%5Cleq%20f%28x_%7B1%7D%29" alt="http://www.codecogs.com/gif.latex?f(x_{2})%20\leq%20f(x_{1})" />  para problemas de minimización.</p>
<p>Es posible que el operador genere un descendiente no viable. En tal caso otro valor aleatorio es generado y otro descendiente creado, si después de <em>w</em> intentos una nueva solución viable no es encontrada, el operador no hace más intentos y no produce ningún descendiente.</p>
<p>Después de que el proceso de selección, mutación y recombinación está completo, la siguiente población puede ser evaluada; este proceso formará una generación o ciclo en la ejecución de un algoritmo genético.</p>
<p>En cuanto el criterio de parada, generalmente viene determinado por criterios a priori sencillos, como un número máximo de generaciones o un tiempo máximo de resolución, o más eficientemente por estrategias relacionadas con indicadores del estado de evolución de la población, como por la pérdida de diversidad dentro de la población o por no haber mejora en un cierto número de iteraciones, siendo por lo general una condición mixta lo más utilizado, es decir, limitar el tiempo de ejecución a un número de iteraciones y tener en cuenta algún indicador del estado de la población para considerar la convergencia antes de alcanzar tal limitación.</p>
<p>&nbsp;</p>
<p><strong>Hasta Aqui llega esta breve introducción, esperando a que los aliente a meterse más en este campo, para esto les recomiendo un <a href="http://delta.cs.cinvestav.mx/~ccoello/papers.html" target="_blank">gran sitio</a> del Dr. <a href="http://delta.cs.cinvestav.mx/~ccoello/vitaenew.pdf">Carlos Coello</a> actual investigador del CINVESTAV en el IPN y que resolvió algunas de mis dudas.</strong></p>
<p>De antemano me disculpo si por ahí se me fué alguna expresión mal, es dificil trabajar sin LaTeX directamente. Saludos!!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Bibliografía</strong>:</p>
<p>[1] Zbigniew Michalewicz. Genetic algorithms + data structures = evolution programs (3rd ed.).  Springer-Verlag, London, UK, 1996.<br />
[2] Randy L. Haupt and Sue Ellen Haupt. Practical Genetic Algorithms. Wiley-Interscience, 2004.<br />
[3] John R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection (Complex Adaptive Systems). The MIT Press, 1 edition, December 1992.<br />
[4] David E. Goldberg. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison-Wesley Professional, 1 edition, January 1989.<br />
[5] John H. Holland. Adaptation in natural and artificial systems. MIT Press, Cambridge, MA, USA, 1992.<br />
[6] L.B. Booker. Improving Search in Genetic Algorithms. Morgan Kaufmann Publishers, 1987.<br />
[7] Rafael Caballero Fern ́ndez. Algoritmos gen ́ticos para la resoluci ́n de problemas de programación por metas entera. aplicación a la economía de la educación.<br />
[8] Darrell Whitley. A genetic algorithm tutorial. Statistics and Computing, 4(2), June 1994.<br />
[9] Brad L. Miller, Brad L. Miller, David E. Goldberg, and David E. Goldberg. Genetic algorithms, tournament selection, and the effects of noise. Complex Systems, 9, 1995.                                                                                                                                                                                                                [10]Thomas Bäck. Evolutionary Algorithms in Theory and Practice: Evolution Strategies, Evolutionary Programming, Genetic Algorithms. Oxford University Press, 1996.                                                                                                                                                                                                                               [11]Alden H. Wright. Genetic algorithms for real parameter optimization. In Foundations of genetic algorithms. Morgan Kaufmann, San Mateo, CA, 1991.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detectan isquemia con tecnología infrarroja</title>
		<link>http://www.ubicuos.com/2011/01/02/detectan-isquemia-con-tecnologia-infrarroja/</link>
		<comments>http://www.ubicuos.com/2011/01/02/detectan-isquemia-con-tecnologia-infrarroja/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 19:19:26 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/2011/01/02/detectan-isquemia-con-tecnologia-infrarroja/</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Uno de los mayores problemas que enfrentan las personas con diabetes es la isquemia, complicación asociada a los vasos sanguíneos que impide la circulación adecuada de la sangre, principalmente en las extremidades inferiores del individuo. En consecuencia, es común que se presenten infecciones, en cuyos casos más severos podrían [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2011/01/02/detectan-isquemia-con-tecnologia-infrarroja/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F01%2F02%2Fdetectan-isquemia-con-tecnologia-infrarroja%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F01%2F02%2Fdetectan-isquemia-con-tecnologia-infrarroja%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://www.ubicuos.com/wp-content/uploads/2011/01/l-14.jpg" border="0" style="float: left; border: 2px solid black; margin: 10px;" />Uno de los mayores problemas que enfrentan las personas con diabetes es la isquemia, complicación asociada a los vasos sanguíneos que impide la circulación adecuada de la sangre, principalmente en las extremidades inferiores del individuo. En consecuencia, es común que se presenten infecciones, en cuyos casos más severos podrían conducir a la amputación.</p>
<p>Visto en <a href="http://www.invdes.com.mx/salud/1125-detectan-isquemia-con-tecnologia-infrarroja">Agencia ID</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2011/01/02/detectan-isquemia-con-tecnologia-infrarroja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Biohackers: Los nuevos Steve Jobs de la biología molecular</title>
		<link>http://www.ubicuos.com/2010/10/06/biohackers-los-nuevos-steve-jobs-de-la-biologia-molecular/</link>
		<comments>http://www.ubicuos.com/2010/10/06/biohackers-los-nuevos-steve-jobs-de-la-biologia-molecular/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 01:13:47 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Cómputo Evolutivo]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[hackers]]></category>
		<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2262</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Steve Jobs y Stephen Wozniak manufacturaron los primeros equipos Apple en el garaje de la familia Jobs. Microsoft, HP, Google o Youtube también nacieron en una garaje. Los biohackers son científicos aficionados con laboratorios de biología en su garaje que compran sus equipos online. Muchos mantienen sus laboratorios en secreto preocupados porque las autoridades los acusen de bioterroristas. [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/10/06/biohackers-los-nuevos-steve-jobs-de-la-biologia-molecular/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F10%2F06%2Fbiohackers-los-nuevos-steve-jobs-de-la-biologia-molecular%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F10%2F06%2Fbiohackers-los-nuevos-steve-jobs-de-la-biologia-molecular%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a rel="attachment wp-att-2263" href="http://www.ubicuos.com/2010/10/06/biohackers-los-nuevos-steve-jobs-de-la-biologia-molecular/dibujo20101006_do_it_yourself_biology_from_nature/"><img class="aligncenter size-full wp-image-2263" title="dibujo20101006_do_it_yourself_biology_from_nature" src="http://www.ubicuos.com/wp-content/uploads/2010/10/dibujo20101006_do_it_yourself_biology_from_nature.jpg" alt="" width="705" height="477" /></a></p>
<p>Steve Jobs y Stephen Wozniak manufacturaron los primeros equipos  Apple en el garaje de la familia Jobs. Microsoft, HP, Google o  Youtube también nacieron en una garaje. Los <em>biohackers</em> son  científicos aficionados con laboratorios de biología en su garaje que  compran sus equipos online. Muchos mantienen sus laboratorios en secreto  preocupados porque las autoridades los acusen de bioterroristas. Según  Rob Carlson, físico reconvertido en <em>biohacker</em>, prometen  revolucionar la industria biotecnológica.<span id="more-2262"></span> Los miembros del club “hágalo  usted mismo” (do-it-yourself o DIY) conforman una comunidad que  investigan por <em>hobby</em> como secuenciar genomas o como realizar  estudios clínicos a pequeña escala. Las máquinas PCR que amplifican  segmentos de ADN son baratas y se pueden comprar en eBay. En mayo de  2008 se organizó el primer congreso DIYbio en un pub irlandés en  Cambridge, Massachusetts, cerca del MIT. Asistieron 25 personas. Este  año ya hay más de 2000 personas subscritas a la lista de correo de  DIYbio. Han nacido otras comunidades similares en Nueva York, San  Francisco, Londres, París, etc. DIYbio fomenta la ciencia abierta (<em>open  science</em>) y los intercambios de materiales, datos y publicaciones.  Nos lo cuenta Heidi Ledford, “<a href="http://dx.doi.org/10.1038/467650a" target="_blank">Garage biotech:  Life hackers</a>,” News Feature, Nature 467: 650-652, 7 October 2010, y  nos lo destaca el propio Editor de Nature en “<a href="http://dx.doi.org/10.1038/467634a" target="_blank">Garage biology</a>,”  Nature 467: 634, 07 October 2010.</p>
<p>Rob Carlson, estudiante de doctorado de física en 1996, coincidió en  un tren hacia Nueva York con un curioso anciano que le ofreció un puesto  de trabajo. El Dr. Sydney Brenner, un famoso biólogo, le ofreció un  puesto en el Instituto Brenner de Ciencias Moleculares (MSI) en  Berkeley, California. Allí aprendió las técnicas de la biología  molecular sobre la marcha. El instituto es un hervidero de creatividad  que le recordó a Carlson la filosofía de los hacker que revolucionaron  la informática de los ordenadores personales hace solo 25 años. ¿Podría  suceder lo mismo con la biotecnología? Decidió montar su propio  laboratorio en su garaje y simultanear su trabajo en el MSI con su  afición al <em>biohacking</em>. La mayoría de los equipos que utiliza en  el MSI se pueden comprar por eBay por menos de mil dólares. Carlson ha  escrito varios artículos premonitorios de la revolución que se ha puesto  en marcha.</p>
<p>Los biohackers son cautelosos. Steve Kurtz cultivaba bacterias en su  garaje y recibió la visita de agentes federales que irrumpieron en su  casa con trajes especiales y armas en la mano. La unidad de  bioterrorismo del FBI está atenta a los congresos DIYbio y a las listas  de correo de esta iniciativa para “garantizar el derecho de los  aficionados a ejercer esta actividad, pero siempre dentro de los más  estrictos controles de seguridad.”</p>
<p>Los biohackers ya están creando las primeras empresas, como los  californianos Tito Jankowski y Josh Perfetto que han creado una empresa  para desarrollar una versión de bajo coste para biohackers de una  máquina PCR llamada OpenPCR (en menos de un mes lograron recaudar una  financiación de 12000 dólares), o el venezolano afincado en California  Guido Núñez-Mújica que pretende desarrollar una máquina PCR portátil  llamada LavaAmp para uso de aficionados, así como profesores e  investigadores en países en vías de desarrollo (actualmente Guido busca  capital riesgo para su empresa).</p>
<p>No todo el mundo lo ve tan claro como Carlson. Jim Collins, biólogo  sintético (o bioingeniero) profesional de la Universidad de  Boston afirma que un laboratorio de biología molecular bien equipado  está fuera del alcance de los biohackers (requiere una inversión de unos  cientos de miles de dólares) y no cree que los biohackers puedan  protagonizar una revolución como la que ocurrió en el mundo de la  informática personal. Carlson le recuerda que los costes están bajando a  pasos agigantados y que la opinión general de que la investigación  biológica es cara y difícil ya está quedando obsoleta. Carlson cree que  la ley de Moore de la informática es aplicable a la biología y algunos  ya hablan de la ley de Carlson. A pesar de los retrasos y de los  sacrificios personales, Carlson está encantado de formar parte de la  revolución biotecnológica que está en ciernes.</p>
<p>﻿</p>
<p><a rel="attachment wp-att-2263" href="http://www.ubicuos.com/2010/10/06/biohackers-los-nuevos-steve-jobs-de-la-biologia-molecular/dibujo20101006_do_it_yourself_biology_from_nature/"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/10/06/biohackers-los-nuevos-steve-jobs-de-la-biologia-molecular/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un “pasodoble” hacia la computadora cuántica</title>
		<link>http://www.ubicuos.com/2010/10/04/un-%e2%80%9cpasodoble%e2%80%9d-hacia-la-computadora-cuantica/</link>
		<comments>http://www.ubicuos.com/2010/10/04/un-%e2%80%9cpasodoble%e2%80%9d-hacia-la-computadora-cuantica/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 02:40:50 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Cómputo Evolutivo]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[computacion cuantica]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2245</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Átomo de Rubidio 85 diciendo &#8216;hola&#8217; a la cámara. &#124; Fuente imagen: Universidad de Otago. Ahí lo tienen, un átomo de Rubidio 85 “solo ante el peligro”. La tosca calidad de la foto puede haceros pensar que se trata de algo que carece de importancia, pero no es así. [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/10/04/un-%e2%80%9cpasodoble%e2%80%9d-hacia-la-computadora-cuantica/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F10%2F04%2Fun-%25e2%2580%259cpasodoble%25e2%2580%259d-hacia-la-computadora-cuantica%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F10%2F04%2Fun-%25e2%2580%259cpasodoble%25e2%2580%259d-hacia-la-computadora-cuantica%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div id="attachment_1104">
<p style="text-align: center;"><img title="Atomo de rubidio 85" src="http://amazings.es/wp-content/uploads/2010/10/Atomo-de-rubidio-85.jpg" alt="" width="467" height="300" /></p>
<p style="text-align: center;">Átomo de Rubidio 85 diciendo &#8216;hola&#8217; a la cámara. | Fuente imagen: <a href="http://www.otago.ac.nz/news/news/otago013581.html">Universidad de Otago</a>.</p>
</div>
<p>Ahí lo tienen, <strong>un átomo de Rubidio 85</strong> “solo ante el  peligro”. La tosca calidad de la foto puede haceros pensar que se trata  de algo que carece de importancia, pero no es así. El pasado lunes,  investigadores neozelandeses anunciaron su logro, habían sido capaces de  <strong>atrapar un único átomo dentro de un rayo atractor</strong> (en realidad una <a href="http://es.wikipedia.org/wiki/Pinza_%C3%B3ptica">pinza óptica</a>) y ralentizarlo para poder tomarle la foto.<span id="more-2245"></span></p>
<p>Los científicos en cuestión estaban liderados por Mikkel F. Andersen,  y pertenecían a la Universidad de Otago en Nueva Zelanda..  Lo que hicieron estos científicos fue usar dos lásers para ralentizar  el movimiento frenético de un grupo de átomos de rubidio-85, y luego  capturar a uno de ellos dentro de la pinza óptica formada por los dos  haces.</p>
<p>La efectividad del método quedó demostrada por el porcentaje de  éxitos: un 83%. Gracias a este novedoso enfoque, el equipo de Andersen  fue capaz de mantener “quieto-parao” frente a la cámara a un único átomo  de rubidio, para así poder tomar la imagen que véis sobre estas líneas.</p>
<p>“Ok… perfecto”, podrás pensar. “¿Y a mi qué?”</p>
<p>Como se que algunos no se quedan contentos si no les mencionas aplicaciones, aqui les dejo una.</p>
<p>El proceso ideado por Andersen y sus colegas, podría simplificar el método utilizado hasta ahora para construir <strong>puertas lógicas en las computadoras cuánticas</strong>, el campo en que trabaja uno de nuestros más admirados científicos: <a href="http://amazings.es/2010/09/28/passion-for-knowledge-dia-2/">Ignacio Cirac</a>.</p>
<p>Hasta ahora, ante la imposibilidad de delimitar el número de átomos  con los que trabajar durante los experimentos, los científicos usaban  pequeños grupos de átomos (variables en número) como procesadores de  información. Imaginense la <strong>precisión y miniaturización</strong> que se podrá alcanzar en el futuro si somos capaces de atrapar los átomos en el número que nos plazca.</p>
<p>Andersen cree que con su método los ingenieros podrían atrapar 10  átomos (o los que sean necesarios) a cada intento. Conseguido eso, luego  “solo” habría que lograr <a href="http://es.wikipedia.org/wiki/Entrelazamiento_cu%C3%A1ntico">entrelazarlos cuánticamente</a> entre si para que puedan compartir información. Por supuesto esto es  hoy por hoy imposible . Hasta ahora solo  habíamos logrado entrelazar cuánticamente a los <a href="http://es.wikipedia.org/wiki/Qubit">qubits</a> de dos en dos.</p>
<p>En esta misma semana he podido leer en <a href="http://www.nature.com/news/2010/100929/full/467513a.html">Nature</a>, que por primera vez, un equipo de científicos canadieses han logrado <strong>entrelazar cuánticamente tres qubits</strong>. (Más información en castellano sobre este punto en <a href="http://francisthemulenews.wordpress.com/2010/09/29/logran-entrelazar-tres-cubits-superconductores-de-alta-calidad/">Francis the mule</a>). Juntos y revueltos, <strong>estos dos hallazgos acercan aún más la llegada de la esperada computadora cuántica</strong>.</p>
<p>No hace falta que les explique que al contrario que las computadoras  basadas en códigos binarios (las que usamos hoy en día) los procesadores  cuánticos podrían realizar multitud de cálculos complicados al mismo  tiempo, procesando datos a velocidades inimaginables. (Por no hablar de  descifrar códigos secretos que vuelven locos a los espías de hoy en  día).</p>
<p>Y es que a pesar del vacío de información en medios generalistas,  esta ha sido una gran semana para Ignacio Cirac y todos aquellos que  luchan por lograr computadoras más avanzadas y comunicaciones más  seguras. Los avances, si vienen de dos en dos, mejor que mejor.</p>
<p>Fuentes:  <a href="http://www.nature.com/news/2010/100929/full/467513a.html">Nature</a> y la <a href="http://www.otago.ac.nz/news/news/otago013581.html">nota de prensa</a> de la Universidad de Otago.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/10/04/un-%e2%80%9cpasodoble%e2%80%9d-hacia-la-computadora-cuantica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿Tecnología solar para computadoras? La UNAM la hace realidad</title>
		<link>http://www.ubicuos.com/2010/09/07/%c2%bftecnologia-solar-para-computadoras-la-unam-la-hace-realidad/</link>
		<comments>http://www.ubicuos.com/2010/09/07/%c2%bftecnologia-solar-para-computadoras-la-unam-la-hace-realidad/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 00:16:39 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[computación]]></category>
		<category><![CDATA[energia solar]]></category>
		<category><![CDATA[unam]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2171</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook No hay nada nuevo bajo el sol en lo que a paneles solares se refiere. Desde hace cinco años, con un mayor compromiso hacia el medio ambiente y la búsqueda de fuentes de energía limpias, estos dispositivos se han popularizado cada vez más. Sin embargo muchos de ellos están [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/09/07/%c2%bftecnologia-solar-para-computadoras-la-unam-la-hace-realidad/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F09%2F07%2F%25c2%25bftecnologia-solar-para-computadoras-la-unam-la-hace-realidad%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F09%2F07%2F%25c2%25bftecnologia-solar-para-computadoras-la-unam-la-hace-realidad%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div><a href="http://adserver.hipertextual.com/www/delivery/ck.php?n=a0baedee&amp;cb=3567356" target="_blank"><img src="http://adserver.hipertextual.com/www/delivery/avw.php?zoneid=191&amp;cb=3567356&amp;n=a0baedee" border="0" alt="" /></a></div>
<p><!-- google_ad_section_start --><img class="alignleft" src="http://cdn.vivirmexico.com/files/2010/09/Energ%C3%ADa-solar.jpg" alt="Energía solar ¿Tecnología solar para computadoras? La UNAM lo hace posible" width="328" height="500" /></p>
<p>No hay <em>nada nuevo bajo el sol</em> en lo que a paneles solares se refiere. Desde hace cinco años, con un  mayor compromiso hacia el medio ambiente y la búsqueda de fuentes de  energía limpias, estos dispositivos se han popularizado cada vez más.  Sin embargo muchos de ellos están diseñados para su uso en oficinas o  edificios completos y aquellas empresas que se dedican a producir estos aparatos  para favorecer la movilidad sacrifican potencia por tamaño. Al final del día, <strong>el uso doméstico de paneles solares podría utilizar un mayor empuje</strong>.<span id="more-2171"></span></p>
<p>Cada vez es más común el desarrollo de proyectos <em>verdes</em> en universidades y en esta ocasión estudiantes de la <strong>Universidad Nacional Autónoma de México (UNAM) y de la Universidad Iberoamericana (UIA)</strong> no se quedaron atrás. Crearon un regulador para panel solar capaz de almacenar energía suficiente para iluminar una casa completa  (alrededor de cuatro luces y hasta una televisión) por dos horas o una  sola habitación o computadora por 24 horas.</p>
<blockquote><p><strong>México es uno de los cinco países con más nivel de insolación solar en el mundo</strong>,  en la Ciudad de México hay muy buena captación, aunque lo ideal es  instalar el colector en una azotea y no importa que llueva, esté nublado  o haga frío.</p></blockquote>
<p>El regulador, que se encuentra en  proceso de trámite de patente, costaría (junto con un panel solar del  tamaño de un hoja oficio y peso de un libro) 2 mil pesos. La compañía en  la que se conforman estos estudiantes, <strong><a href="http://ilumexico.mx/es/">Iluméxico</a></strong>, será capaz de independizar cualquier casa-habitación del suministro público de electricidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/09/07/%c2%bftecnologia-solar-para-computadoras-la-unam-la-hace-realidad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mi computadora sabe que estoy triste &#8230;</title>
		<link>http://www.ubicuos.com/2010/09/04/2119/</link>
		<comments>http://www.ubicuos.com/2010/09/04/2119/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 23:01:22 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Cómputo Evolutivo]]></category>
		<category><![CDATA[Robótica]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[computacion evolutiva]]></category>
		<category><![CDATA[computacion sensitiva]]></category>
		<category><![CDATA[escom]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2119</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Expertos trabajan para que las computadoras reconozcan los sentimientos humanos y reaccionen a cada emoción. Que las máquinas se adapten a las expresiones humanas, ése es el fin último. El consorcio World Wide Web (W3C), principal encargado de los estándares de la red, está trabajando para regular la computación [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/09/04/2119/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F09%2F04%2F2119%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F09%2F04%2F2119%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<h3>Expertos trabajan para que las computadoras reconozcan los sentimientos humanos y reaccionen a cada emoción.</h3>
<p><span id="more-2119"></span><br />
<a href="http://www.ubicuos.com/wp-content/uploads/2010/09/250x250_1204421171_FOTO-01.jpg"><img src="http://www.ubicuos.com/wp-content/uploads/2010/09/250x250_1204421171_FOTO-01.jpg" alt="" title="250x250_1204421171_FOTO 01" width="238" height="250" class="aligncenter size-full wp-image-2197" /></a></p>
<div>
<div>Que las máquinas se adapten a las expresiones humanas,  ése es el fin último. El consorcio World Wide Web (W3C), principal  encargado de los estándares de la red, está trabajando para regular la  computación afectiva a través de la especificación <strong>Emotional Markup  Languaje</strong>. La computación afectiva está formada por los sistemas y dispositivos que pueden reconocer, interpretar y procesar emociones humanas.  Este campo del conocimiento está en continuo avance, tanto en  tecnologías de reconocimiento como de interpretación y de  interactuación. W3C propone un lenguaje dentro de un marco regulatorio  estandarizado en su documentación.</div>
<div>
<p><img src="http://www.abc.es/Media/201009/01/ordenador_tristeza--478x270.jpg" alt="" width="478" height="270" /></p>
<div><span style="color: #800000">La máquina será capaz de comportarse según el humor del usuario</span></div>
<div><span style="color: #800000"><br />
</span></div>
</div>
<div>“Emotion Markut Languaje 1.0 tiene como objetivo  encontrar el equilibrio entre la aplicación práctica y el orden bien  fundamentado científico. El lenguaje es concebido como un lenguaje  “plug-in” válido para su uso en tres áreas distintas: anotación manual  de los datos; reconocimiento automático de los estados emocionales del comportamiento del usuario; y generación de un sistema de comportamiento emocional”.</div>
<div>Se pueden lograr metas como que los avatares reflejen los  gestos de las personas a quienes representan, que los servicios de  atención al cliente detecten cuando la persona al otro lado está  realmente enfadada, que la máquina ajuste los patrones a las reacciones  del jugador de videojuegos o, simplemente, que sepa cuando le dices sí y  cuando no con la cabeza. En general, que la máquina sea capaz de discernir cómo actuar en función de las sensaciones del humano que tiene delante.</div>
<div><strong><span style="color: #003366">Grados de felicidad</span></strong></div>
<div>La comunicación entre la persona y la máquina debe ir más  allá de los emoticonos e incluso del reconocimiento facial o del de las  sensaciones básicas como felicidad, tristeza o enfado, explica el  doctor Marc Schröder, líder del proyecto. “¿Cuán intensa es una emoción?  ¿qué tipo de sentimiento es? ¿activo o pasivo? ¿positivo o negativo?  ¿poderoso o asistencial?”, ese es el tipo de cuestiones que esperan  responder.</div>
<div>Además del problema tecnológico que supone hacer una  correcta lectura de cada persona o dar una respuesta acertada, en la  comunidad científica no hay acuerdo sobre las categorías emocionales,  por lo que EmotionML no incluye posiciones predefinidas. Cada cual debe  fijar explícitamente sus parámetros.</div>
<div><strong>A través de la piel</strong></div>
<div>Aunque sigue siendo experimental, la computación afectiva  no está tan lejos. Rosalind Picard, una de las mayores expertas en este  campo, ha levantado una startup llamada Affectiva que vende el  dispositivo Q Sensor, un biosensor inalámbrico capaz de detectar en  emociones como la ansiedad, la emoción o la atención a través de la  piel.</div>
<div>Probablemente con más sencillez, la compañía de  videojuegos Nintendo también está explorando el campo. Hace más de un  año que presentó su producto Wii Vitality Sensor, capaz de incorporar a  los videojuegos diversas sensaciones humanas. No está a la venta ni se  conoce qué software hará uso de él, pero un gigante como Nintendo tiene  potencial para llevar algo tan innovador al público general.</div>
<div>Que las computadoras aprendan a entender a los humanos,  que se adapten a ellos, es el primer paso para una mayor integración.  Pero no son pocos los riesgos que entraña que una computadora pueda  controlar incluso los sentimientos humanos, desde los sociopoliciales a  los comerciales la evolución de la computación afectiva es un camino  hacia lo desconocido aunque mil veces imaginado.</div>
</div>
<div>Fuente: <a href="http://kira.herobo.com/">Ubuntizados</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/09/04/2119/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>y-cruncher : El software utilizado para romper el record de cálculo de decimales de pi</title>
		<link>http://www.ubicuos.com/2010/08/08/y-cruncher-el-software-utilizado-para-romper-el-record-de-calculo-de-decimales-de-pi/</link>
		<comments>http://www.ubicuos.com/2010/08/08/y-cruncher-el-software-utilizado-para-romper-el-record-de-calculo-de-decimales-de-pi/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 20:51:35 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[matemáticas]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[retos]]></category>
		<category><![CDATA[ycruncher]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=1978</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook El pasado día 2 de agosto el ingeniero informático Shigeru Kondo y el estudiante Alexander J. Yee han conseguido batir el récord de decimales del número , dejándolo en 5 billones de decimales. Este cálculo les llevo 3 meses y con la cantidad de decimales obtenida casi doblan el [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/08/08/y-cruncher-el-software-utilizado-para-romper-el-record-de-calculo-de-decimales-de-pi/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F08%2F08%2Fy-cruncher-el-software-utilizado-para-romper-el-record-de-calculo-de-decimales-de-pi%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F08%2F08%2Fy-cruncher-el-software-utilizado-para-romper-el-record-de-calculo-de-decimales-de-pi%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/pi_100b_nagisa_7_29_2010.jpg"><img src="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/pi_100b_nagisa_7_29_2010.jpg" alt="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/pi_100b_nagisa_7_29_2010.jpg" width="396" height="247" /></a></p>
<p>El pasado día 2 de agosto el ingeniero informático <a href="http://www.iar.nagoya-u.ac.jp/2004PBF/Eng_Kondo.html">Shigeru Kondo</a> y el estudiante Alexander J. Yee han conseguido batir el récord de decimales del número <img src="http://s.wordpress.com/latex.php?latex=%5Cpi&amp;bg=ffffff&amp;fg=000000&amp;s=0" alt="\pi" />, dejándolo en <strong>5 billones de decimales</strong>.   Este cálculo les llevo 3 meses y con la cantidad de decimales obtenida   casi doblan el récord anterior, que estaba en 2′7 billones de  decimales.</p>
<p>Buscando por la red un poco, encontre la<a href="http://www.numberworld.org/y-cruncher/"> pagina oficial del programador </a><strong><a href="http://www.numberworld.org/y-cruncher/">Alexander J. Yee</a>, </strong>desde la cual es posible <a href="http://www.numberworld.org/y-cruncher/y-cruncher%20v0.5.4.9148%20%28fix%201%29.zip">descargar el software </a>programado con el fin de calcular el mayor numero de decimales de PI<span id="more-1978"></span></p>
<p>Aqui les dejo un poco de Informacion[EN]:</p>
<p>y-cruncher is the first efficient and publicly available   Pi-calculator that can sustain a near 100% cpu load on multi-core   computers.<br />
There are other multi-threaded Pi-programs that can achieve high cpu   usage, but few of them can sustain it through an entire Pi computation.</p>
<p>Features:</p>
<ul>
<li>Computes Pi and other constants.</li>
<li>Capable of computing trillions of digits of Pi (among other constants).</li>
<li><strong>Faster than PiFast 4.3 and QuickPi 4.5</strong> when two or more cores are present.</li>
<li>Two algorithms are available for each major constant. One for computation and one for verification. (great for stress-testing)</li>
<li>Extremely efficient even for large computations (&gt; 1 billion digits).</li>
<li><strong>Swap Space</strong> management for large computations that require more memory than there is available.</li>
<li><strong>Multi-Threaded</strong> – Multi-threading can be used to fully utilize modern multi-core processors <strong>without significantly increasing memory usage</strong>.<br />
For large computations, it scales almost linearly with the # of cores.</li>
<li><strong>Multi-Hard Drive</strong> – Multiple hard drives can be   used for faster disk swapping. (scales linearly – as fast as hardware   Raid 0, with no limit to the # of drives)</li>
<li><strong>Semi-Fault Tolerant</strong> – Able to detect and correct for minor errors that may be caused by hardware instability or software bugs.</li>
</ul>
<p>Aside from computing π and other constants, y-cruncher is great for stress testing 64-bit systems with lots of ram.</p>
<dl>
<dd><strong>System Requirements:</strong></dd>
</dl>
<ul>
<li>Windows XP or Windows Server 2000 or later.</li>
<li>Users running Windows Vista or earlier may need to install one of the following updates:<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&amp;displaylang=en">Microsoft C++ 2008 Redistributable Package (x86)</a><br />
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bd2a6171-e2d6-4230-b809-9a8d7548c1b6&amp;displaylang=en">Microsoft C++ 2008 Redistributable Package (x64)</a></li>
</ul>
<p>All times in seconds.</p>
<p>All benchmarks were done using the fastest binary with the fastest achieved settings for the system they were run on.</p>
<p><strong>v0.5.3</strong> and <strong>v0.5.4</strong> are exactly the same speed. So results are directly comparable.</p>
<table border="1" width="1000">
<tbody>
<tr>
<td rowspan="2"><strong>Number of Digits</strong></td>
<td><strong>Core 2 Quad<br />
(8 MB cache)<br />
2.4 GHz</strong></td>
<td><strong>Phenom II X4<br />
3.2 GHz<sup>1</sup></strong></td>
<td><strong>Core i7<br />
2.67 GHz</strong><sup>2</sup></td>
<td><strong>Core i7<br />
4.0 GHz</strong><sup>3</sup></td>
<td><strong>4 x Opteron<br />
(Barcelona)<br />
2.31 GHz</strong><sup>4</sup></td>
<td><strong>2 x Xeon<br />
(Harpertown)<br />
3.2 GHz</strong></td>
<td><strong>2 x Xeon<br />
(Westmere-EP)<br />
3.33 GHz</strong><sup>5</sup></td>
</tr>
<tr>
<td><strong>v0.5.3</strong></td>
<td><strong>v0.5.4</strong></td>
<td><strong>v0.5.4</strong></td>
<td><strong>v0.5.4</strong></td>
<td><strong>v0.5.3</strong></td>
<td><strong>v0.5.4</strong></td>
<td><strong>v0.5.3</strong></td>
</tr>
<tr>
<td>1,000,000</td>
<td>0.566</td>
<td></td>
<td>0.390</td>
<td>0.259</td>
<td></td>
<td>0.353</td>
<td></td>
</tr>
<tr>
<td>10,000,000</td>
<td>5.286</td>
<td></td>
<td>3.667</td>
<td>2.466</td>
<td></td>
<td>3.371</td>
<td></td>
</tr>
<tr>
<td>100,000,000</td>
<td>68.95</td>
<td></td>
<td>43.60</td>
<td>29.53</td>
<td>35.09</td>
<td>30.81</td>
<td>16.29</td>
</tr>
<tr>
<td>1,000,000,000</td>
<td>990.0</td>
<td></td>
<td>619.4</td>
<td>424.3</td>
<td>468.1</td>
<td>395.9</td>
<td>202.5</td>
</tr>
<tr>
<td>10,000,000,000</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>5,339</td>
<td>2,721</td>
</tr>
</tbody>
</table>
<p><sup>1</sup>This was actually a 2.8 GHz Phenom II X3. It was unlocked to 4 cores and then overclocked to <strong>3.2 GHz</strong>. Credit to Raymond Chan.</p>
<p><sup>2</sup><em>Intel Turbo Boost Technology</em> increases actual operating frequency to <strong>2.8 GHz</strong>.</p>
<p><sup>3</sup>Overclocked from 2.67 GHz. Actual operating frequency after <em>Turbo Boost</em> is <strong>4.2 GHz</strong>.</p>
<p><sup>4</sup>Credit to <a href="http://www.xtremesystems.org/forums/member.php?u=18294">skycrane from XtremeSystems</a>.</p>
<p><sup>5</sup><em>Intel Turbo Boost Technology</em> increases actual operating frequency to <strong>3.46 GHz</strong>. Credit to <a href="http://ja0hxv.calico.jp/pai/start.html">Shigeru Kondo</a>.</p>
<p><a href="showHide('old_benchmarks')">Click to see benchmarks of older versions.</a></p>
<div>
<blockquote>
<table border="1" width="800">
<tbody>
<tr>
<td rowspan="2"><strong>Number of Digits</strong></td>
<td><strong>Core 2 Duo<br />
(Merom)<br />
2.0 GHz</strong></td>
<td><strong>Core 2 Quad<br />
(8 MB cache)<br />
2.4 GHz</strong></td>
<td><strong>Phenom II X4<br />
3.2 GHz<sup>1</sup></strong></td>
<td><strong>Core i7<br />
2.67 GHz</strong><sup>2</sup></td>
<td><strong>Core i7<br />
4.0 GHz</strong><sup>3</sup></td>
<td><strong>2 x Xeon<br />
(Harpertown)<br />
3.2 GHz</strong></td>
<td><strong>2 x Xeon<br />
(Gainestown)<br />
3.33 GHz</strong><sup>4</sup></td>
</tr>
<tr>
<td><strong>v0.4.3</strong></td>
<td><strong>v0.4.4</strong></td>
<td><strong>v0.4.4</strong></td>
<td><strong>v0.4.3</strong></td>
<td><strong>v0.4.3</strong></td>
<td><strong>v0.4.3</strong></td>
<td><strong>v0.4.3</strong></td>
</tr>
<tr>
<td>1,000,000</td>
<td>1.085</td>
<td>0.752</td>
<td>0.544</td>
<td>0.439</td>
<td>0.306</td>
<td>0.456</td>
<td></td>
</tr>
<tr>
<td>10,000,000</td>
<td>14.62</td>
<td>8.521</td>
<td>5.254</td>
<td>4.375</td>
<td>2.966</td>
<td>4.305</td>
<td></td>
</tr>
<tr>
<td>100,000,000</td>
<td>248.1</td>
<td>84.58</td>
<td>65.86</td>
<td>50.22</td>
<td>34.41</td>
<td>38.10</td>
<td>25.10</td>
</tr>
<tr>
<td>1,000,000,000</td>
<td></td>
<td>1,183</td>
<td></td>
<td>696.5</td>
<td>478.6</td>
<td>468.2</td>
<td>322.0</td>
</tr>
<tr>
<td>10,000,000,000</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>6,291</td>
<td>4,481</td>
</tr>
</tbody>
</table>
<p><sup>1</sup>This was actually a 2.8 GHz Phenom II X3. It was unlocked to 4 cores and then overclocked to <strong>3.2 GHz</strong>. Credit to Raymond Chan.</p>
<p><sup>2</sup><em>Intel Turbo Boost Technology</em> increases actual operating frequency to <strong>2.8 GHz</strong>.</p>
<p><sup>3</sup>Overclocked from 2.67 GHz. Actual operating frequency after <em>Turbo Boost</em> is <strong>4.2 GHz</strong>.</p>
<p><sup>4</sup><em>Intel Turbo Boost Technology</em> increases actual operating frequency to <strong>3.46 GHz</strong>. Credit to <a href="http://ja0hxv.calico.jp/pai/start.html">Shigeru Kondo</a>.</p>
<table border="1" width="800">
<tbody>
<tr>
<td rowspan="2"><strong>Number of Digits</strong></td>
<td><strong>Core 2 Quad<br />
(6 MB cache)<br />
2.66 GHz</strong></td>
<td><strong>Core i7<br />
2.67 GHz</strong><sup>1</sup></td>
<td><strong>Core i7<br />
4.0 GHz</strong><sup>2</sup></td>
<td><strong>2 x Opteron<br />
(Shanghai)<br />
3.34 GHz</strong><sup>3</sup></td>
<td><strong>2 x Xeon<br />
(Harpertown)<br />
3.2 GHz</strong></td>
<td><strong>2 x Xeon<br />
(Gainestown)<br />
3.2 GHz</strong><sup>4</sup></td>
</tr>
<tr>
<td><strong>v0.4.1</strong></td>
<td><strong>v0.4.2</strong></td>
<td><strong>v0.4.2</strong></td>
<td><strong>v0.4.2</strong></td>
<td><strong>v0.4.2</strong></td>
<td><strong>v0.4.1</strong></td>
</tr>
<tr>
<td>1,000,000</td>
<td>0.918</td>
<td>0.536</td>
<td>0.366</td>
<td>0.617</td>
<td>0.716</td>
<td></td>
</tr>
<tr>
<td>10,000,000</td>
<td>7.859</td>
<td>5.027</td>
<td>3.398</td>
<td>4.288</td>
<td>4.774</td>
<td></td>
</tr>
<tr>
<td>100,000,000</td>
<td>103.1</td>
<td>62.58</td>
<td>42.07</td>
<td>42.31</td>
<td>41.56</td>
<td>28.14</td>
</tr>
<tr>
<td>1,000,000,000</td>
<td>1,360</td>
<td>844.6</td>
<td>574.4</td>
<td>552.9</td>
<td>520.2</td>
<td>365.2</td>
</tr>
<tr>
<td>10,000,000,000</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>6,999</td>
<td>4,961</td>
</tr>
</tbody>
</table>
<p><sup>1</sup><em>Intel Turbo Boost Technology</em> increases actual operating frequency to <strong>2.8 GHz</strong>.</p>
<p><sup>2</sup>Overclocked from 2.67 GHz. Actual operating frequency after <em>Turbo Boost</em> is <strong>4.2 GHz</strong>.</p>
<p><sup>3</sup>Overclocked from 2.9 GHz. Credit to <a href="http://www.xtremesystems.org/forums/member.php?u=47579">Hawkeye4077</a> from XtremeSystems.</p>
<p><sup>4</sup>Credit to <a href="http://ja0hxv.calico.jp/pai/start.html">Shigeru Kondo</a>. Possibly overclocked, but the submitter made no mention of the actual operating frequency.<br />
There has been a report from someone (with identical processors and   faster ram), that these timings are unattainable without overclocking.</p></blockquote>
</div>
<p><strong>Multi-core Scaling: </strong>How much faster is multi-threading?</p>
<ul>
<li>v0.5.3 – v0.5.4:</li>
</ul>
<table border="1" width="1080">
<tbody>
<tr>
<td><strong>Processor(s):</strong></td>
<td><strong>CPU Frequency*:</strong></td>
<td><strong>Memory:</strong></td>
<td><strong>Memory Frequency:</strong></td>
<td><strong>Multi-Threading Benefit:</strong></td>
<td><strong>View Benchmark Data:</strong></td>
</tr>
<tr>
<td>Intel Core 2 Quad Q6600 @ 2.4 GHz</td>
<td>2.4 GHz</td>
<td>6 GB DDR2</td>
<td>800 MHz</td>
<td><strong>3.570 x</strong></td>
<td><a href="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/q6600_scaling">View Benchmarks</a></td>
</tr>
<tr>
<td>Intel Core i7 920 @ 2.67 GHz</td>
<td>3.34 GHz (3.5 GHz Turbo Boost)</td>
<td>12 GB DDR3</td>
<td>1336 MHz</td>
<td><strong>4.104 x</strong></td>
<td><a href="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/ushio_scaling">View Benchmarks</a></td>
</tr>
<tr>
<td>2 x Intel Xeon X5482 Harpertown @ 3.2 GHz</td>
<td>3.2 GHz</td>
<td>64 GB DDR2</td>
<td>800 MHz</td>
<td><strong>6.458 x</strong></td>
<td><a href="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/nagisa_scaling/">View Benchmarks</a></td>
</tr>
</tbody>
</table>
<p>*Note that CPU frequencies higher than the stock frequency imply overclocking.</p>
<p><strong>Al ejecutar el software</strong></p>
<p>Y navegar por algunas opciones:</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/5.jpg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/5-300x269.jpg" alt="" width="394" height="352" /></a></p>
<div><!-- 			#gallery-1 { 				margin: auto; 			} 			#gallery-1 .gallery-item { 				float: left; 				margin-top: 10px; 				text-align: center; 				width: 33%;			} 			#gallery-1 img { 				border: 2px solid #cfcfcf; 			} 			#gallery-1 .gallery-caption { 				margin-left: 0; 			} 		 --> <!-- see gallery_shortcode() in wp-includes/media.php --></p>
<div>
<dl>
<dt> <a title="1" href="http://kira.herobo.com/?attachment_id=435"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/1-150x150.jpg" alt="1" width="150" height="150" /></a> </dt>
</dl>
<dl>
<dt> <a title="2" href="http://kira.herobo.com/?attachment_id=436"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/2-150x150.jpg" alt="2" width="150" height="150" /></a> </dt>
</dl>
<dl>
<dt> <a title="3" href="http://kira.herobo.com/?attachment_id=437"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/3-150x150.jpg" alt="3" width="150" height="150" /></a> </dt>
</dl>
<dl>
<dt> <a title="4" href="http://kira.herobo.com/?attachment_id=438"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/4-150x150.jpg" alt="4" width="150" height="150" /></a> </dt>
</dl>
<dl>
<dt> <a title="6" href="http://kira.herobo.com/?attachment_id=439"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/6-150x150.jpg" alt="6" width="150" height="150" /></a> </dt>
</dl>
<dl>
<dt> <a title="5" href="http://kira.herobo.com/?attachment_id=440"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/5-150x150.jpg" alt="5" width="150" height="150" /></a></dt>
<dt> </dt>
<dt>Algunas Capturas de Pantalla del Software:</p>
<table border="0" width="736">
<tbody>
<tr>
<td><strong>Pi – 500 million digits (6 minutes, 40 seconds)</strong></td>
<td><strong>Pi – 1 billion digits (7 minutes)</strong></td>
<td><strong>Pi – 100 billion digits (28 hours)</strong></td>
</tr>
<tr>
<td><a href="http://www.numberworld.org/y-cruncher/benchmarks/v0.4.3/v0.4.4.7753_kasumi_500m.jpg"><img src="http://www.numberworld.org/y-cruncher/benchmarks/v0.4.3/v0.4.4.7753_kasumi_500m_small.jpg" alt="" width="267" height="210" /></a></td>
<td><a href="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/pi_1b_ushio_5_27_2010.jpg"><img src="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/pi_1b_ushio_5_27_2010_small.jpg" alt="" width="246" height="210" /></a></td>
<td><a href="http://www.numberworld.org/y-cruncher/benchmarks/v0.5.3/pi_100b_nagisa_7_29_2010.jpg"><br />
</a></td>
</tr>
<tr>
<td>2.8 GHz Phenom II X3<br />
(Unlock to 4 Cores + Overclock to 3.2 GHz)<br />
720 Deneb</td>
<td>2.67 GHz Core i7<br />
(Overclock to 4.2 GHz)<br />
920 Bloomsfield</td>
<td></td>
</tr>
<tr>
<td height="37">4 GB DDR3<br />
1333 MHz (dual channel)</td>
<td>12 GB DDR3<br />
1200 MHz (triple channel)</td>
<td></td>
</tr>
<tr>
<td height="37">Fuente: <a href="http://kira.herobo.com/?p=433">http://kira.herobo.com/</a></p>
<p>Contacta al Creador de esta entrada:</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<div>[contact-form-7]</div>
</dt>
</dl>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/08/08/y-cruncher-el-software-utilizado-para-romper-el-record-de-calculo-de-decimales-de-pi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rotación de un cubo 3D usando Java</title>
		<link>http://www.ubicuos.com/2010/03/04/rotacion-de-un-cubo-usando-java/</link>
		<comments>http://www.ubicuos.com/2010/03/04/rotacion-de-un-cubo-usando-java/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 18:09:27 +0000</pubDate>
		<dc:creator>Jorge Alejandro</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[algebra lineal]]></category>
		<category><![CDATA[grafiación]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=617</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Resumen Se muestra una manera sencilla de graficar y rotar un Cubo. Se comienza con la teor&#237;a de transformaciones lineales y proyecciones en el plano, se describen las matrices de rotaci&#243;n y al final se muestra un c&#243;digo muy sencillo de una aplicaci&#243;n hecha en Java que ejemplifica y [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/03/04/rotacion-de-un-cubo-usando-java/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F04%2Frotacion-de-un-cubo-usando-java%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F04%2Frotacion-de-un-cubo-usando-java%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><em>Resumen</em></p>
<p>Se muestra una manera sencilla de graficar y rotar un Cubo. </p>
<p>Se comienza con la teor&iacute;a de transformaciones lineales y proyecciones en el plano, se describen las matrices de rotaci&oacute;n y al final se muestra un c&oacute;digo muy sencillo de una aplicaci&oacute;n hecha en Java que ejemplifica y muestra las transfomaciones descritas.</p>
<p><em>Introducci&oacute;n</em></p>
<p>Se puede rotar una figura en tres dimensiones, sobre el eje X, sobre el eje Y o sobre el eje Z. </p>
<p>En el caso de una computadora, la pantalla es un espacio de dos dimensiones, por lo tanto hay que hacer una proyecci&oacute;n sobre el plano XY cada vez que se manipulen figuras tridimensionales.<br />
 <span id="more-617"></span></p>
<p>Existe un vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /> en el plano R2 con coordenadas (x, y) y un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/alfa.png" width="19" height="15" alt="alfa" /> con respecto al eje X,<br />
se desea rotar el vector en un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/teta.png" width="10" height="15" alt="teta" /> en sentido contrario de las manecillas del reloj con respecto al eje X. El nuevo vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /> &#8216; forma un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/teta.png" width="10" height="15" alt="teta" />+<img src="http://www.ubicuos.com/wp-content/uploads/2010/03/alfa.png" width="19" height="15" alt="alfa" />respecto al vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /> y existe la misma longitud <em>r</em> en ambos vectores como se muestra en la figura:</p>
<p align="center">
<img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig1.png" alt="fig1" />
</p>
<p>Utilizando las definiciones de seno y coseno obtenemos que para el vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /></p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula1.png" width="141" height="84" alt="Formula1" /></p>
<p>Para el vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" />&#8216;, de forma similar, se obtiene que:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula2.png" width="178" height="85" alt="formula2" /></p>
<p>La suma de dos &aacute;ngulos esta dada por:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula3.png" width="421" height="66" alt="formula3" /></p>
<p>Si se considera r = 1 y se sustituyen los valores correspondientes de <em>x</em> e<em> y</em> de la figura 1 tenemos.</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula4.png" width="438" height="66" alt="Formula4" /></p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula5.png" width="251" height="66" alt="Formula5" /></p>
<p>Escribiendo las mismas ecuaciones en forma de matrices se obtiene:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula6.png" width="483" height="66" alt="Formula7" /></p>
<p>La matriz (1) es mejor conocida como matriz de rotaci&oacute;n, la cual determina las nuevas coordenadas (x&#8217;, y&#8217;) obtenidas por rotar un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/teta.png" width="10" height="15" alt="teta" /> un punto (x, y) en sentido contrario de las manecillas del reloj.</p>
<p>  Si las rotaciones se quieren hacer en el espacio R3, se necesita considerar el valor del eje de rotaci&oacute;n (en el cual se desea girar) igual a uno y poner el resto  de los valores igual a cero. En el caso de la matriz (1) se considera que rota con respecto al eje z.</p>
<p>  Las matrices de rotaci&oacute;n correspondientes a cada uno de los ejes est&aacute;n dadas por:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/matrices_rotacion.png"  alt="Matrcies rotacion" /></p>
<p>Para poder mostrar la rotaci&oacute;n en tres dimensiones en un plano de dos dimensiones hay que hacer una proyecci&oacute;n. Una proyecci&oacute;n es una trasnformaci&oacute;n lineal que toma un punto en el espacio de tres dimensiones y lo proyecta en un plano, que en este caso sera el plano xy. La matriz de transfomaci&oacute;n que nos brinda la proyecci&oacute;n de un punto en el plano xy es:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula8.png" width="234" height="96" alt="Formula8" /></p>
<p>Ahora vamos a usar las matrices anteriores para tratar de rotar un cubo.</p>
<p>  Para construir un cubo se pueden tomar una lista de v&eacute;rtices, aristas o caras, para ejemplos ilustrativos vamos a tomar una lista de ocho v&eacute;rtices y vamos a enumerarlos como sigue:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig2.png"  alt="Fig2" /></p>
<p>Si trazamos lineas que unan los v&eacute;rtices de forma tal que formen las aristas del cubo, se obtiene la siguiente figura:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig3.png" width="410" height="337" alt="Fig3" /></p>
<p>La figura 3 muestra un cubo centrado en el origen pero a pesar de que la figura mostrada aparenta ser un cuadrado (dos dimensiones) se sabe que tiene una tercera dimensi&oacute;n dado que tiene las tres coordenadas en cada uno de sus ocho v&eacute;rtices, pero al proyectar sus puntos en el plano xy todos los valores z de los puntos son &quot;planchados&quot; al plano xy. Para darse cuenta de la forma tridimensional de la figura basta con rotar los puntos del cubo sobre el eje <em>x</em> o sobre el eje <em>y</em>. </p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig4.png" width="309" height="282" alt="Fig4" /></p>
<p>El cubo aparenta estar representado en el espacio de tres dimensiones, pero carece de volumen, propiedad t&iacute;pica de los cuerpos tridimensionales. Para lograr una apariencia de volumen se necesitan crear diferentes pol&iacute;gonos que representen cada una de las caras del cubo, los v&eacute;rtices de cada cara del cubo ser&aacute;n los v&eacute;rtices de cada pol&iacute;gono y se puede asignar un color diferente a cada uno de ellos como se muestra.</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig5.png" width="309" height="282" alt="Fig5" /></p>
</p>
<p>Para ilustrar mejor lo antes mencionado, se contruyó un <em>applet</em> que muestra un cubo en 3D el cual puede rotar utlizando las matrices descritas. </p>
<p><strong>Da click en el siguiente enlace para abrir el applet:</strong></p>
<p><a href='http://www.ubicuos.com/wp-content/uploads/2010/03/Hola.html'>Rotación 3D de un cubo usando Java</a></p>
<p><em>Debes mover el ratón mientras mantienes presionado el botón izquierdo sobre el cubo para observar su rotación.</em></p>
<p align="left">A continuaci&oacute;n se muestra el c&oacute;digo que muestra la utilizaci&oacute;n de matrices de rotaci&oacute;n y proyecciones en el plano.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"> <span style="color: #008000; font-style: italic; font-weight: bold;">/**
this software is under GNU GPL
@author: Jorge Alejandro Gutiérrez Orozco
compilation
    javac Cube.java
Ejecution
    appletviewer Hola.html
*/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.applet.*</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.*</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.event.*</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.lang.Math</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.Polygon</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Represents a point in space */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">double</span> x<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">double</span> y<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">double</span> z<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">x</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">y</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">z</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span> x,<span style="color: #000066; font-weight: bold;">double</span> y, <span style="color: #000066; font-weight: bold;">double</span> z<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">x</span><span style="color: #339933;">=</span>x<span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">y</span><span style="color: #339933;">=</span>y<span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">z</span><span style="color: #339933;">=</span>z<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* for move it at origin */</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> getXCoordinate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> Cube.<span style="color: #006633;">origin</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">x</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> getYCoordinate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> Cube.<span style="color: #006633;">origin</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">y</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> getZCoordinate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">/* projection on XY plane*/</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Face<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">Point</span> p1,p2,p3,p4<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Polygon</span> side<span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Polygon</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Face<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
Face<span style="color: #009900;">&#40;</span><span style="color: #003399;">Point</span> p1,<span style="color: #003399;">Point</span> p2,<span style="color: #003399;">Point</span> p3,<span style="color: #003399;">Point</span> p4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">p1</span><span style="color: #339933;">=</span>p1<span style="color: #339933;">;</span>this.<span style="color: #006633;">p2</span><span style="color: #339933;">=</span>p2<span style="color: #339933;">;</span>this.<span style="color: #006633;">p3</span><span style="color: #339933;">=</span>p3<span style="color: #339933;">;</span>this.<span style="color: #006633;">p4</span><span style="color: #339933;">=</span>p4<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p1.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p1.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p2.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p2.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p3.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p3.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p4.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p4.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> drawFace<span style="color: #009900;">&#40;</span><span style="color: #003399;">Graphics</span> g<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> g.<span style="color: #006633;">fillPolygon</span><span style="color: #009900;">&#40;</span>side<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> isVisible<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">Point</span> aux1, aux2<span style="color: #339933;">;</span>
&nbsp;
aux1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span>p2.<span style="color: #006633;">x</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">x</span>, p2.<span style="color: #006633;">y</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">y</span>, p2.<span style="color: #006633;">z</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// p1-&gt;p2</span>
&nbsp;
aux2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span>p4.<span style="color: #006633;">x</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">x</span>, p4.<span style="color: #006633;">y</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">y</span>, p4.<span style="color: #006633;">z</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// p1-&gt;p4</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>aux1.<span style="color: #006633;">x</span><span style="color: #339933;">*</span>aux2.<span style="color: #006633;">y</span> <span style="color: #339933;">-</span> aux1.<span style="color: #006633;">y</span><span style="color: #339933;">*</span>aux2.<span style="color: #006633;">x</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Cube <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">Applet</span> <span style="color: #000000; font-weight: bold;">implements</span>
&nbsp;
<span style="color: #003399;">Runnable</span>, <span style="color: #003399;">MouseMotionListener</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">Thread</span> luxury<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> vertex <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Cube vertexes</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> maxSize <span style="color: #339933;">=</span><span style="color: #cc66cc;">300</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// screen size</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> origin <span style="color: #339933;">=</span> maxSize<span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// (0,0)</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> xMouseP<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span>, yMouseP <span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// X and Y mouse's positions</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> xAux , yAux <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// old X and Y mouse's positions</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> module <span style="color: #339933;">=</span> <span style="color: #cc66cc;">50</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// length of lines of cube.</span>
&nbsp;
<span style="color: #003399;">Image</span> canvasAux<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Graphics</span> backBuffer<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
setSize<span style="color: #009900;">&#40;</span>maxSize,maxSize<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setBackground<span style="color: #009900;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#40;</span>0.2f,0.6f,0.1f,1.0f<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
addMouseMotionListener<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*Initial coordinates of eight vertex
module is half the length of the cube*/</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> coordX <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #339933;">-</span>module,module,module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,module,module,<span style="color: #339933;">-</span>module<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> coordY <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,module,module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,module,module<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> coordZ <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span>module,module,module,module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
canvasAux <span style="color: #339933;">=</span> createImage<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
backBuffer <span style="color: #339933;">=</span> canvasAux.<span style="color: #006633;">getGraphics</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>vertex.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span>coordX<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>,coordY<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>,coordZ<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> start<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> luxury <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Thread</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> luxury.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> stop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> paint<span style="color: #009900;">&#40;</span><span style="color: #003399;">Graphics</span> g<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Cube's points.
Requires four points to create a face,
requires six faces to create a cube.*/</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">3</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">2</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts3 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">6</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts4 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">7</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Color</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> colorRGB <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">black</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">blue</span>,<span style="color: #003399;">Color</span>.<span style="color: #006633;">orange</span>,
&nbsp;
<span style="color: #003399;">Color</span>.<span style="color: #006633;">pink</span>,<span style="color: #003399;">Color</span>.<span style="color: #006633;">red</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">yellow</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
Face<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> faces <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Face<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
backBuffer.<span style="color: #006633;">clearRect</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">6</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
backBuffer.<span style="color: #006633;">setColor</span><span style="color: #009900;">&#40;</span>colorRGB<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
faces<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> 
&nbsp;
Face<span style="color: #009900;">&#40;</span>vertex<span style="color: #009900;">&#91;</span>pts1<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span>,vertex<span style="color: #009900;">&#91;</span>pts2<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span>,vertex<span style="color: #009900;">&#91;</span>pts3<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span>,vertex<span style="color: #009900;">&#91;</span>pts4<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>faces<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">isVisible</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
faces<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">drawFace</span><span style="color: #009900;">&#40;</span>backBuffer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
g.<span style="color: #006633;">drawImage</span><span style="color: #009900;">&#40;</span>canvasAux,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; Touche &quot;</span>, <span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; X &quot;</span> <span style="color: #339933;">+</span> xMouseP, <span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; Y &quot;</span> <span style="color: #339933;">+</span> yMouseP, <span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">65</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> update<span style="color: #009900;">&#40;</span><span style="color: #003399;">Graphics</span> g<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> paint<span style="color: #009900;">&#40;</span>g<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> destroy<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span><span style="color: #003399;">Thread</span>.<span style="color: #006633;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">InterruptedException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Exception in sleep&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotate each vertex of cube over X, Y and Z axis */</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> rota<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span> angleTeta, <span style="color: #000066; font-weight: bold;">double</span> anglePhi, <span style="color: #000066; font-weight: bold;">double</span> anglePsi<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">double</span> teta<span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">toRadians</span><span style="color: #009900;">&#40;</span>angleTeta<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">double</span> phi<span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">toRadians</span><span style="color: #009900;">&#40;</span>anglePhi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">double</span> psi<span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">toRadians</span><span style="color: #009900;">&#40;</span>anglePsi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span> pAux <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span> pAux1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span> pAux2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotating over x */</span>
&nbsp;
pAux1.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span><span style="color: #339933;">;</span>
&nbsp;
pAux1.<span style="color: #006633;">y</span><span style="color: #339933;">=</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux1.<span style="color: #006633;">z</span> <span style="color: #339933;">=</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotating over y */</span>
&nbsp;
pAux2.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> pAux1.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux1.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux2.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> pAux1.<span style="color: #006633;">y</span><span style="color: #339933;">;</span>
&nbsp;
pAux2.<span style="color: #006633;">z</span> <span style="color: #339933;">=</span> pAux1.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux1.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotating over z */</span>
&nbsp;
pAux.<span style="color: #006633;">x</span><span style="color: #339933;">=</span> pAux2.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux2.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> pAux2.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux2.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux.<span style="color: #006633;">z</span><span style="color: #339933;">=</span> pAux2.<span style="color: #006633;">z</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* new position */</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> pAux.<span style="color: #006633;">x</span><span style="color: #339933;">;</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> pAux.<span style="color: #006633;">y</span><span style="color: #339933;">;</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">z</span> <span style="color: #339933;">=</span> pAux.<span style="color: #006633;">z</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* For move the cube over X and Y axis */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> mouseDragged<span style="color: #009900;">&#40;</span> <span style="color: #003399;">MouseEvent</span> e <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* old coordinates */</span>
&nbsp;
xAux <span style="color: #339933;">=</span> xMouseP<span style="color: #339933;">;</span>
&nbsp;
yAux <span style="color: #339933;">=</span> yMouseP<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* new coordinates */</span>
&nbsp;
xMouseP <span style="color: #339933;">=</span> e.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
yMouseP <span style="color: #339933;">=</span> e.<span style="color: #006633;">getY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>yMouseP <span style="color: #339933;">&gt;</span> yAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>yMouseP <span style="color: #339933;">&lt;</span> yAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>xMouseP <span style="color: #339933;">&gt;</span> xAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>xMouseP <span style="color: #339933;">&lt;</span> xAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
repaint<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
e.<span style="color: #006633;">consume</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> mouseMoved<span style="color: #009900;">&#40;</span> <span style="color: #003399;">MouseEvent</span> e <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>El c&oacute;digo anterior pertenece a un archivo llamado Cube.java, para poder visualizar el <em>applet</em> generado se necesita crear una archivo html.</p>
<p>El siguiente c&oacute;digo solo es un html para desplegar el <em>applet</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!-- hola.html --&gt;
&lt;HTML&gt;
&lt;BODY&gt;
Cubo
&lt;APPLET width=&quot;500&quot; height=&quot;500&quot; CODE=&quot;Cube.class&quot;&gt;&lt;br /&gt;&lt;/APPLET&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</pre></div></div>

<p>En caso de contar con un IDE (Eclipse, jGrasp, etc.) no existe necesidad de crear dicho html para visualizar el cubo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/03/04/rotacion-de-un-cubo-usando-java/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Más información sobre el XXV Simposio de Computación en la Educación</title>
		<link>http://www.ubicuos.com/2009/09/19/informacion-sobre-el-xxv-simposio-somec/</link>
		<comments>http://www.ubicuos.com/2009/09/19/informacion-sobre-el-xxv-simposio-somec/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 19:31:50 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Empresas]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Social / Internet]]></category>
		<category><![CDATA[educación]]></category>
		<category><![CDATA[somece]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=386</guid>
		<description><![CDATA[Se realizarán Talleres dirigidos a maestros, niños, jóvenes, coordinadores, tomadores de decisiones y padres de familia; los cuales tienen como objetivo promover y desarrollar nuevas habilidades, así como ampliar la perspectiva de los participantes en el uso de las TIC en educación.
Fechas: sábado 17 de octubre, de 12:00 a 16:00 horas y domingo 18 de octubre de 10:00 a 14:00 horas.]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2009/09/19/informacion-sobre-el-xxv-simposio-somec/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2009%2F09%2F19%2Finformacion-sobre-el-xxv-simposio-somec%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2009%2F09%2F19%2Finformacion-sobre-el-xxv-simposio-somec%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Se realizarán Talleres dirigidos a maestros, niños, jóvenes, coordinadores, tomadores de decisiones y padres de familia; los cuales tienen como objetivo promover y desarrollar nuevas habilidades, así como ampliar la perspectiva de los participantes en el uso de las TIC en educación.<br />
Fechas: sábado 17 de octubre, de 12:00 a 16:00 horas y domingo 18 de octubre de 10:00 a 14:00 horas.<br />
<a href="http://www.ubicuos.com/wp-content/uploads/2009/09/jovenes.jpg"><img src="http://www.ubicuos.com/wp-content/uploads/2009/09/jovenes-300x245.jpg" alt="jovenes" title="jovenes" width="300" height="245" class="alignleft size-medium wp-image-387" /></a><br />
El XVIII Encuentro Nacional de Cómputo Infantil y Juvenil celebrando el XXV aniversario del Programa Computación Gratuita para Niños y Jóvenes de la Academia Mexicana de Ciencias. Incluye presentaciones interactivas por parte de alumnos de educación básica.<br />
Fechas: sábado 17 de octubre, de 9:00 a 14:00 horas, domingo 18 de octubre, de 9:00 a 14:00 horas y lunes 19 de octubre, clausura a las 9:00 horas.</p>
<p>Conferencias Magistrales dictadas por autoridades reconocidas en el campo educativo, tanto nacionales como extranjeras,<br />
con el propósito de motivar la reflexión y visualizar los futuros horizontes tecnológicos y sus implicaciones en torno a la temática propuesta.<br />
Fechas: lunes 19 al miércoles 21 de octubre.</p>
<p>Los Grupos de Trabajo tienen el objeto de promover la participación de todos los asistentes, las ponencias se organizarán bajo la modalidad de grupos de trabajo. La dinámica consistirá en una exposición de 15 a 20 minutos por ponencia y el resto del tiempo se dedicará a la animación de espacios para la discusión y reflexión colectivas y la emisión de conclusiones.<br />
Fechas: lunes 19 al miércoles 21 de octubre.</p>
<p>SOMECE 2009 ofrecerá un espacio adicional para la interacción directa con los autores de proyectos, recursos y materiales, mediante la modalidad de Presentación tipo Carteles, con expresiones múltiples.<br />
Fechas: lunes 19 y martes 20 de octubre.</p>
<p>Se presentarán servicios y productos informáticos para ambientes educativos de reconocidas empresas y organismos del sector en la Exhibición Tecnológica.<br />
Fechas: lunes 19 al miércoles 21 de octubre.</p>
<p>Se convoca a invitados especiales de reconocidas empresas que realizarán Presentaciones Comerciales donde presentarán sus productos y servicios.<br />
Fechas: lunes 19 al miércoles 21 de octubre.</p>
<p>Expo – Arte Digital dónde se presentan trabajos diseñados con el uso de las tecnologías de la información y las comunicaciones, los cuales reflejan la iniciativa de incorporar los productos generados en el área del arte.<br />
Fechas: lunes 19 al miércoles 21 de octubre.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2009/09/19/informacion-sobre-el-xxv-simposio-somec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XXV Simposio Internacional de Computación en la Educación‏</title>
		<link>http://www.ubicuos.com/2009/09/17/xxv-simposio-internacional-de-computacion-en-la-educacion%e2%80%8f/</link>
		<comments>http://www.ubicuos.com/2009/09/17/xxv-simposio-internacional-de-computacion-en-la-educacion%e2%80%8f/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 03:55:48 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Empresas]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Social / Internet]]></category>
		<category><![CDATA[educación]]></category>
		<category><![CDATA[somece]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=379</guid>
		<description><![CDATA[La Sociedad Mexicana de Computación en la Educación, SOMECE, la Universidad Nacional Autónoma de México, la Academia Mexicana de Ciencias, el Instituto Latinoamericano de la Comunicación Educativa y las instituciones colaboradoras  tienen el agrado de invitarle a participar en el XXV Simposio Internacional de Computación en la Educación.]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2009/09/17/xxv-simposio-internacional-de-computacion-en-la-educacion%e2%80%8f/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2009%2F09%2F17%2Fxxv-simposio-internacional-de-computacion-en-la-educacion%25e2%2580%258f%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2009%2F09%2F17%2Fxxv-simposio-internacional-de-computacion-en-la-educacion%25e2%2580%258f%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>La Sociedad Mexicana de Computación en la Educación, SOMECE, la Universidad Nacional Autónoma de México, la Academia Mexicana de Ciencias, el Instituto Latinoamericano de la Comunicación Educativa y las instituciones colaboradoras  tienen el agrado de invitarle a participar en el <strong>XXV Simposio Internacional de Computación en la Educación.</strong><a href="http://www.ubicuos.com/wp-content/uploads/2009/09/simposio.jpg"><img class="alignleft size-medium wp-image-380" title="simposio" src="http://www.ubicuos.com/wp-content/uploads/2009/09/simposio-300x245.jpg" alt="simposio" width="300" height="245" /></a></p>
<p>Del 17 al 21 de octubre 2009, en la Ciudad de México.</p>
<p>Entre las actividades que se llevarán a cabo podemos nombrar:</p>
<ul>
<li><a title="Toda la información sobre los Talleres" href="http://www.somece.org.mx/Simposio2009/index.php/talleres" target="_blank">Talleres</a></li>
<li><a title="toda la información sobre el Encuentro" href="http://www.somece.org.mx/Simposio2009/index.php/encuentro-infantil" target="_blank">XVIII Encuentro Nacional de Cómputo Infantil y Juvenil</a></li>
<li><a title="toda la información" href="http://www.somece.org.mx/Simposio2009/index.php/ponecias" target="_blank">Conferencias Magistrales y Paneles</a></li>
<li><a title="toda la información sobre los Grupos de Trabajo" href="http://www.somece.org.mx/Simposio2009/index.php/grupos-de-trabajo" target="_blank">Grupos de Trabajo</a></li>
<li><a title="toda la información" href="http://www.somece.org.mx/Simposio2009/index.php/exibicion-de-carteles" target="_blank">Presentación de Carteles</a></li>
<li><a title="toda la información" href="http://www.somece.org.mx/Simposio2009/index.php/exibicion-tecnologica" target="_blank">Exhibición Tecnológica</a></li>
<li><a title="toda la información" href="http://www.somece.org.mx/Simposio2009/index.php/expo-artedigital" target="_blank">Expo – Arte Digital</a></li>
</ul>
<p>Contacto :</p>
<ul>
<li>Dirección: Gabriel Mancera N° 1537, entre Parroquia y Félix Cuevas, Colonia del Valle, Delegación Benito Juárez. Distrito Federal. CP 03100, México.</li>
<li>Teléfonos:+52 (55) 5543 3613  y   +52 (55) 5543 3613</li>
<li>Sitio web:http://www.somece.org.mx</li>
<li>Correo: informes@somece.org.mx</li>
</ul>
<p>
<object type="application/x-shockwave-flash" style="width:425px;height:344px;" data="http://www.youtube.com/v/Z9rhc5NohnA&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"><param name="movie" value="http://www.youtube.com/v/Z9rhc5NohnA"/></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2009/09/17/xxv-simposio-internacional-de-computacion-en-la-educacion%e2%80%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 21/107 queries in 4.985 seconds using disk: basic

Served from: www.ubicuos.com @ 2012-02-05 07:58:48 -->
