<?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>SEED</title>
	<atom:link href="http://krfr-1.com/seed/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://krfr-1.com/seed</link>
	<description>Study Experimental: Energy, Design, Architecture &#38; Programation</description>
	<lastBuildDate>Tue, 07 Sep 2010 19:11:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lectura: &#8220;Del papel y lápiz a los procesadores&#8221;</title>
		<link>http://krfr-1.com/seed/?p=707</link>
		<comments>http://krfr-1.com/seed/?p=707#comments</comments>
		<pubDate>Tue, 07 Sep 2010 18:45:58 +0000</pubDate>
		<dc:creator>R.O.D.</dc:creator>
				<category><![CDATA[Investigación]]></category>
		<category><![CDATA[Next Workshops]]></category>
		<category><![CDATA[Teoria]]></category>
		<category><![CDATA[arquitectura avanzada]]></category>
		<category><![CDATA[arquitectura y python]]></category>
		<category><![CDATA[cursos grasshopper]]></category>
		<category><![CDATA[cursos grasshopper barcelona]]></category>
		<category><![CDATA[cursos grasshopper mexico]]></category>
		<category><![CDATA[cursos python]]></category>
		<category><![CDATA[cursos rhinoceros barcelona]]></category>
		<category><![CDATA[cursos rhinoceros mexico]]></category>
		<category><![CDATA[diseño generativo]]></category>
		<category><![CDATA[DPOPS]]></category>
		<category><![CDATA[Energetic Flows]]></category>
		<category><![CDATA[física aplicada]]></category>
		<category><![CDATA[flujos energéticos]]></category>
		<category><![CDATA[generative design]]></category>
		<category><![CDATA[Grasshopper]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python para arquitectos]]></category>
		<category><![CDATA[rhino]]></category>
		<category><![CDATA[rhinoceros]]></category>
		<category><![CDATA[teoría diseño paramétrico]]></category>
		<category><![CDATA[workshops diseño paramétrico]]></category>

		<guid isPermaLink="false">http://krfr-1.com/seed/?p=707</guid>
		<description><![CDATA[Lectura introductoria del taller &#8220;Energetic Flows&#8221; dentro del evento DPOPS (segundo ciclo) en México.
Dos planteamientos de inicio:
¿Qués es más artístico y sostenible: un boceto hecho a mano con papel y lápiz o un código de software?
¿Llegará el momento en que exista software inteligente para que los arquitectos desempeñen su labor más rapidamente y aumentar la [...]]]></description>
			<content:encoded><![CDATA[<p>Lectura introductoria del taller <a title="Workshop Energetic Flows" href="http://www.krfr.org/EnergeticFlows" target="_blank">&#8220;Energetic Flows&#8221;</a> dentro del evento DPOPS (segundo ciclo) en México.</p>
<p>Dos planteamientos de inicio:</p>
<p>¿Qués es más artístico y sostenible: un boceto hecho a mano con papel y lápiz o un código de software?</p>
<p><a href="http://krfr-1.com/seed/wp-content/uploads/2010/09/zaha-puente-2.jpg"><img class="alignleft size-medium wp-image-710" title="zaha-puente (2)" src="http://krfr-1.com/seed/wp-content/uploads/2010/09/zaha-puente-2-300x251.jpg" alt="" width="300" height="251" /></a>¿Llegará el momento en que exista software inteligente para que los arquitectos desempeñen su labor más rapidamente y aumentar la calidad en soluciones creativas, técnicas o precisas.  O bien, serán softwares inteligentes  que le quitarán el trabajo a los arquitectos?</p>
<p>De estas cuestiones, se pueden desprender muchas vías para respoderlas, por otro lado, esto nos lleva a pensar en la evolución de la figura del arquitecto en la &#8220;sociedad del conocimiento&#8221; del siglo XXI.</p>
<p>Hagámos otra pregunta: ¿Cuál sería el común denominador del papel &#8211; lápiz y los procesadores?, será ¿El proceso mental que genera el cerebro ante un problema para buscar una solución que esto sería un algorítmo, o bien el problema en si mismo?</p>
<p>Otra pregunta puede ser: ¿Esta evolución en México, España, Iberoamérica, Europa, Asia será llevada a cabo de la mano de la gran mayoria de las instituciones universitarias y colegios de Arquitectos impulsandola de manera colaborativa?, o bien, será la misma colectividad emergente de los Jóvenes Arquitectos y diseñadores que usen la tecnología para generar nuevos conocimientos que estas instituciones por su estructura se ven difulctados en implementar?</p>
<p>Si la comunicación es una de las características escenciales de nuestra sociedad, ¿Qué es más valorado: el lápiz y el papel o el procesador capaz de comunicarse a todo el mundo?</p>
<p>Estas preguntas, así como un revisión histórica en la evolución de la creatividad y su representación con diversas técnicas hasta llegar al arquitecto que programa sus propias scripts o herramientas paramétricas para desarrollar sus proyectos arquitectónicos o industriales son parte del discurso en esta lectura, y por su puesto, la fuente teórica de donde dar inicio al taller: <a title="Workshop Energetic Flows" href="http://www.krfr.org/EnergeticFlows" target="_blank">&#8220;Energetic Flows&#8221;</a> donde se explican nuevas metodologías de diseño basadas en lenguajes de programación orientadas a objetos como Rhinoscript, dotNET dentro del contexto de Rhinoceros y Grasshopper, sin embargo, también podemos hablar de Python como lenguaje que está adentrándose en todos los software CAD.</p>
<p>Pero, ¿qué pasa con la sostenibilidad en este planteamiento?, donde se encuentra la unión de la POO y los procesadores con la sostenibilidad?. Para nosotros en nuestra investigación, nos encaminamos a estudiar los diversos flujos energéticos que afectan a una obra, en saber sus constantes, sus parámetros y asi, al estudiarlos, poderlos ingresar dentro de código, por lo que con un análisis y estudio de estos, podemos llegar a tener &#8220;códigos o scripts o herramientas paramétricas&#8221; precisas en cálculo y en visualización 3D.</p>
<p>SEED y sus integrantes, no tomamos la postura de tener las respuestas correctas en esta nueva brecha y cambio de paradigmas, sino solo pretendemos ser una voz que se alza por tener una visión de a donde nos llevan estas tecnologías gracias a nuestra investigación y desarrollo particular de proyectos.</p>
<p>El dar el salto al uso de procesadores de manera conciente en la creación Arquitectónica, es cambiar la forma de proyectar, la forma en la que hemos estado acustambrados a diseñar.<strong> El dibujo se vuelve una base de datos en continua modificación, ya no es solo una representación. </strong></p>
<p>Para saber los lugares donde se darán estas lecturas, revisa la web del evento DPOPS México 2010 (segundo ciclo): <a href="http://www.krfr.org/EnergeticFlows" target="_blank">http://www.krfr.org/EnergeticFlows</a></p>
]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=707</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DPOPS MÉXICO 2010: Conferencia + Workshop ENERGETIC FLOWS + Work Session</title>
		<link>http://krfr-1.com/seed/?p=672</link>
		<comments>http://krfr-1.com/seed/?p=672#comments</comments>
		<pubDate>Thu, 05 Aug 2010 23:38:39 +0000</pubDate>
		<dc:creator>R.O.D.</dc:creator>
				<category><![CDATA[Variado]]></category>
		<category><![CDATA[Arquitectura generativa México]]></category>
		<category><![CDATA[Diseño paramétrico DF]]></category>
		<category><![CDATA[Diseño paramétrico México]]></category>
		<category><![CDATA[DPOPS]]></category>
		<category><![CDATA[Energetic Flows]]></category>
		<category><![CDATA[Grasshopper DF]]></category>
		<category><![CDATA[grasshopper mexico]]></category>
		<category><![CDATA[KRFR]]></category>
		<category><![CDATA[R.O.D.]]></category>
		<category><![CDATA[Rhino México]]></category>
		<category><![CDATA[Rhinoceros DF]]></category>
		<category><![CDATA[rhinoceros mexico]]></category>
		<category><![CDATA[seed]]></category>

		<guid isPermaLink="false">http://krfr-1.com/seed/?p=672</guid>
		<description><![CDATA[a) JUSTIFICACIÓN DEL EVENTO DPOPS &#8220;Diseño Paramétrico Orientado a Proyectos Sostenibles&#8221; 2010
 
En esta etapa del desarrollo histórico de la Arquitectura, vemos que varios paradigmas están cayendo de
diversas escuelas, vemos que nuestras necesidades como sociedad son muy diferentes que cuando se
fundamentaron las reglas del modernismo. Es cierto que la propia esencia del humano no cambiará, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>a) JUSTIFICACIÓN DEL EVENTO DPOPS &#8220;Diseño Paramétrico Orientado a Proyectos Sostenibles&#8221; 2010</strong></p>
<p><strong> </strong><a href="http://krfr-1.com/EnergeticFlows"><img class="size-full wp-image-685 alignleft" title="RS-SEED-EF" src="http://krfr-1.com/seed/wp-content/uploads/2010/08/RS-SEED-EF.jpg" alt="" width="408" height="247" /></a></p>
<p>En esta etapa del desarrollo histórico de la Arquitectura, vemos que varios paradigmas están cayendo de<br />
diversas escuelas, vemos que nuestras necesidades como sociedad son muy diferentes que cuando se<br />
fundamentaron las reglas del modernismo. Es cierto que la propia esencia del humano no cambiará, sin<br />
embargo, las condicionantes medio ambientales, sociales, culturales, económicas, tecnológicas hoy en día son<br />
muy diversas al siglo pasado. Ante tales circunstancias, es que estamos desarrollando el concepto <a href="http://krfr-1.com/blogKRFR/?p=414" target="_blank">ORGAN: hipersostenibilidad + Inteligencia</a> , intentando marcar bases para genererar estructuras de aportación.<br />
Las nuevas tecnologías de información en la Arquitectura como el Diseño paramétrico y la P.O.O (Programación<br />
orientada a objetos) nos brindan un potencial enorme en la forma en como gestionamos la información y el<br />
conocimiento desde la etapa conceptual hasta la ejecución en obra, sentando las bases técnicas para pasar del determinismo a la emergencia en cualquiera de los procesos del proyecto.<br />
SEED apuesta por la unión de la P.O.O. con la sostenibilidad bajo una mirada ética tomando como uno de los<br />
puntos de partida los flujos del contexto del proyecto, creemos que la potencial real de este tipo de tecnología se<br />
centra en analizar los datos que envuelven al proyecto y partiendo de ahí moldearlo. Apostamos por darle la<br />
vuelta al proceso de diseño, no vemos lógico que se siga diseñando como en el siglo XX influenciado por el mecanicismo, sobre todo fomentando el uso de herramientas informáticas para el análisis posterior de que se ha proyectado el edificio. El análisis es el que debe de generar la resultante. Era justificable que eso en el pasado no se hiciera, ya que los procesos no podían ligarse, pero actualmente, no existe justificación alguna para que no se cambie la forma de proyectar.<br />
Con este ciclo de talleres, impulsamos a que los estudiantes y los profesionales conozcan esta metodología que desarrollamos y una de las plataformas más comerciales y con mayor proyección internacional que nosotros consideramos apropiadas para mostrar estos conceptos y metodologías es Grasshopper &amp; Rhinoceros , ambas dentro de la línea de investigación internacional OR/gan.<br />
En los talleres pasados que hicimos en México, aunque fue difícil que las personas y universidades creyeran lo<br />
que se les decía sobre el potencial de estas herramientas y metodología, logramos encontrar un hueco con diversas Universidades que tuvieron confianza en nosotros, después de esos 5 talleres que hicimos hemos visto un incremento en la aplicación de planes de estudio y en investigación sobre estas temáticas en México, lo cual nos entusiasma y enorgullece por participar en el avance de este país sobre estas temáticas.</p>
<p><strong>b) OBJETIVOS GENERALES</strong><br />
Este ciclo de talleres cumplen diversos objetivos:<br />
1) Ayudar a la consistencia de la línea de investigación OR/gan, permitiendo tener contacto personal de SEED |<br />
KRFR con las Instituciones, profesionistas y estudiantes Mexicanos interesados en participar. De esta manera<br />
concretar las áreas de actuación y los compromisos.<br />
2) Iniciar la auto financiación de KRFR | SEED para el desarrollo de la investigación OR/gan<br />
3) Incrementar la red de cooperación en México y definir los actores para los próximos 6 meses.<br />
4) Acercar las nuevas tecnologías y formas de pensar a los estudiantes y profesionales de México bajo una mirada<br />
ética desde el desarrollo conceptual sostenible con estas metodologías y nuevas herramientas de gestión de<br />
información y conocimiento.<br />
5) Crear movimiento e interés por estos temas, para la evolución de México y ser competitivos a nivel<br />
internacional.<br />
6)Enseñar el potencial de la P.O.O unida con la sostenibilidad para modelar el proyecto mediante flujos<br />
energéticos.</p>
<p><strong><a name="sedes">c) SEDES Y FECHAS</a></strong></p>
<p><strong>Guadalajara: 24 al 28 de Septiembre 2010</strong></p>
<ul>
<li><em>Conferencia de apertura: 24 septiembre, Puerto Vallarta: <a href="http://tresuncuarto.com/congreso/presentacion.html" target="_blank">&#8220;Génesis de la Arquitectura Paramétrica&#8221;</a><br />
</em></li>
<li><em>Workshop &#8220;Energetic Flows&#8221;: Tecnológico de Monterrey, Campus Guadalajara &#8211; 25 al 27 de septiembre </em></li>
<li><em>Work Session: </em><em> Tecnológico de Monterrey, Campus Guadalajara &#8211; 2</em><em>8 de septiembre</em> <em>/ Tema: Interfaces<br />
</em></li>
</ul>
<p><strong>Estado de México: 4 octubre al 9 de octubre</strong></p>
<ul>
<li><em>Conferencia  de introducción: </em><em>UNITEC, Campus Atizapan </em><em> </em></li>
<li><em>Workshop &#8220;Energetic Flows&#8221;: UNITEC, Campus Atizapan- 4 al 8 de octubre </em></li>
<li><em>Work Session: </em><em>UNITEC, Campus Atizapan, </em><em>9 de octubre</em><em><br />
</em></li>
</ul>
<p><strong>León, Guanajuato: del 7 al 11 de octubre</strong></p>
<ul>
<li><em>Conferencia de introducción: </em><em>(por confirmar)</em></li>
<li><em>Workshop &#8220;Energetic Flows&#8221;: Tecnológico de Monterrey, Campus León </em><em>(por confirmar)</em></li>
<li><em>Work Session: 11 de octubre </em><em>(por confirmar)</em></li>
</ul>
<p><strong>Querétaro: 28 octubre al 1 noviembre</strong></p>
<ul>
<li><em>Conferencia de apertura y de introducción: Por confirmar &#8211; 28 de octubre</em><em> </em></li>
<li><em>Workshop &#8220;Energetic Flows&#8221;: Universidad del Valle de México, campus Querétaro &#8211; 29 al 31 de octubre</em><em> </em></li>
<li><em>Work Session: 1 de noviembre </em></li>
</ul>
<p><strong>Distrito Federal, Zona Sur: 4 al 18 de noviembre</strong></p>
<ul>
<li><em>Conferencia de introducción: Por confirmar &#8211; </em><em>(por confirmar)</em></li>
<li><em>Workshop &#8220;Energetic Flows&#8221;: Universidad Iberoamericana, DF (sur), 4 al 7 de noviembre  (por confirmar exactame te las fechas)<br />
</em></li>
<li><em>Work Session: 8 de octubre </em><em>(por confirmar)</em></li>
</ul>
<p><strong><a name="costos">d) COSTO DEL EVENTO</a></strong></p>
<ul>
<li><strong>Conferencia<br />
</strong></p>
<ol>
<li>Conferencia de apertura: Puerto Vallarta, 24 septiembre, <a title="Conferencia de Apertura" href="http://www.tresuncuarto.com/congreso/presentacion.html" target="_blank">más información.</a></li>
<li>Conferencia introductoria en cada sede: Entrada libre</li>
</ol>
</li>
</ul>
<ul>
<li><strong>Workshop<br />
</strong></p>
<ol>
<li>Estudiantes Universitarios: <strong>$3800</strong></li>
<li>Estudiantes Postgrado: <strong>$4500</strong></li>
<li>Profesionales:<strong> $5200</strong><br />
<em>El costo es sin IVA<br />
Revisa los descuentos que existen según tu universidad o asociación a la que pertenezcas.<br />
Si eres socio de Grupo KRFR tienes un 50% de descuento.<strong><br />
</strong></em></li>
</ol>
</li>
<li>
<ol><em> </em></ol>
</li>
<li><strong>Work Session: Hay dos formas de asistir:<br />
</strong></p>
<ol>
<li>Participante: Profesional con conocimientos del tema a tratar y que desea participar en la creación del algoritmo.</li>
<li>Oyentes: Tienen interés por asistir pero no conocen del tema.La entrada es Gratuita para ambos perfiles, sin embargo el cupo es restringido a 10 personas en total.<br />
Es necesario que envies tu CV a mexdf@krfr.org para que SEED pueda dar el OK en tu asistencia.</p>
<p><a title="Más info Work Session" href="http://www.krfr-1.com/EnergeticFlows" target="_blank">Más información sobre el Work Session.</a></li>
</ol>
</li>
</ul>
<p><strong><a name="becas">f) BECAS Y DESCUENTOS</a></strong></p>
<ul>
<li>BECAS
<ol>
<li>-BECAS SEED | KRFR<br />
Otorgamos una beca al 100% a la persona que nos ayude a hacer difusión de este evento así como ayudarnos a organizar la información de este. Más información, contacta con nosotros: <a title="enviar mail" href="mexdf@krfr.org" target="_blank">mexdf@krfr.org</a></li>
<li>BECAS POR INSTITUCIÓN PATROCINADORA<br />
Las instituciones, empresas y estudios que nos están apoyando con sus instalaciones y la difusión, tienen 1 beca al 100% para un estudiante y otra para un profesor.</li>
</ol>
</li>
<li>DESCUENTOS
<ol>
<li>5% de descuento al poner la clave que has visto en alguna web, flyer, cartel, mail, etc</li>
<li>7% de descuento si pagas 15 días antes del evento</li>
<li>10% de descuento por convenio de difusión con algunas Universidades.</li>
<li>10% de descuento por convenio con algunas Universidades.<em><br />
</em>NOTAS: Pregunta si tu Universidad tiene convenio con SEED | KRFR<em>, el descuento del punto 3 y 4 no se le suma el 5% de descuento de la clave, pero si se puede sumar el 7% de pronto pago)</em></li>
<li><em>50% de descuento (no acumulable) si eres socio de Grupo KRFR<br />
</em></li>
</ol>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=672</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Work Session 1: Beginning OR/GAN: desarrollo de componentes de Grasshopper con dotNET</title>
		<link>http://krfr-1.com/seed/?p=661</link>
		<comments>http://krfr-1.com/seed/?p=661#comments</comments>
		<pubDate>Mon, 21 Jun 2010 07:36:07 +0000</pubDate>
		<dc:creator>R.O.D.</dc:creator>
				<category><![CDATA[Variado]]></category>
		<category><![CDATA[Grasshopper]]></category>
		<category><![CDATA[KRFR]]></category>
		<category><![CDATA[MySQL & grasshopper]]></category>
		<category><![CDATA[OR/GAN]]></category>
		<category><![CDATA[php & grasshopper]]></category>
		<category><![CDATA[python & Grasshopper]]></category>
		<category><![CDATA[rhino barcelona]]></category>
		<category><![CDATA[rhinoceros]]></category>
		<category><![CDATA[rhinoceros barcelona]]></category>
		<category><![CDATA[seed]]></category>
		<category><![CDATA[Workshop Grasshopper]]></category>
		<category><![CDATA[workshop rhinoceros]]></category>
		<category><![CDATA[workshops arquitectura barcelona]]></category>

		<guid isPermaLink="false">http://krfr-1.com/seed/?p=661</guid>
		<description><![CDATA[ Invitamos a todos los desarrolladores y arquitectos / diseñadores interesados en generar herramientas para Grasshopper, Rhinoceros, Blender con lenguajes como Visual Basic .NET, C#, Python, PHP, MySQL, Processing, Ardunio.
En esta primer sesión se explicara la investigación que SEED esta proponiendo e iniciando  junto a Universidades en diferentes países.
En concreto, se abordará el desarrollo de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://krfr-1.com/seed/wp-content/uploads/2010/06/worksessionMySQL.jpg"><img class="alignleft size-full wp-image-662" title="worksessionMySQL" src="http://krfr-1.com/seed/wp-content/uploads/2010/06/worksessionMySQL.jpg" alt="" width="483" height="265" /></a> Invitamos a todos los desarrolladores y arquitectos / diseñadores interesados en generar herramientas para Grasshopper, Rhinoceros, Blender con lenguajes como Visual Basic .NET, C#, Python, PHP, MySQL, Processing, Ardunio.</p>
<p>En esta primer sesión se explicara la investigación que SEED esta proponiendo e iniciando  junto a Universidades en diferentes países.</p>
<p>En concreto, se abordará el desarrollo de un componente que una bases de datos en un servidor MySQL  con Grasshopper.  Creemos que es un componente muy útil y con gran potencial para desarrollar diversas aplicaciones.</p>
<p>Otro objetivo es conocer a diversos desarrolladores e interesados en este mundo e iniciar el ciclo de talleres y cursos de verano:<strong><a href="http://summer.seed.cat" target="_blank"> http://summer.seed.cat</a></strong></p>
<p>Durante julio tenemos dos talleres:</p>
<p><strong><a href="http://krfr-1.com/WS/2010summer/DPOPS-summer2010" target="_blank">DPOPS: &#8220;Diseño paramétrico orientado a proyectos sostenibles&#8221;</a></strong></p>
<p><a href="http://krfr-1.com/WS/2010summer/REPARQ-summer2010.pdf" target="_blank"><strong>Representación Arquitectónica</strong></a></p>
<p>Para finales de Septiembre estamos organizando un taller sobre <a href="http://www.krfr-1.com/SEEDcat/ARTS&amp;CAM" target="_blank">fabricación digital orientado al uso de materiales ecológicos.</a></p>
<p>Y para noviembre (aunque nos falta confirmar fechas) estamos desarrollando el taller:<br />
<a href="http://krfr-1.com/WS/2010summer/BIOcode-SelfConstruction2010.pdf" target="_blank"><strong>BIO CODE SELF CONSTRUCTION</strong></a>, para construir una estructura semi contextualizada escala 1:1 con un sistema constructivo biodegradable, basada en el diseño de estructuras de información que contemplan los flujos energéticos, usando la plataforma de Grasshopper y Rhinoceros.</p>
]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=661</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unión del diseño paramétrico con la sostenibilidad y la POO en la arquitectura</title>
		<link>http://krfr-1.com/seed/?p=603</link>
		<comments>http://krfr-1.com/seed/?p=603#comments</comments>
		<pubDate>Sun, 23 May 2010 12:18:24 +0000</pubDate>
		<dc:creator>R.O.D.</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Grasshopper]]></category>
		<category><![CDATA[Investigación]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Phyton]]></category>
		<category><![CDATA[Programando los flujos]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Rhinoscript]]></category>
		<category><![CDATA[rhinoceros]]></category>
		<category><![CDATA[arquitectura sustentable]]></category>
		<category><![CDATA[cursos barcelona grasshopper]]></category>
		<category><![CDATA[cursos rhinoceros barcelona]]></category>
		<category><![CDATA[cursos rhinoscript barcelona]]></category>
		<category><![CDATA[diseño generativo]]></category>
		<category><![CDATA[diseño paramétrico]]></category>
		<category><![CDATA[ecodesign]]></category>
		<category><![CDATA[generative components]]></category>
		<category><![CDATA[generative design]]></category>
		<category><![CDATA[grasshopper Barcelona]]></category>
		<category><![CDATA[grasshopper mexico]]></category>
		<category><![CDATA[Grasshopper Portugal]]></category>
		<category><![CDATA[grasshopper3D]]></category>
		<category><![CDATA[new methodologies]]></category>
		<category><![CDATA[nuevas estrategias]]></category>
		<category><![CDATA[parametric design]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rhinoceros mexico]]></category>
		<category><![CDATA[Rhinoceros portugal]]></category>
		<category><![CDATA[rhinoscript barcelona]]></category>
		<category><![CDATA[rhinoscript mexico]]></category>
		<category><![CDATA[sostenibilidad y diseño generativo]]></category>
		<category><![CDATA[workshops diseño generativo]]></category>

		<guid isPermaLink="false">http://krfr-1.com/seed/?p=603</guid>
		<description><![CDATA[Un breve y general artículo que trata de adentrarse y explicar la unión entre la sostenibilidad, la POO y el diseño paramétrico en la arquitectura y construcción, dando vínculo a la investigación que proponemos a diferentes Universidades en diferentes países, así como a empresas, institutos, organismos, profesionales y estudiantes. Actualmente en trato con Universidades de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://krfr-1.com/seed/wp-content/uploads/2010/05/3renders.jpg"><img class="alignleft size-full wp-image-624" title="3renders" src="http://krfr-1.com/seed/wp-content/uploads/2010/05/3renders.jpg" alt="" width="535" height="261" /></a>Un breve y general artículo que trata de adentrarse y explicar la unión entre la sostenibilidad, la POO y el diseño paramétrico en la arquitectura y construcción, dando vínculo a la investigación que proponemos a diferentes Universidades en diferentes países, así como a empresas, institutos, organismos, profesionales y estudiantes. Actualmente en trato con Universidades de Portugal, Italia, México, Catalunya.</p>
<p><strong>¿Cuál es el “Punto de Unión” entre POO y sostenibilidad?</strong></p>
<p>En realidad este “Punto de Unión” no es en ningún momento dificil de entender a pesar de verse en un inicio complejo, es muy importante la claridad de observarlo, ya que de esto depende el éxito de nuestro análisis, investigación, creación de algoritmos, creación de herramientas paramétricas y desarrollo de proyectos Arquitectónicos.</p>
<p>Tal vez se siga pensando que no es necesario un cambio en la forma de proyectar, sin embargo hay grandes problemáticas que tienden a impulsar este cambio en la forma de pensar de los estudiantes y de los profesionistas ya que:</p>
<p>-Hay grandes retos en cada sociedad que necesitan de soluciones rápidas, exactas y responsables.</p>
<p>-La competencia a nivel local y sobre todo internacional están usando técnicas de automatización de procesos en el diseño arquitectónico y en la construcción.</p>
<p>-Cada día más, la competencia internacional será una competencia local.</p>
<p>En la visión de SEED | KRFR se puede cambiar desde las raíces el resultado arquitectónico que tenemos en nuestras sociedades para que los proyectos de manera implícita estén mucho más contextualizados a su entorno. Esta es el área que vemos con más importancia para aplicar los conocimientos de programación en la Arquitectura. <a href="http://krfr-1.com/seed/wp-content/uploads/2010/05/12b.jpg"><img class="alignright size-medium wp-image-626" title="12b" src="http://krfr-1.com/seed/wp-content/uploads/2010/05/12b-300x297.jpg" alt="" width="300" height="297" /></a></p>
<p>Para lograr este cambio y evolución en la forma de pensar el concepto y por tanto de proyecto proponemos los siguientes puntos, los cuales ya los estamos ejecutando en 3 países de forma simultanea (España, Portugal, México):</p>
<p>1) Desarrollo de estrategias de marketing basada en los beneficios sociales, ambientales y económicos mediante líneas de investigación que promuevan la empatía, la ética y la contextualización</p>
<p>2) Desarrollo de un plan de negocio de formación especializada para estudiantes y profesionales basado en la línea de investigación colectiva entre estudiantes, personas físicas e instituciones a nivel internacional</p>
<p>3) Desarrollo de una base administrativa institucional que de seguimiento y una el marketing con la investigación</p>
<p>4)Desarrollo de un equipo humano internacional y multidisciplinar</p>
<p><a href="http://krfr-1.com/seed/wp-content/uploads/2010/05/12e.jpg"><img class="alignleft size-medium wp-image-627" title="12e" src="http://krfr-1.com/seed/wp-content/uploads/2010/05/12e-300x225.jpg" alt="" width="300" height="225" /></a>Con estos puntos creemos que es posible crear estructuras “sostenibles” a lo largo del tiempo que se adapten a sus circunstancias culturales y temporales, mejor dicho, no solo “sostenibles” sino aportadoras de recursos a su contexto, a lo cual nosotros llamamos “ORGAN” a las estructuras aportadoras a su entorno y que han sobrepasado lo que definimos como “hipersostenibilidad”, ya que también vemos necesario introducir el concepto de “inteligencia” en las edificaciones y objetos, sin embargo este concepto de inteligencia no tiene nada que ver con los mal llamados “edificios inteligentes” que gastan recursos innecesarios por su mala planeación que tratan de ser corregidos con sistemas domóticos. Pero, ¿Dónde queda el diseño paramétrico o la POO en todo esto?, ¿De que forma el diseño generativo mediante algorítmos nos ayuda?, o ¿acaso es solo una moda la generación de formas mediante herramientas paramétricas?, ¿En realidad grasshopper, Rhinoceros, Rhinoscript, python, visual basic, pymel, generative components son herramientas que nos puedes ayudar mejor para gestionar los proyectos, para proyectarlos y concebirlos a diferencia del tradicional Autocad, 3Dmax, Sketchup, Revit?<br />
Las respuestas, las vamos organizando en la investigación OR/GAN, que es un conjunto de conceptos que mezcla un gran cantidad de datos de diversas disciplinas y de los flujos energéticos que envuelven a un proyecto, por lo que la POO es necesaria para poder gestionarlos y dar resultados formales contextualizados bajo una metodología de arquitectura generativa planteada por SEED y KRFR.</p>
<p>Si te ha interesado estas partes del artículo, <a title="Artículo completo Programación y sostenibilidad" href="http://www.krfr-1.com/K/articulos/A/sostenibilidad y POO.pdf" target="_blank">clic aqui para leer el artículo completo en el formato de SEE</a>D, o bien click aqui para leerlo en la <a title="Artículo en la Revista Multiplica" href="http://www.revistamultiplica.com/live/" target="_blank">revista multiplica (mes abril 2010)</a> de la Cámara de la Industria Mexicana de la Construcción (CIMC), página 48-49</p>
]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=603</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Overview on Constraint Enforced Formulations of Variational Dynamics</title>
		<link>http://stochasticandlagrangian.blogspot.com/2010/04/overview-on-constraint-enforced.html</link>
		<comments>http://stochasticandlagrangian.blogspot.com/2010/04/overview-on-constraint-enforced.html#comments</comments>
		<pubDate>Tue, 20 Apr 2010 21:55:00 +0000</pubDate>
		<dc:creator>Rabindranath Andujar Moreno</dc:creator>
				<category><![CDATA[Variado]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6352511023055453909.post-771607119889247705</guid>
		<description><![CDATA[A couple of weeks ago a very interesting paper entered my hard drive: Review of classical approaches for constraint enforcement in multibody systems.It is a fairly clarifying overview on solid grounds of certain methodologies to solve multibody systems...]]></description>
			<content:encoded><![CDATA[A couple of weeks ago a very interesting paper entered my hard drive: <a href="http://www.google.es/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAoQFjAA&amp;url=http%3A%2F%2Fsoliton.ae.gatech.edu%2Fpeople%2Fobauchau%2Fpublications%2FLaulusa%2BBauchau07.pdf&amp;ei=WhfOS_3JNIKe_ganppxt&amp;usg=AFQjCNGO1CDPIxNxdwc9JPhcDkk5cu_VXA&amp;sig2=4aLcduMx8UpE4g3sLnRAgQ">Review of classical approaches for constraint enforcement in multibody systems</a>.<br />It is a fairly clarifying overview on solid grounds of certain methodologies to solve multibody systems dynamics.<br />These methodologies differ from the ones I have encountered in the spreaded dynamics engines in their apparently more robust and simple formulation.<br />Here is a synthesis of this paper:<br /><br /><blockquote>Multibody systems present two distinguishable features:<br /><ol><li>Bodies undergo finite relative rotations, which introduce nonlinearities</li><li>Bodies are connected by mechanical joints that impose restrictions, which mean a set of governing equations that combine differential and algebraic equations (ODEs and DAEs, respectively).</li></ol>Lagrange's equation of the first kind has the following aspect:<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/_1CZ6zhe_ay0/S84btYzOWXI/AAAAAAAAAJE/ViuafLK0QzY/s1600/Pantallazo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_1CZ6zhe_ay0/S84btYzOWXI/AAAAAAAAAJE/ViuafLK0QzY/s320/Pantallazo.png" /></a></div>Where<br /><ul><li>M=M(q,t) is the mass matrix</li><li>q is the generalized coordinates vector</li><li>B is the constraint matrix</li><li>λ is the array of Lagrange multipliers</li><li>F is the dynamic externally applied forces</li></ul>If all the constraints are holonomic (velocity independent), B is called the Jacobian matrix, and the generalized coordinates, q, are linked by m algebraic constraints.<br />Lagrange's equations of the first kind form a set of (m+n) Differential Algebraic Equations.<br />The approach of the following methods is to use algebraic procedures in order to eliminate Lagrange's multipliers and then obtain a set of ODEs.<br /><ul><li>Maggi's formulation: implies the creation of a vector containing the so called <i>kinematic parameters</i>, <i>generalized speeds</i> or <i>independent quasi-velocities</i> by the analyst in order to obtain a Γ matrix. This matrix spans the null space of the constraint matrix and allows for the elimination of the Lagrange multipliers.</li><li>Index-1 formulation: requires that initial condition of the problem be subjected to the constraint conditions. Then, it is possible to obtain a system of 2nd order ODEs that is solvable by rearranging the previous equation, extracting the Lagrange multipliers and hence obtaining:<span id="goog_883168442"></span><span id="goog_883168443"></span></li></ul><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_1CZ6zhe_ay0/S84hMPH4heI/AAAAAAAAAJM/eA8mkNIa8PQ/s1600/Pantallazo-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_1CZ6zhe_ay0/S84hMPH4heI/AAAAAAAAAJM/eA8mkNIa8PQ/s320/Pantallazo-1.png" /></a></div><ul><li>Null space formulation: this method solves the system of second order ODEs by premultiplying the first part of the equation by the transposed null space matrix thus eliminating the Lagrange multipliers.</li><li>Udwadia-Kalaba formulation: this method represents a more compact and general form of solving the DAEs by means of the Moore-Penrose generalized inverse. It is based on Gauss' Principle of Minimum Constraint, which establishes that the explicit equations of motion be expressed as the solution of a quadratic minimization problem subjected to constraints, but at the acceleration level.</li></ul></blockquote><blockquote><br />All these formulations transform the (2n+m) first order DAEs into ODEs by eliminating Lagrange multipliers.<br />Maggi's formulation yields (2n-m) first order ODEs.<br />Index-1, null space and Udwadia-Kalaba form sets of (n) second order ODEs which could be alternatively recast into (2n) first order ODEs for the n generalized coordinates and the n generalized velocities.<br />The main advantage of these methodologies is not so much the reduction in the number of equations but rather in the change from DAEs to ODEs.<br />There is a warning on the constraint drift phenomenon, for which these method will be more affected (not so much in Maggi's formulation), and that would require constraint stabilization techniques.</blockquote>My conclusion is that it seems the way to go, not only for the claims of more stable and quick numerical techniques available to get them working, but also for an apparently more clear approach in the theoretical field.<br />Particularly, I have done some research into the Udwadia-Kalaba formulation, and definitively is a very promising one.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6352511023055453909-771607119889247705?l=stochasticandlagrangian.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=605</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ODE DYNAMICS ENGINE QUICK OVERVIEW</title>
		<link>http://stochasticandlagrangian.blogspot.com/2010/04/ode-dynamics-engine-quick-overview.html</link>
		<comments>http://stochasticandlagrangian.blogspot.com/2010/04/ode-dynamics-engine-quick-overview.html#comments</comments>
		<pubDate>Thu, 15 Apr 2010 22:26:00 +0000</pubDate>
		<dc:creator>Rabindranath Andujar Moreno</dc:creator>
				<category><![CDATA[Variado]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6352511023055453909.post-856764917740920547</guid>
		<description><![CDATA[After seeing my own simulator running there is a whole lot of things that I wish it had.All this stuff is more or less complicated to achieve, but from my previous research I have found some Open Source engines from which I can learn a lot.The best doc...]]></description>
			<content:encoded><![CDATA[After seeing my own simulator running there is a whole lot of things that I wish it had.<br />All this stuff is more or less complicated to achieve, but from my previous research I have found some Open Source engines from which I can learn a lot.<br /><br />The best documented one so far is ODE (<a href="http://www.ode.org/">www.ode.org</a>), and also the one I intend to merge with Blender.<br />So, I present a very quick and thorough overview on how this works, in order to have some scope.<br /><br />The first thing to disentangle is how it gets working. For that, just looking at the user's manual one gets the following algorithm:<br /><br /><blockquote>1.-Create a Dynamics world<br /><ul><li>This basically means to make an instance of the dxWorld struct.</li></ul>2.-Create the bodies<br /><ul><li>Attach the bodies to the world (this means adding data to the dxBody* array of the dynamics world).</li><li>Set their properties (position and orientation of point of reference, its linear and angular velocities, the mass of the bodies and some other stuff of the like).</li></ul>3.-Create the joints<br /><ul><li>Attach the joints to the world (by adding data to the dxJoints* array of the dynamics world)</li><li>Set their properties (depending of the selected type of joint, one has to provide different details).</li></ul>4.-Manage collisions<br /><ul><li>Create a new collision world (just by making an instance to the dxSpace struct).</li><li>Create a joint group where collisions will be stored temporarily for every frame step.</li></ul>5.-Loop<br /><ul><li>Apply forces to bodies.</li><li>Adjust joint parameters.</li><li>Call collision detection.</li><li>Create a contact joint for every detected collision point and add it to the collision joint group.</li><li>Take a simulation step.</li><li>Clear the collision joint group.</li></ul>6.-Destroy the dynamics and the collision worlds (wow, that sounds evil...hehehe).</blockquote><br />All of this seems fairly easy to do but then one has to get to know where and how things have been implemented. This is when things become a bit harder.<br />I am sure the file structure and the class definitions make perfect sense for the programmers of this engine.<br /> Fortunately, they have been careful enough so as to comment everything in an understandable way, for which I feel deeply grateful.<br />After some digging, I have managed to restructure the ode/src folder into the following topics:<br /><blockquote><ul><li>Accessories</li><ul><li>Memory management</li><li>Math</li><li>Matrix handling</li><li>External applications</li></ul><li>Collision</li><li>Core</li><li>Joints </li><li>Primitives</li><li>Solver</li></ul></blockquote>Which means one can tackle the engine in an ordered manner and find things when needed.<br /><br />From a theoretical point of view, this engine presents the following features:<br /><ul><li>A Lagrange multiplier velocity based model from Trinkle and Stewart</li><li>A friction model from Baraff</li><li>A Danzig LCP solver</li></ul><ul></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6352511023055453909-856764917740920547?l=stochasticandlagrangian.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=606</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Ogre+Verlet+Gauss-Seidel simulation</title>
		<link>http://stochasticandlagrangian.blogspot.com/2010/04/first-ogreverletgauss-seidel-simulation.html</link>
		<comments>http://stochasticandlagrangian.blogspot.com/2010/04/first-ogreverletgauss-seidel-simulation.html#comments</comments>
		<pubDate>Wed, 14 Apr 2010 03:14:00 +0000</pubDate>
		<dc:creator>Rabindranath Andujar Moreno</dc:creator>
				<category><![CDATA[Variado]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6352511023055453909.post-6550386111535592553</guid>
		<description><![CDATA[Once the Ogre3D engine is ready to draw what we numerically compute, it was about time to start having some fun.I found this excellent article from Thomas Jakobsen: http://www.teknikus.dk/tj/gdc2001.htm where a very neat and simple engine is implemente...]]></description>
			<content:encoded><![CDATA[Once the Ogre3D engine is ready to draw what we numerically compute, it was about time to start having some fun.<br /><br />I found this excellent article from Thomas Jakobsen: <a href="http://www.teknikus.dk/tj/gdc2001.htm">http://www.teknikus.dk/tj/gdc2001.htm</a> where a very neat and simple engine is implemented (thanks Mr. Jakobsen).<br /><br />It is very well explained so adapting it to my little lab was not very hard.<br />Here I proudly present my very first simulation!<br /><br /><div style="text-align: center;"><br /></div><div style="text-align: center;"><object height="320" width="400"><param name="movie" value="http://www.youtube.com/v/sxoBJJ2f8uQ&hl=es_ES&fs=1&border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/sxoBJJ2f8uQ&hl=es_ES&fs=1&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="320"></embed></object></div><br /><br />I am perfectly conscious that it lacks of a lot of things...namely collision detection, a proper stable, precise integrator, an optimized implementation...and a long etcetera...but it's just a baby!<br /><br />Here is a zip file with the code (an extension from what I presented in the last post):<br /><a href="http://www.blogger.com/goog_1516204070"><br /></a><br /><a href="http://www.mnbvlabs.com/Thesis/VerletRelaxation.zip">http://www.mnbvlabs.com/Thesis/VerletRelaxation.zip</a> <br /><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6352511023055453909-6550386111535592553?l=stochasticandlagrangian.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=607</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting Ogre3D as Graphic Environment</title>
		<link>http://stochasticandlagrangian.blogspot.com/2010/04/setting-ogre3d-as-graphic-environment.html</link>
		<comments>http://stochasticandlagrangian.blogspot.com/2010/04/setting-ogre3d-as-graphic-environment.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 22:51:00 +0000</pubDate>
		<dc:creator>Rabindranath Andujar Moreno</dc:creator>
				<category><![CDATA[Variado]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6352511023055453909.post-6151249302511128532</guid>
		<description><![CDATA[The last days I have been working on getting a Graphics Environment for my Toy Physics Engine.Last December and January I had already fiddled around with excellent engines Ogre (www.ogre3d.org) and Bullet (http://bulletphysics.org/wordpress/), trying t...]]></description>
			<content:encoded><![CDATA[The last days I have been working on getting a Graphics Environment for my Toy Physics Engine.<br />Last December and January I had already fiddled around with excellent engines Ogre (<a href="http://www.ogre3d.org/">www.ogre3d.org</a>) and Bullet (<a href="http://bulletphysics.org/wordpress/">http://bulletphysics.org/wordpress/</a>), trying to put them to work together.I have a post from february where some simulations on youtube can be seen and some preliminary introductions are made.<br /><br />However, now I am starting to understand things, and whenever I have the drive to test them always encounter the problem on how visualize them.<br /><br />So, I came across with Blender (<a href="http://www.blender.org/">www.blender.org</a>), another fantastic tool, and got surprised to find their Google Summer of Code mentorship for 2010 (<a href="http://wiki.blender.org/index.php/Dev:Ref/GSoC/2010/Info">http://wiki.blender.org/index.php/Dev:Ref/GSoC/2010/Info</a>).<br />I have applied for it. Deadline was 9th April, which meant preparing everything in a hurry and some embarrasing trouble with their wiki page (I have already apologised in their bf-commiters mailing list...ooops).<br />Here is my proposal for such an important event: (<a href="http://wiki.blender.org/index.php/User:Ndujar">http://wiki.blender.org/index.php/User:Ndujar</a>).<br />Hopefully they find it interesting and contact me to complete it!<br /><br />In the meantime, I have prepared a short and basic Ogre framework to begin doing some tests.<br />It is composed of a few files and classes integrating Ogre.<br /><br />I generated it basically copying, cutting and pasting from the very good tutorials available at the Ogre web page (<a href="http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials">http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials</a>).<br /><br />It goes as follows:<br /><br />The first step is to intall and cofigure Ogre in your computer. This is the best tutorial I found: <a href="http://ubuntuforums.org/archive/index.php/t-1148570.html">http://ubuntuforums.org/archive/index.php/t-1148570.html</a>.<br /><br />Then, using whatever IDE of your taste (I am on EasyEclipse), just get the following files to compile.<br /><br />The core of the application is the BaseApp object, from which I will later extend further as needed. It is basically in charge of doing everything Ogre requires to be done to put things up in a rendering window.<br /><b>BaseApp.h</b>: <br /><textarea cols="55" name="textfield" rows="20">#include &lt;Ogre.h&gt;#include "BaseFrameListener.h"#include "PhysicsFrameListener.h"#include "PhysicsEntity.h"#include &lt;iostream&gt;#include &lt;math.h&gt;#include &lt;vector&gt;#include &lt;time.h&gt;#include &lt;ctime&gt;#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;stdlib.h&gt;using namespace Ogre;class BaseApp{public:    void go();    ~BaseApp();private:    Root *mRoot;    BaseFrameListener *mListener;    PhysicsFrameListener *PhListener;    Ogre::String mResourcePath;    SceneManager *mgr;    RenderWindow *win;    Camera *mCamera;    std::vector&lt;PhysicsEntity&gt; PhysicsEntities;    void createRoot();    void defineResources();    void loadResources();    void setupRenderSystem();    void createRenderWindow();    void initializeResourceGroups();    void setupScene();    void setupInputSystem();    void setupCEGUI();    void createFrameListener();    void createPhysicsFrameListener();    void startRenderLoop();};</textarea><br /><b>BaseApp.cpp</b>: <br /><textarea cols="55" name="textfield" rows="20">#include "BaseApp.h"using namespace Ogre;using namespace std; ///This code is adapted from the Ogre tutorials webpage for my own purposes ///http://www.ogre3d.org/wiki/index.php/Basic_Tutorial_6#Creating_the_RenderSystem ///Main function, calling all the private settings to make the application run in proper order: ///The basic Ogre life cycle looks like this: ///   1. Create the Root object. ///   2. Define the resources that Ogre will use. ///   3. Choose and set up the RenderSystem (that is, DirectX, OpenGL, etc). ///   4. Create the RenderWindow (the window which Ogre resides in). ///   5. Initialize the resources that you are going to use. ///   6. Create a scene using those resources. ///   7. Set up any third party libraries and plugins. ///   8. Create any number of frame listeners. ///   9. Start the render loop.    void BaseApp::go()    {        createRoot();        defineResources();        loadResources();        setupRenderSystem();        createRenderWindow();        initializeResourceGroups();        setupScene();        createFrameListener();        createPhysicsFrameListener();        startRenderLoop();    }    ///Destructor releases the FrameListener and the Root object from memory    BaseApp::~BaseApp()    {        delete mListener;        delete mRoot;    } ///-createRoot sets the Ogre Root object from where all others derive.    ///The Root object is the core of the Ogre library,    ///and must be created before you can do almost anything with the engine.    void BaseApp::createRoot()    {        mRoot = new Root();    } ///-defineResources sets all the Ogre engine requirements by iterating the configuration file.    ///The next thing we have to do is define the resources that the application uses.    ///This includes the textures, models, scripts, and so on.    ///Everything is set up in the resources.cfg file.    void BaseApp::defineResources()    // Method which will define the source of resources (other than current folder)    {        // Load resource paths from config file        ConfigFile cf;        mResourcePath = "";        cf.load(mResourcePath + "resources.cfg");        // Go through all sections &amp; settings in the file        ConfigFile::SectionIterator seci = cf.getSectionIterator();        String secName, typeName, archName;        while (seci.hasMoreElements())        {            secName = seci.peekNextKey();            ConfigFile::SettingsMultiMap *settings = seci.getNext();            ConfigFile::SettingsMultiMap::iterator i;            for (i = settings-&gt;begin(); i != settings-&gt;end(); ++i)            {                typeName = i-&gt;first;                archName = i-&gt;second;                ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName);            }        }    } ///-loadResources intializes the application ResourceGroupManager.    ///The function defineResources adds all of the resources from the config file,    ///but it only tells Ogre where they are.    ///Before you can use any of them you have to either initialize the group that you want to use,    ///or you must initialize them all.    void BaseApp::loadResources()    {       // Initialise, parse scripts etc       ResourceGroupManager::getSingleton().initialiseAllResourceGroups();    } ///-setupRenderSystem checks wether the config file Ogre.cfg has already set things up and calls the /// Ogre render system setup dialog in case it isn't.    ///In the first part of the if statement, we attempt to restore the config file.    ///If that function returns false it means that the file does not exist so we should show the config dialog,    ///which is the second portion of that if statement.    ///If that also returns false it means the user canceled out of config dialog    ///(meaning they want to exit the program).    void BaseApp::setupRenderSystem()    {        if (!mRoot-&gt;restoreConfig() &amp;&amp; !mRoot-&gt;showConfigDialog())            throw Exception(52, "User canceled the config dialog!", "BaseApp::setupRenderSystem()");    } ///-createRenderWindow sets the Ogre root window where everything is going to be displayed    ///Now that we have chosen the RenderSystem, we need a window to render Ogre in.    ///There are actually a lot of options for how to do this, but we will really only need this to    ///keep thing simple.    void BaseApp::createRenderWindow()    {        mRoot-&gt;initialise(true, "Physics World");    }    ///The only thing left to do is to initialize the resources we are about to use.    ///In a very large game or application, we may have hundreds or even thousands of    ///resources that our game uses - everything from meshes to textures to scripts.    ///At any given time though, we probably will only be using a small subset of these resources.    ///To keep down memory requirements, we can load only the resources that our application is using.    ///We do this by dividing the resources into sections and only initializing them as we go.    void BaseApp::initializeResourceGroups()    {        TextureManager::getSingleton().setDefaultNumMipmaps(5);        ResourceGroupManager::getSingleton().initialiseAllResourceGroups();    }    ///There are at least three things that must be done before you start adding things to a scene:    ///creating the SceneManager, creating the Camera, and creating the Viewport.    ///I have added some lights and entities to give it some flesh.    ///Entities are instances of PhysicsEntity, which is the class where all physics properties    ///will be implemented    void BaseApp::setupScene()    {        mgr = mRoot-&gt;createSceneManager(ST_GENERIC, "Default SceneManager");        Viewport *vp;        PhysicsEntity *PhysEnt(0);        Light *light;        mgr-&gt;setAmbientLight( ColourValue( 0, 0, 0 ) );        mgr-&gt;setShadowTechnique( SHADOWTYPE_TEXTURE_MODULATIVE );        mCamera = mgr-&gt;createCamera("PlayerCam");        mCamera-&gt;setPosition(Vector3(300,300,200));        mCamera-&gt;lookAt(Vector3(0,0,0));        mCamera-&gt;setNearClipDistance(5);        vp = mRoot-&gt;getAutoCreatedWindow()-&gt;addViewport(mCamera);        vp-&gt;setBackgroundColour(ColourValue(0,0,0));        mCamera-&gt;setAspectRatio(Real(vp-&gt;getActualWidth()) / Real(vp-&gt;getActualHeight()));        light = mgr-&gt;createLight("Light1");        light-&gt;setType(Light::LT_POINT);        light-&gt;setPosition(0, 15, 25);        light-&gt;setDiffuseColour(.25, .25, 0);        light-&gt;setSpecularColour(.25, .25, 0);        light = mgr-&gt;createLight("Light3");        light-&gt;setType(Light::LT_DIRECTIONAL);        light-&gt;setPosition(10,10,10);        light-&gt;setCastShadows(true);        light-&gt;setDiffuseColour(.25, .25, 0);        light-&gt;setSpecularColour(.25, .25, 0);        light-&gt;setDirection(Vector3( 0, -1, 1 ));        PhysEnt=new PhysicsEntity(mgr,PhysicsEntity::cube);        PhysEnt-&gt;Geometry-&gt;scale(10,10,10);        PhysicsEntities.push_back(*PhysEnt);        PhysEnt=new PhysicsEntity(mgr,PhysicsEntity::plane);        PhysEnt-&gt;Geometry-&gt;scale(1000,1000,1000);        PhysicsEntities.push_back(*PhysEnt);    }    ///Every frame you must call the capture method on all Keyboard, Mouse, and Joystick objects you use.    ///Our BaseFrameListener class manages all this for us.    void BaseApp::createFrameListener()    {     mListener= new BaseFrameListener(mRoot-&gt;getAutoCreatedWindow(),mCamera);        mRoot-&gt;addFrameListener(mListener);    }    ///Every frame you must also update all physics entities    ///Our PhysicsFramelistener class manages all this for us.    void BaseApp::createPhysicsFrameListener()    {     PhListener= new PhysicsFrameListener(PhysicsEntities);        mRoot-&gt;addFrameListener(PhListener);    }    ///This will render the application until a FrameListener returns false.    void BaseApp::startRenderLoop()    {        mRoot-&gt;startRendering();    }</textarea><br /><br /><br />The BaseFrameListener is another very important piece of code that allows one to control the rendering flow. <br />In order to manage whatever happens on every rendering step, Ogre provides the FrameListener object.<br />With the installed package comes an ExampleFrameListener.h file, which overrides the basic Ogre FrameListener and allows for a fairly good control over the inputting devices such as keyboard and mouse.I have slightly customised it for my purposes.<br />It has been a bit tricky however, and has made my computer crash a few times.<br />Anyway, here it is, domesticated at last!<br /><b><br /></b><br /><b>BaseFrameListener.h</b>: <br /><textarea cols="55" name="textfield" rows="20">/*-----------------------------------------------------------------------------This source file is part of OGRE    (Object-oriented Graphics Rendering Engine)For the latest info, see http://www.ogre3d.org/Copyright (c) 2000-2006 Torus Knot Software LtdAlso see acknowledgements in Readme.htmlYou may use this sample code for anything you like, it is not covered by theLGPL like the rest of the engine.-----------------------------------------------------------------------------*//*-----------------------------------------------------------------------------Filename:    ExampleFrameListener.h-&gt;Adapted into BaseFrameListenerDescription: Defines an example frame listener which responds to frame events.This frame listener just moves a specified camera around based onkeyboard and mouse movements.Mouse:    FreelookW or Up:  ForwardS or Down:BackwardA:        Step leftD:        Step rightPgUp:     Move upwardsPgDown:   Move downwardsF:        Toggle frame rate stats on/offR:        Render modeT:        Cycle texture filtering                       Bilinear, Trilinear, Anisotropic(8)P:        Toggle on/off display of camera position / orientationImp Pant: Saves an incremental Screenshot-----------------------------------------------------------------------------*/#ifndef BASEFRAMELISTENER_H_#define BASEFRAMELISTENER_H_#include "Ogre.h"#include "OgreStringConverter.h"#include "OgreException.h"//Use this define to signify OIS will be used as a DLL//(so that dll import/export macros are in effect)#define OIS_DYNAMIC_LIB#include &lt;OIS/OIS.h&gt;using namespace Ogre;class BaseFrameListener: public FrameListener, public WindowEventListener{protected: Camera* mCamera; Vector3 mTranslateVector; Real mCurrentSpeed; RenderWindow* mWindow; bool mStatsOn; std::string mDebugText; unsigned int mNumScreenShots; float mMoveScale; float mSpeedLimit; Degree mRotScale; // just to stop toggles flipping too fast Real mTimeUntilNextToggle ; Radian mRotX, mRotY; TextureFilterOptions mFiltering; int mAniso; int mSceneDetailIndex ; Real mMoveSpeed; Degree mRotateSpeed; Overlay* mDebugOverlay; //OIS Input devices OIS::InputManager* mInputManager; OIS::Keyboard* mKeyboard; OIS::Mouse*    mMouse; virtual void updateStats(void) {  static String currFps = "Current FPS: ";  static String avgFps = "Average FPS: ";  static String bestFps = "Best FPS: ";  static String worstFps = "Worst FPS: ";  static String tris = "Triangle Count: ";  static String batches = "Batch Count: ";  // update stats when necessary  try {   OverlayElement* guiAvg = OverlayManager::getSingleton().getOverlayElement("Core/AverageFps");   OverlayElement* guiCurr = OverlayManager::getSingleton().getOverlayElement("Core/CurrFps");   OverlayElement* guiBest = OverlayManager::getSingleton().getOverlayElement("Core/BestFps");   OverlayElement* guiWorst = OverlayManager::getSingleton().getOverlayElement("Core/WorstFps");   const RenderTarget::FrameStats&amp; stats = mWindow-&gt;getStatistics();   guiAvg-&gt;setCaption(avgFps + StringConverter::toString(stats.avgFPS));   guiCurr-&gt;setCaption(currFps + StringConverter::toString(stats.lastFPS));   guiBest-&gt;setCaption(bestFps + StringConverter::toString(stats.bestFPS)    +" "+StringConverter::toString(stats.bestFrameTime)+" ms");   guiWorst-&gt;setCaption(worstFps + StringConverter::toString(stats.worstFPS)    +" "+StringConverter::toString(stats.worstFrameTime)+" ms");   OverlayElement* guiTris = OverlayManager::getSingleton().getOverlayElement("Core/NumTris");   guiTris-&gt;setCaption(tris + StringConverter::toString(stats.triangleCount));   OverlayElement* guiBatches = OverlayManager::getSingleton().getOverlayElement("Core/NumBatches");   guiBatches-&gt;setCaption(batches + StringConverter::toString(stats.batchCount));   OverlayElement* guiDbg = OverlayManager::getSingleton().getOverlayElement("Core/DebugText");   guiDbg-&gt;setCaption(mDebugText);  }  catch(...) { /* ignore */ } }public: // Constructor takes a RenderWindow because it uses that to determine input context BaseFrameListener(RenderWindow* win, Camera* cam, bool bufferedKeys = false, bool bufferedMouse = false) :  mCamera(cam),  mTranslateVector(Vector3::ZERO),  mCurrentSpeed(0),  mWindow(win),  mStatsOn(true),  mNumScreenShots(0),  mMoveScale(0.0f),  mRotScale(0.0f),  mTimeUntilNextToggle(0),  mFiltering(TFO_BILINEAR),  mAniso(1),  mSceneDetailIndex(0),  mMoveSpeed(100),  mRotateSpeed(36),  mDebugOverlay(0),  mInputManager(0),  mKeyboard(0),  mMouse(0) {  mDebugOverlay = OverlayManager::getSingleton().getByName("Core/DebugOverlay");  LogManager::getSingletonPtr()-&gt;logMessage("*** Initializing OIS ***");  OIS::ParamList pl;  size_t windowHnd = 0;  std::ostringstream windowHndStr;  win-&gt;getCustomAttribute("WINDOW", &amp;windowHnd);  windowHndStr &lt;&lt; windowHnd;  pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));  mInputManager = OIS::InputManager::createInputSystem( pl );  //Create all devices (We only catch joystick exceptions here, as, most people have Key/Mouse)  mKeyboard = static_cast&lt;OIS::Keyboard*&gt;(mInputManager-&gt;createInputObject( OIS::OISKeyboard, bufferedKeys ));  mMouse = static_cast&lt;OIS::Mouse*&gt;(mInputManager-&gt;createInputObject( OIS::OISMouse, bufferedMouse ));  //Set initial mouse clipping size  windowResized(mWindow);  showDebugOverlay(true);  //Register as a Window listener  WindowEventUtilities::addWindowEventListener(mWindow, this); } //Adjust mouse clipping area virtual void windowResized(RenderWindow* rw) {  unsigned int width, height, depth;  int left, top;  rw-&gt;getMetrics(width, height, depth, left, top);  const OIS::MouseState &amp;ms = mMouse-&gt;getMouseState();  ms.width = width;  ms.height = height; } //Unattach OIS before window shutdown (very important under Linux) virtual void windowClosed(RenderWindow* rw) {  //Only close for window that created OIS (the main window in these demos)  if( rw == mWindow )  {   if( mInputManager )   {    mInputManager-&gt;destroyInputObject( mMouse );    mInputManager-&gt;destroyInputObject( mKeyboard );    OIS::InputManager::destroyInputSystem(mInputManager);    mInputManager = 0;   }  } } virtual ~BaseFrameListener() {  //Remove ourself as a Window listener  WindowEventUtilities::removeWindowEventListener(mWindow, this);  windowClosed(mWindow); } virtual bool processUnbufferedKeyInput(const FrameEvent&amp; evt) {  if(mKeyboard-&gt;isKeyDown(OIS::KC_A))   mTranslateVector.x = -mMoveScale; // Move camera left  if(mKeyboard-&gt;isKeyDown(OIS::KC_D))   mTranslateVector.x = mMoveScale; // Move camera RIGHT  if(mKeyboard-&gt;isKeyDown(OIS::KC_UP) || mKeyboard-&gt;isKeyDown(OIS::KC_W) )   mTranslateVector.z = -mMoveScale; // Move camera forward  if(mKeyboard-&gt;isKeyDown(OIS::KC_DOWN) || mKeyboard-&gt;isKeyDown(OIS::KC_S) )   mTranslateVector.z = mMoveScale; // Move camera backward  if(mKeyboard-&gt;isKeyDown(OIS::KC_PGUP))   mTranslateVector.y = mMoveScale; // Move camera up  if(mKeyboard-&gt;isKeyDown(OIS::KC_PGDOWN))   mTranslateVector.y = -mMoveScale; // Move camera down  if(mKeyboard-&gt;isKeyDown(OIS::KC_RIGHT))   mCamera-&gt;yaw(-mRotScale);  if(mKeyboard-&gt;isKeyDown(OIS::KC_LEFT))   mCamera-&gt;yaw(mRotScale);  if( mKeyboard-&gt;isKeyDown(OIS::KC_ESCAPE) || mKeyboard-&gt;isKeyDown(OIS::KC_Q) )   return false;        if( mKeyboard-&gt;isKeyDown(OIS::KC_F) &amp;&amp; mTimeUntilNextToggle &lt;= 0 )  {   mStatsOn = !mStatsOn;   showDebugOverlay(mStatsOn);   mTimeUntilNextToggle = 1;  }  if( mKeyboard-&gt;isKeyDown(OIS::KC_T) &amp;&amp; mTimeUntilNextToggle &lt;= 0 )  {   switch(mFiltering)   {   case TFO_BILINEAR:    mFiltering = TFO_TRILINEAR;    mAniso = 1;    break;   case TFO_TRILINEAR:    mFiltering = TFO_ANISOTROPIC;    mAniso = 8;    break;   case TFO_ANISOTROPIC:    mFiltering = TFO_BILINEAR;    mAniso = 1;    break;   default: break;   }   MaterialManager::getSingleton().setDefaultTextureFiltering(mFiltering);   MaterialManager::getSingleton().setDefaultAnisotropy(mAniso);   showDebugOverlay(mStatsOn);   mTimeUntilNextToggle = 1;  }  if(mKeyboard-&gt;isKeyDown(OIS::KC_SYSRQ) &amp;&amp; mTimeUntilNextToggle &lt;= 0)  {   std::ostringstream ss;   ss &lt;&lt; "screenshot_" &lt;&lt; ++mNumScreenShots &lt;&lt; ".png";   mWindow-&gt;writeContentsToFile(ss.str());   mTimeUntilNextToggle = 0.5;   mDebugText = "Saved: " + ss.str();  }  if(mKeyboard-&gt;isKeyDown(OIS::KC_R) &amp;&amp; mTimeUntilNextToggle &lt;=0)  {   mSceneDetailIndex = (mSceneDetailIndex+1)%3 ;   switch(mSceneDetailIndex) {    case 0 : mCamera-&gt;setPolygonMode(PM_SOLID); break;    case 1 : mCamera-&gt;setPolygonMode(PM_WIREFRAME); break;    case 2 : mCamera-&gt;setPolygonMode(PM_POINTS); break;   }   mTimeUntilNextToggle = 0.5;  }  static bool displayCameraDetails = false;  if(mKeyboard-&gt;isKeyDown(OIS::KC_P) &amp;&amp; mTimeUntilNextToggle &lt;= 0)  {   displayCameraDetails = !displayCameraDetails;   mTimeUntilNextToggle = 0.5;   if (!displayCameraDetails)    mDebugText = "";  }  // Print camera details  if(displayCameraDetails)   mDebugText = "P: " + StringConverter::toString(mCamera-&gt;getDerivedPosition()) +       " " + "O: " + StringConverter::toString(mCamera-&gt;getDerivedOrientation());  // Return true to continue rendering  return true; } virtual bool processUnbufferedMouseInput(const FrameEvent&amp; evt) {  // Rotation factors, may not be used if the second mouse button is pressed  // 2nd mouse button - slide, otherwise rotate  const OIS::MouseState &amp;ms = mMouse-&gt;getMouseState();  if( ms.buttonDown( OIS::MB_Right ) )  {   mTranslateVector.x += ms.X.rel * 0.13;   mTranslateVector.y -= ms.Y.rel * 0.13;  }  else  {   mRotX = Degree(-ms.X.rel * 0.13);   mRotY = Degree(-ms.Y.rel * 0.13);  }  return true; } virtual void moveCamera() {  // Make all the changes to the camera  // Note that YAW direction is around a fixed axis (freelook style) rather than a natural YAW  //(e.g. airplane)  mCamera-&gt;yaw(mRotX);  mCamera-&gt;pitch(mRotY);  mCamera-&gt;moveRelative(mTranslateVector); } virtual void showDebugOverlay(bool show) {  if (mDebugOverlay)  {   if (show)    mDebugOverlay-&gt;show();   else    mDebugOverlay-&gt;hide();  } } // Override frameRenderingQueued event to process that (don't care about frameEnded) bool frameRenderingQueued(const FrameEvent&amp; evt) {  if(mWindow-&gt;isClosed()) return false;  mSpeedLimit = mMoveScale * evt.timeSinceLastFrame;  //Need to capture/update each device  mKeyboard-&gt;capture();  mMouse-&gt;capture();     Ogre::Vector3 lastMotion = mTranslateVector;  //Check if one of the devices is not buffered  if(!mKeyboard-&gt;buffered()|| !mMouse-&gt;buffered() )  {   // one of the input modes is immediate, so setup what is needed for immediate movement   if (mTimeUntilNextToggle &gt;= 0)    mTimeUntilNextToggle -= evt.timeSinceLastFrame;   // Move about 100 units per second   mMoveScale = mMoveSpeed * evt.timeSinceLastFrame;   // Take about 10 seconds for full rotation   mRotScale = mRotateSpeed * evt.timeSinceLastFrame;   mRotX = 0;   mRotY = 0;   mTranslateVector = Ogre::Vector3::ZERO;  }  //Check to see which device is not buffered, and handle it  if( !mKeyboard-&gt;buffered() )   if( processUnbufferedKeyInput(evt) == false )    return false;  if( !mMouse-&gt;buffered() )   if( processUnbufferedMouseInput(evt) == false )    return false;  // ramp up / ramp down speed     if (mTranslateVector == Ogre::Vector3::ZERO)  {   // decay (one third speed)   mCurrentSpeed -= evt.timeSinceLastFrame * 0.3;   mTranslateVector = lastMotion;  }  else  {   // ramp up   mCurrentSpeed += evt.timeSinceLastFrame;  }  // Limit motion speed  if (mCurrentSpeed &gt; 1.0)   mCurrentSpeed = 1.0;  if (mCurrentSpeed &lt; 0.0)   mCurrentSpeed = 0.0;  mTranslateVector *= mCurrentSpeed;  if(!mKeyboard-&gt;buffered() || !mMouse-&gt;buffered())   moveCamera();  return true; } bool frameEnded(const FrameEvent&amp; evt) {  updateStats();  return true; }};#endif /*BASEFRAMELISTENER_H_*/</textarea><b><br /></b><br /><br />Once the beast is under control, the rest is a piece of cake...hehehe...<b>&nbsp;</b><br />You can make as many instances of a FrameListener as you need in an Ogre application.<br />I have chosen to create a separate framelistener for managing whatever goes under the physics, to keep things up neat and tidy.<br />It is the PhysicsFrameListener class:<br /><br /><b>PhysicsFrameListener.h</b>: <br /><textarea cols="55" name="textfield" rows="20">/*#ifndef PHYSICSFRAMELISTENER_H_#define PHYSICSFRAMELISTENER_H_#include "PhysicsEntity.h"#include &lt;iostream&gt;#include &lt;math.h&gt;#include &lt;vector&gt;#include &lt;time.h&gt;#include &lt;ctime&gt;#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;stdlib.h&gt;#include &lt;Ogre.h&gt;using namespace Ogre;///This class is in charge to manage the physics before every///render step on the Ogre window.class PhysicsFrameListener : public FrameListener{public:    ///The Ents vector contains the entities with physical properties attached to them    ///In this example, no physics are used yet. Just an X-axis displacement is applied    ///to perceive motion.    PhysicsFrameListener(std::vector&lt;PhysicsEntity&gt; Ents):     Entities(Ents)    {    }    ///frameStarted is an overriden event from the Ogre FrameListener.    ///Note that positions are updated before sending the information    ///to the root object in the go loop.    bool frameStarted(const FrameEvent&amp; evt)    {     UpdatePositions();     return true;    }    ///Update positions is in charge to reallocate the entities to their future locations    void UpdatePositions()    {//     PhysicsEntity::EntityType TypeEnt;     for (unsigned int i=0; i&lt;Entities.size(); i++)     {      if (Entities[i].GeomType==PhysicsEntity::cube)       Entities[i].Geometry-&gt;translate(0.1,0,0,Ogre::Node::TS_WORLD);     }    }private:    std::vector&lt;PhysicsEntity&gt; Entities;};#endif /*PHYSICSFRAMELISTENER_H_*/</textarea><br /><br /><br />The elementary brick on which everything else will be constructed is likely to be called PhysicsEntity.<br />So I have defined my PhysicsEntity Class.<br />In this code is still at its very bones, just presenting a couple of functions to make things visible.<br />Hopefully in the near future some more flesh will get added on it!<br /><br /><b>PhysicsEntity.h</b>: <br /><textarea cols="55" name="textfield" rows="20">/*#ifndef PHYSICSENTITY_H_#define PHYSICSENTITY_H_#include &lt;Ogre.h&gt;using namespace Ogre;class PhysicsEntity{public: enum EntityType {  cube,  plane }; PhysicsEntity(SceneManager *SceneMgr,EntityType ShapeType); ~PhysicsEntity(); double mass; Vector3 position; Vector3 velocity; Vector3 acceleration; SceneNode *Geometry; EntityType GeomType;private: ManualObject* createCubeMesh(Ogre::String, Ogre::String); ManualObject* createPlane(Ogre::String, Ogre::String);};#endif /*PHYSICSENTITY_H_*/</textarea><br /><b>PhysicsEntity.cpp</b>: <br /><textarea cols="55" name="textfield" rows="20">/*#include "PhysicsEntity.h"PhysicsEntity::PhysicsEntity(SceneManager *SceneMgr,EntityType ShapeType){ Geometry = SceneMgr-&gt;getRootSceneNode()-&gt;createChildSceneNode(); Geometry-&gt;setPosition(0,5,0); GeomType=ShapeType; switch (GeomType) { case cube:        Geometry-&gt;attachObject(createCubeMesh("Cube","myMaterial"));  break; case plane:        Geometry-&gt;attachObject(createPlane("Plane","myMaterial"));  break; };}PhysicsEntity::~PhysicsEntity(){}ManualObject* PhysicsEntity::createCubeMesh(Ogre::String name, Ogre::String matName){ ManualObject* cube = new ManualObject(name); cube-&gt;begin(matName); cube-&gt;position(0.5,-0.5,1.0);cube-&gt;normal(0.408248,-0.816497,0.408248);cube-&gt;textureCoord(1,0); cube-&gt;position(-0.5,-0.5,0.0);cube-&gt;normal(-0.408248,-0.816497,-0.408248);cube-&gt;textureCoord(0,1); cube-&gt;position(0.5,-0.5,0.0);cube-&gt;normal(0.666667,-0.333333,-0.666667);cube-&gt;textureCoord(1,1); cube-&gt;position(-0.5,-0.5,1.0);cube-&gt;normal(-0.666667,-0.333333,0.666667);cube-&gt;textureCoord(0,0); cube-&gt;position(0.5,0.5,1.0);cube-&gt;normal(0.666667,0.333333,0.666667);cube-&gt;textureCoord(1,0); cube-&gt;position(-0.5,-0.5,1.0);cube-&gt;normal(-0.666667,-0.333333,0.666667);cube-&gt;textureCoord(0,1); cube-&gt;position(0.5,-0.5,1.0);cube-&gt;normal(0.408248,-0.816497,0.408248);cube-&gt;textureCoord(1,1); cube-&gt;position(-0.5,0.5,1.0);cube-&gt;normal(-0.408248,0.816497,0.408248);cube-&gt;textureCoord(0,0); cube-&gt;position(-0.5,0.5,0.0);cube-&gt;normal(-0.666667,0.333333,-0.666667);cube-&gt;textureCoord(0,1); cube-&gt;position(-0.5,-0.5,0.0);cube-&gt;normal(-0.408248,-0.816497,-0.408248);cube-&gt;textureCoord(1,1); cube-&gt;position(-0.5,-0.5,1.0);cube-&gt;normal(-0.666667,-0.333333,0.666667);cube-&gt;textureCoord(1,0); cube-&gt;position(0.5,-0.5,0.0);cube-&gt;normal(0.666667,-0.333333,-0.666667);cube-&gt;textureCoord(0,1); cube-&gt;position(0.5,0.5,0.0);cube-&gt;normal(0.408248,0.816497,-0.408248);cube-&gt;textureCoord(1,1); cube-&gt;position(0.5,-0.5,1.0);cube-&gt;normal(0.408248,-0.816497,0.408248);cube-&gt;textureCoord(0,0); cube-&gt;position(0.5,-0.5,0.0);cube-&gt;normal(0.666667,-0.333333,-0.666667);cube-&gt;textureCoord(1,0); cube-&gt;position(-0.5,-0.5,0.0);cube-&gt;normal(-0.408248,-0.816497,-0.408248);cube-&gt;textureCoord(0,0); cube-&gt;position(-0.5,0.5,1.0);cube-&gt;normal(-0.408248,0.816497,0.408248);cube-&gt;textureCoord(1,0); cube-&gt;position(0.5,0.5,0.0);cube-&gt;normal(0.408248,0.816497,-0.408248);cube-&gt;textureCoord(0,1); cube-&gt;position(-0.5,0.5,0.0);cube-&gt;normal(-0.666667,0.333333,-0.666667);cube-&gt;textureCoord(1,1); cube-&gt;position(0.5,0.5,1.0);cube-&gt;normal(0.666667,0.333333,0.666667);cube-&gt;textureCoord(0,0); cube-&gt;triangle(0,1,2);      cube-&gt;triangle(3,1,0); cube-&gt;triangle(4,5,6);      cube-&gt;triangle(4,7,5); cube-&gt;triangle(8,9,10);      cube-&gt;triangle(10,7,8); cube-&gt;triangle(4,11,12);   cube-&gt;triangle(4,13,11); cube-&gt;triangle(14,8,12);   cube-&gt;triangle(14,15,8); cube-&gt;triangle(16,17,18);   cube-&gt;triangle(16,19,17); cube-&gt;end(); return cube;}ManualObject* PhysicsEntity::createPlane(Ogre::String name, Ogre::String matName){ ManualObject* plane = new ManualObject(name); plane-&gt;begin(matName); plane-&gt;position(-0.5,0,-0.5);plane-&gt;normal(0.408248,-0.816497,0.408248);plane-&gt;textureCoord(1,0); plane-&gt;position(-0.5,0.0,0.5);plane-&gt;normal(-0.408248,-0.816497,-0.408248);plane-&gt;textureCoord(0,1); plane-&gt;position(0.5,0.0,0.5);plane-&gt;normal(0.666667,-0.333333,-0.666667);plane-&gt;textureCoord(1,1); plane-&gt;position(0.5,0.0,-0.5);plane-&gt;normal(-0.666667,-0.333333,0.666667);plane-&gt;textureCoord(0,0); plane-&gt;triangle(0,1,2);      plane-&gt;triangle(0,2,3); plane-&gt;end(); return plane;}</textarea><br /><br /><br />Last, but not least, is the main.cpp file, where everything gets blended:<br /><br /><b>main.cpp</b>: <br /><textarea cols="55" name="textfield" rows="20">/*#include "BaseApp.h"///This is the top module for running any Ogre based application///Is just simple an concise.///Call the go method of the BaseApp class and everything just goesint main(int argc, char **argv){    // Create application object    BaseApp app;    //Just in case, catch any errors    try    {     //Call the go method, where all the private settings     //for running an Ogre app are called        app.go();    }    catch(Exception&amp; e)    {        printf( "An exception has occurred: %s\n",            e.getFullDescription().c_str());    }    return 0;}</textarea><br /><br />And this is it.Now...Let's get busy!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6352511023055453909-6151249302511128532?l=stochasticandlagrangian.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=608</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CODE NAME: Brachistochrona</title>
		<link>http://stochasticandlagrangian.blogspot.com/2010/03/code-name-brachistochrona.html</link>
		<comments>http://stochasticandlagrangian.blogspot.com/2010/03/code-name-brachistochrona.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 21:29:00 +0000</pubDate>
		<dc:creator>Rabindranath Andujar Moreno</dc:creator>
				<category><![CDATA[Variado]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6352511023055453909.post-1983365413444375414</guid>
		<description><![CDATA[Today I'm going to reveal a classified archive. Or so it seems...Physicians have been keeping this knowledge from us simple mortals for centuries...hehehe...While trying to understand the essentials on variational mechanics, I have come into this artic...]]></description>
			<content:encoded><![CDATA[Today I'm going to reveal a classified archive. Or so it seems...<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_1CZ6zhe_ay0/S7O7E83Cz9I/AAAAAAAAAIM/5wvXmhu-x-8/s1600/top-secret.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_1CZ6zhe_ay0/S7O7E83Cz9I/AAAAAAAAAIM/5wvXmhu-x-8/s320/top-secret.jpg" /></a></div>Physicians have been keeping this knowledge from us simple mortals for centuries...hehehe...<br />While trying to understand the essentials on variational mechanics, I have come into this article: <a href="http://jazz.openfun.org/wiki/Brachistochrone">http://jazz.openfun.org/wiki/Brachistochrone</a>.<br />The problem of the brachistochrone dates back to Newton (17th century) and appears mentioned frequently as one of the problems that can be solved be means of this refined technique.<br /><br />In fact, this problem appears to be the actual trigger for the modern physics (or better stated, its solution), and reveals a completely counterintuitive phenomenon:<br /><br /><b>The quickest path is not the straight line</b><br /><br />Amazingly, the solution for a bead on a wire going in the least time from point A to point B:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_1CZ6zhe_ay0/S7O9DhCr8lI/AAAAAAAAAIU/IS4S6rwzd5k/s1600/Brachistochrone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_1CZ6zhe_ay0/S7O9DhCr8lI/AAAAAAAAAIU/IS4S6rwzd5k/s320/Brachistochrone.png" /></a></div><br />Is the cycloid represented in the picture.<br /><br />As standard human, one always tends to think that the shortest path would be the quickest one. It is wrong.<br />Analogously, when it comes to minimize the action (see previous posts on the subject), it is very hard to imagine that the stationary points would not come at flattening the curve for the action.<br />This is what makes so hard to understand the variational principles that rule over Lagrangian, Eulerian and Hamiltonian mechanics.<br /><br />If one only had been told...<br /><br />I have made a spreadsheet with openoffice (<a href="http://www.openoffice.org/">www.openoffice.org</a>) where this can be numerically perceived also.<br /><br /><b>The spreadsheet is <a href="http://www.mnbvlabs.com/Thesis/EulerVariational.ods">here</a>.</b><br /><br />I have made it with the help of a paper by Jozef Hanc: <a href="http://www.google.es/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAYQFjAA&amp;url=http%3A%2F%2Fwww.eftaylor.com%2Fpub%2FHancEulerEJP.pdf&amp;ei=RMizS-ejAs-N4gba0e2cAg&amp;usg=AFQjCNG4UqmFWYufyzZHPcz2LMO0XwgZlQ&amp;sig2=ncESlxp5h9GL2BeTuIlByA">The original Euler's calculus-of-variations method: Key to Lagrangian mechanics for beginners.</a><br />I found it extremely appropriate for my case, and also absolutely clarifying. Thanks mr Hanc<br /><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6352511023055453909-1983365413444375414?l=stochasticandlagrangian.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=609</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>INTERNATIONAL SEED TRAINING: ESPAÑA, PORTUGAL, MÉXICO</title>
		<link>http://krfr-1.com/seed/?p=546</link>
		<comments>http://krfr-1.com/seed/?p=546#comments</comments>
		<pubDate>Wed, 31 Mar 2010 14:15:21 +0000</pubDate>
		<dc:creator>R.O.D.</dc:creator>
				<category><![CDATA[Investigación]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[3DMAX]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[Clases grass]]></category>
		<category><![CDATA[clases grasshopper]]></category>
		<category><![CDATA[clases Rhino]]></category>
		<category><![CDATA[cursos 3d barcelona]]></category>
		<category><![CDATA[cursos grasshopper]]></category>
		<category><![CDATA[cursos rhinoceros]]></category>
		<category><![CDATA[diseño generativo]]></category>
		<category><![CDATA[estudio SEED]]></category>
		<category><![CDATA[geometría avanzada]]></category>
		<category><![CDATA[Grasshopper Portugal]]></category>
		<category><![CDATA[Grupo KRFR]]></category>
		<category><![CDATA[parametric architecture]]></category>
		<category><![CDATA[programación orientada a objetos]]></category>
		<category><![CDATA[Rhinoceros portugal]]></category>
		<category><![CDATA[universidad de minho]]></category>
		<category><![CDATA[VRAY]]></category>
		<category><![CDATA[workshop portugal]]></category>
		<category><![CDATA[workshop rhinoscript]]></category>

		<guid isPermaLink="false">http://krfr-1.com/seed/?p=546</guid>
		<description><![CDATA[Gracias a la red y el equipo que se esta formando dentro de grupo KRFR y por la línea de investigación que SEED &#124; KRFR esta proponiendo, estamos trabajando sobre formación especializada tanto teórica como técnica en programación, diseño paramétrico, creación de algoritmos, vinculación entre softwares, sostenibilidad para constructores, arquitectos y diseñadores en 3 países: [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="alignleft size-medium wp-image-558" title="B1-3PAISES" src="http://krfr-1.com/seed/wp-content/uploads/2010/03/B1-3PAISES-300x115.jpg" alt="B1-3PAISES" width="344" height="132" />Gracias a la red y el equipo que se esta formando dentro de grupo KRFR y por la línea de investigación que SEED | KRFR esta proponiendo, estamos trabajando sobre formación especializada tanto teórica como técnica en programación, diseño paramétrico, creación de algoritmos, vinculación entre softwares, sostenibilidad para constructores, arquitectos y diseñadores en 3 países: España, México y Portugal.<br />
Las expectativas son que la red crezca hacia otros países así como fortalecer las redes ya existentes y que están naciendo.</p>
<p style="text-align: left;">En los tres países en donde actualmente esta SEED, los objetivos de investigación y desarrollo son los mismos, así como el tipo de formación, lógicamente con diferente formador.<br />
En cada uno de estos países SEED | KRFR esta tratando con diferentes Universidades para impulsar nuestra línea de investigación, uno de los temas principales de esta investigación es el trabajo online para desarrollar software y compartir información relevante sobre los temas sostenibilidad ligados con la programación orientada a objetos. Por el momento, las plataformas que usamos es Rhinoceros, Grasshopper, Blender, Python, Rhinoscript, Ogre. Posteriormente iremos avanzando en otras plataformas. Si quieres unirte a la red, porfavor contáctanos: <a href="mailto: seed@krfr.org ">seed@krfr.org </a></p>
<p style="text-align: left;"><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm; text-align: left;"><strong>SEED en España</strong><span style="font-size: x-small;"> </span><br />
<img class="size-medium wp-image-554  alignleft" title="SEED barcelona" src="http://krfr-1.com/seed/wp-content/uploads/2010/03/bcn-300x221.jpg" alt="SEED barcelona" width="300" height="221" /> Rabindranath Andujar (Arquitecto programador especializado en física)<br />
Garito (Programador)<br />
Soe Farah Iracheta (Arquitecta especializada en sostenibilidad)<br />
David Antón (Arquitecto Biodigital)<br />
JAN (Programador empresario)<br />
R.O.D. (Arquitecto &#8211; Diseñador especializado en sostenibilidad)</p>
<p style="text-align: left;"><strong>WEB SEED <a href="http://www.krfr-1.com/SEEDcat" target="_blank">España </a></strong></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><strong><br />
</strong></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><strong>SEED en Portugal:</strong><br />
<img class="alignleft size-medium wp-image-556" title="SEED portugal" src="http://krfr-1.com/seed/wp-content/uploads/2010/03/ptg-300x173.jpg" alt="SEED portugal" width="300" height="173" /><br />
Adriano Faria (Arquitecto)<br />
Amilcar Ferreira (Arquitecto)<br />
Miguel Ribeiro (Arquitecto-Matemático)</p>
<p style="text-align: left;"><strong>WEB SEED <a href="http://www.krfr-1.com/SEEDptg" target="_blank">Potugal</a></strong></p>
<p style="text-align: left;"><strong>.</strong></p>
<p style="text-align: left;"><strong>.</strong></p>
<p style="text-align: left;"><strong><br />
</strong></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><strong>SEED en México<br />
<img class="alignleft size-medium wp-image-555" title="mex" src="http://krfr-1.com/seed/wp-content/uploads/2010/03/mex-300x159.jpg" alt="mex" width="300" height="159" /></strong>Silvia Carbajal (Técnica en Diseño Gráfico)<br />
Adrian Velázco (Diseñador Industrial)<br />
Carlos Ruz (Estudiante de Arquitectura)<br />
Coco Gutierrez (Arquitecta)<br />
Fabian Marcelo (Arquitecto especializando en sostenibilidad)<br />
Daniel Zamorano (Arquitecto)</p>
<p><strong>WEB SEED <a href="http://www.krfr-1.com/SEEDmx">México</a></strong></p>
<h6>La foto de SEED México, fue tomada durante el Taller DPOPS en Buscando la Aurora.</h6>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://krfr-1.com/seed/?feed=rss2&amp;p=546</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
