<?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"
	>

<channel>
	<title>Pro-G</title>
	<atom:link href="http://projets.ch/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://projets.ch/wp</link>
	<description>Accélérateur d'Innovation</description>
	<pubDate>Tue, 24 Jun 2008 08:00:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Pro-G theme for Wordpress</title>
		<link>http://projets.ch/wp/blog/15/</link>
		<comments>http://projets.ch/wp/blog/15/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 16:32:17 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[graphisme]]></category>

		<category><![CDATA[web 2.0]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/archives/15</guid>
		<description><![CDATA[
The theme used on this website is made freely available, provided that you keep a link to pro-g.ch with a &#8220;Pro-G&#8221; text on each page (as in the footer)
Download: Pro-G (75) - 56,96 KB
History:

2008/6/8 : v 1.0
2008/4/15 : french translation of LightBiz from ThemePorter

]]></description>
			<content:encoded><![CDATA[<p>
The theme used on this website is made freely available, provided that you keep a link to pro-g.ch with a &#8220;Pro-G&#8221; text on each page (as in the footer)</p>
<p>Download: <a href="http://projets.ch/wp/wp-content/plugins/wp-download_monitor/download.php?id=1" title="Version 1.0 downloaded 75 times" >Pro-G (75) - 56,96 KB</a></p>
<p>History:</p>
<ul>
<li>2008/6/8 : v 1.0</li>
<li>2008/4/15 : french translation of <a href="http://www.themeporter.com/2007/01/01/lightbiz-wordpress-theme/">LightBiz from ThemePorter</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/15/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Strenght of a spaghetti bridge.</title>
		<link>http://projets.ch/wp/blog/28/</link>
		<comments>http://projets.ch/wp/blog/28/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 17:46:09 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[FEA]]></category>

		<category><![CDATA[CosmosWorks]]></category>

		<category><![CDATA[SolidWorks]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/?p=28</guid>
		<description><![CDATA[Spaghetti Bridges help students to understand materials and structures resistance with fun and at low cost. Richard Williams from Las Vegas, Nevada designed the &#8220;Barilla Fettucini Bridge &#8221; with SolidWorks, and we calculated its strenght with CosmosWorks.
Dry pasta material data can be found in [1] :

density : 1.5 kg/dm³
Young modulus 3600 N/mm²
elasticity and yield limit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://drgoulu.wordpress.com/2008/06/05/les-ponts-de-spaghetti/" target="_blank">Spaghetti Bridges</a> help students to understand materials and structures resistance with fun and at low cost. Richard Williams from Las Vegas, Nevada designed the &#8220;<a href="http://designsmarter.typepad.com/richardsblog/2008/05/pasta-testing-s.html" target="_blank">Barilla Fettucini Bridge</a> &#8221; with SolidWorks, and we calculated its strenght with CosmosWorks.</p>
<p>Dry pasta material data can be found in [1] :</p>
<ul>
<li>density : 1.5 kg/dm³</li>
<li>Young modulus 3600 N/mm²</li>
<li>elasticity and yield limit : 16.778 N/mm²</li>
</ul>
<p>Using CosmosWorks, we made a statics study of the bridge under a load of 10N (~1Kg) on 0.1m x 0.1m square placed on the center of the deck, and obtained the safety factor which gives the maximal load of the bridge as well as the location of maximal stresses, which indicates the points to reinforce</p>
<p style="text-align: center">
<a href='http://projets.ch/wp/blog/28/uniform-load/' title='uniform-load'><img src="http://projets.ch/wp/files/2008/06/uniform-load-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://projets.ch/wp/blog/28/safety-factor/' title='safety-factor'><img src="http://projets.ch/wp/files/2008/06/safety-factor-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://projets.ch/wp/blog/28/stress-shape/' title='stress-shape'><img src="http://projets.ch/wp/files/2008/06/stress-shape-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://projets.ch/wp/blog/28/uniform-load1/' title='uniform-load1'><img src="http://projets.ch/wp/files/2008/06/uniform-load1-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
</p>
<p style="text-align: left">Référence:</p>
<ol>
<li>Luis Alberto Segovia González, Inácio Benvegnu Morsch, João Ricardo Masuero, “<a href="http://www.cpgec.ufrgs.br/segovia/espaguete/arquivos/COBEM2005-1756.pdf" target="_blank">Didactic Games in Engineering Teaching - Case : Spaghetti Bridges and Building Contest</a> “, 2005, Proceedings of COBEM 2005 18th International Congress of Mechanical Engineering</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/28/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Processing WordPress plugin.</title>
		<link>http://projets.ch/wp/blog/14/</link>
		<comments>http://projets.ch/wp/blog/14/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 15:27:08 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[graphisme]]></category>

		<category><![CDATA[programmation]]></category>

		<category><![CDATA[web 2.0]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[processing]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/2008/04/14/extension-wordpress-pour-processing/</guid>
		<description><![CDATA[
This addin enables integration of Processing applets in a Wordpress website/blog.
Installation and usage:

Download wp-processing (94) - 1,46 KB , unzip and and upload the full wp-processing folder to your server it in folder wp-content/plugins
Activate the &#8220;Processing&#8221; plugin in WordPress admin console
Copy your Processing content on sur votre serveur in a folder named /processing, preserving the [...]]]></description>
			<content:encoded><![CDATA[<p>
This addin enables integration of Processing applets in a Wordpress website/blog.</p>
<h3>Installation and usage:</h3>
<ol>
<li>Download <a href="http://projets.ch/wp/wp-content/plugins/wp-download_monitor/download.php?id=2" title="Version 0.9 alpha downloaded 94 times" >wp-processing (94) - 1,46 KB</a> , unzip and and upload the full wp-processing folder to your server it in folder wp-content/plugins</li>
<li>Activate the &#8220;Processing&#8221; plugin in WordPress admin console</li>
<li>Copy your Processing content on sur votre serveur in a folder named /processing, preserving the file structure used by Processing&#8217;s IDE. While looking for application &#8220;AppName&#8221;, the plugin will search for file &#8220;/processing/AppName/applet/AppName.jar&#8221;</li>
<li>Insert a Processing applet in a page or article by using the following syntax :  [ processing=AppName ]</li>
</ol>
<h3>History:</h3>
<ul>
<li>2008/04/13 0.1 alpha</li>
</ul>
<h3>ToDo / A Faire:</h3>
<ul>
<li>paramètres pour taille et path</li>
<li></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/14/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spiral Galaxy with Processing</title>
		<link>http://projets.ch/wp/blog/13/</link>
		<comments>http://projets.ch/wp/blog/13/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 15:34:21 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[physique]]></category>

		<category><![CDATA[temps réel]]></category>

		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/2008/04/04/galaxie-spirale-en-processing/</guid>
		<description><![CDATA[
Usage:

press [up] and [left] cursor keys to alter the ellipses ratio
press [left] and [right] cursor keys to alter the ellipses tilt angle


			
				
					
					
					
					
					
					
					
			
				
				
					
					
					
					
					
					
					
					
					
							This browser does not have a Java Plug-in.
							
							
								Get the latest Java Plug-in here.
							
					
				
			
				
			
			
Source code: Galaxy
Built with Processing
]]></description>
			<content:encoded><![CDATA[<p>
Usage:</p>
<ul>
<li>press [up] and [left] cursor keys to alter the ellipses ratio</li>
<li>press [left] and [right] cursor keys to alter the ellipses tilt angle</li>
</ul>
<p><div id="processing">
			<!--[if !IE]> -->
				<object classid="java:Galaxy.class" 
            			type="application/x-java-applet"
            			archive="/processing/Galaxy/applet/Galaxy.jar"
            			width="512" height="384"
            			standby="Loading Processing software..." >
					<param name="archive" value="/processing/Galaxy/applet/Galaxy.jar" />
					<param name="mayscript" value="true" />
					<param name="scriptable" value="true" />
					<param name="image" value="loading.gif" />
					<param name="boxmessage" value="Loading Processing software..." />
					<param name="boxbgcolor" value="#FFFFFF" />
					<param name="test_string" value="outer" />
			<!--<![endif]-->
				
				<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
						codebase="http://java.sun.com/update/1.4.2/jinstall-1_4_2_12-windows-i586.cab"
						width="512" height="384"
						standby="Loading Processing software..."  >
					<param name="code" value="Galaxy" />
					<param name="archive" value="/processing/Galaxy/applet/Galaxy.jar" />
					<param name="mayscript" value="true" />
					<param name="scriptable" value="true" />
					<param name="image" value="loading.gif" />
					<param name="boxmessage" value="Loading Processing software..." />
					<param name="boxbgcolor" value="#FFFFFF" />
					<param name="test_string" value="inner" />
					<p>
							This browser does not have a Java Plug-in.
							<br />
							<a href="http://java.sun.com/products/plugin/downloads/index.html" title="Download Java Plug-in">
								Get the latest Java Plug-in here.
							</a>
					</p>
				</object>
			<!--[if !IE]> -->
				</object>
			<!--<![endif]-->
			</div></p>
<p>Source code: <a href="wp-content/uploads/galaxy_applet/Galaxy.pde">Galaxy</a></p>
<p>Built with <a href="http://processing.org" title="Processing.org">Processing</a></p>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/13/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GLua library.</title>
		<link>http://projets.ch/wp/blog/43/</link>
		<comments>http://projets.ch/wp/blog/43/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 08:47:02 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[programmation]]></category>

		<category><![CDATA[Demoniak3D]]></category>

		<category><![CDATA[LUA]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/?p=43</guid>
		<description><![CDATA[GLua is an open source library which provides LUA programmers with classes and functions that mimic those available in GLSL, the OpenGL Shading Language.
GLua was especially designed as a base library for the Demoniak3D real-time engine, as it provides a consistent framework with GLSL shaders.

]]></description>
			<content:encoded><![CDATA[<p>GLua is an open source library which provides LUA programmers with classes and functions that mimic those available in GLSL, the OpenGL Shading Language.</p>
<p>GLua was especially designed as a base library for the Demoniak3D real-time engine, as it provides a consistent framework with GLSL shaders.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/43/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GLua library</title>
		<link>http://projets.ch/wp/blog/10/</link>
		<comments>http://projets.ch/wp/blog/10/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 16:10:52 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[programmation]]></category>

		<category><![CDATA[Demoniak3D]]></category>

		<category><![CDATA[LUA]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/2008/03/20/librairie-glua/</guid>
		<description><![CDATA[[french]GLua est une librairie open source qui offre au programmeurs LUA des classes et functions qui singent celles disponibles en GLSL, le "OpenGL Shading Language".[/french][english]GLua is an open source library which provides LUA programmers with classes and functions that mimic those available in GLSL, the OpenGL Shading Language.

GLua was especially designed as a base library for the Demoniak3D real-time engine, as it provides a consistent framework with GLSL shaders.[/english]

GLua a été spécialement conçue comme librairie de base pour Demoniak3D, pour fournir un ensemble cohérent avec les shaders GLSL.
]]></description>
			<content:encoded><![CDATA[<h3>Contents:</h3>
<ul>
<li>vec3.lua : 3D vectors and arithmetic</li>
<li>mat3.lua : 3D matrix and arithmetic</li>
<li>vec4.lua : 4D vectors and arithmetic</li>
<li>glsl.lua : generic functions following glsl prototypes as defined in book &#8220;OpenGL Shading Language&#8221; by Randi J. Rost</li>
<li>test.X.lua : unit test of module X</li>
</ul>
<h3>Usage &amp; Samples:</h3>
<p>Usage of the classes and functions is pretty straightforward.</p>
<p>Check the test.X.lua modules for more details or examples</p>
<h3>Download:</h3>
<p>GLua is available on <a href="http://luaforge.net/projects/glua/">http://luaforge.net/projects/glua/</a> under LGPL licence.</p>
<h3>Implementation details:</h3>
<ul>
<li>the classes are based on class.lua, described on <a href="http://lua-users.org/wiki/SimpleLuaClasses">http://lua-users.org/wiki/SimpleLuaClasses</a></li>
<li>glsl.lua offers generic function that work on LUA numbers and tables, and therefore all vector / matrix classes. It makes extensive use of functional programming to achieve this:
<ul>
<li>the &#8220;apply&#8221; function is defined as follows:<br />
<code>--- applies a function to a table of parameters<br />
-- @param f : function to apply to each element in v<br />
-- @param v : (vector of) parameter(s) to f function<br />
-- @return  : (vector of) result(s) of f(v)<br />
function apply(f,v)<br />
if type(v)=="number" then return f(v) end<br />
if type(v)=="table" then<br />
local res={}<br />
for i,x in ipairs(v) do res[i]=f(x) end<br />
return res<br />
end<br />
error(&#8221;apply &#8220;..f..&#8221;(&#8221;..type(v)..&#8221;) not implemented&#8221;)<br />
end</code></li>
<li>then, functions can easily be defined to support numbers, vectors, or matrices:<code><br />
function sin(rad)<br />
return apply(math.sin,rad)<br />
end</code></li>
</ul>
</li>
<li>dot product is implemented in 2 different ways :
<ul>
<li>through the &#8220;power&#8221; ^ operator in classes</li>
<li>as a generic dot(p1,p2) function in glsl.lua</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>LabView</title>
		<link>http://projets.ch/wp/blog/3/</link>
		<comments>http://projets.ch/wp/blog/3/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 20:08:07 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[commande]]></category>

		<category><![CDATA[instrumentation]]></category>

		<category><![CDATA[programmation]]></category>

		<category><![CDATA[simulation]]></category>

		<category><![CDATA[temps réel]]></category>

		<category><![CDATA[LabView]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/2008/03/05/labview/</guid>
		<description><![CDATA[New post in english.
]]></description>
			<content:encoded><![CDATA[<p>New post in english.</p>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New title in english.</title>
		<link>http://projets.ch/wp/blog/23/</link>
		<comments>http://projets.ch/wp/blog/23/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 09:58:14 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[FEA]]></category>

		<category><![CDATA[mécanique]]></category>

		<category><![CDATA[CosmosWorks]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/23</guid>
		<description><![CDATA[Le TGV a battu aujourd&#8217;hui son propre record de vitesse en atteignant presque 575 km/h, juste un peu moins que le Maglev japonais à sustentation magnétique (581 km/h).   A la vitesse de 575 km/h, soit 160 m/s, une roue de 920 mm (pesant dans les 600 kg) fait 55 tours par seconde (!). [...]]]></description>
			<content:encoded><![CDATA[<p>Le TGV a battu aujourd&#8217;hui son propre record de vitesse en atteignant presque 575 km/h, juste un peu moins que le Maglev japonais à sustentation magnétique (581 km/h).   A la vitesse de 575 km/h, soit 160 m/s, une roue de 920 mm (pesant dans les 600 kg) fait 55 tours par seconde (!). Peut-elle tourner encore plus vite ?<span id="more-23"></span></p>
<p>J&#8217;ai rapidement modélisé une roue de train approximative en acier de construction standard avec SolidWorks et calculé avec CosmosWorks l&#8217;effet d&#8217;une charge de 12 tonnes correspondant environ au poids d&#8217;une motrice divisé par le nombre de ses roues. Le résultat à l&#8217;arrêt est ci-dessous : la contrainte au contact du rail est approximativement la moitié de la limite élastique de la roue :</p>
<p><a title="Coeff de sécurité roue à l’arrêt" href="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-controle-de-conception1.jpg"></a></p>
<p><a href="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-controle-de-conception1.jpg"><img src="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-controle-de-conception1.jpg" alt="Coeff de sécurité roue à l’arrêt" width="328" height="314" align="middle" /></a></p>
<p>A 55 tours par seconde, la force centrifuge change donc complètement la donne:</p>
<p><a title="Contraintes centrifuge" href="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-contraintes1.jpg"></a></p>
<p><a title="Contraintes centrifuge" href="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-contraintes1.jpg"><img src="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-contraintes1.jpg" alt="Contraintes centrifuge" width="328" height="314" /></a></p>
<p>La contrainte due au contact avec le rail est à peine plus élevée que celle due à la force centrifuge (on parlera du signe plus bas) . Le coefficient de sécurité correspondant n&#8217;est plus que de 1.6 au lieu de 2.1 à l&#8217;arrêt : en fait la roue est plus près d&#8217;éclater à cause de sa vitesse que de s&#8217;écraser sous le poids de la loco !</p>
<p>Si on regarde ce qui se passe dans la zone de contact avec le rail, on voit que la contrainte est en compression (zone bleue) alors que dans toute la roue les contraintes sont en traction sous l&#8217;effet de la force centrifuge</p>
<p><a href="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-contraintes3.jpg"><img src="http://drgoulu.files.wordpress.com/2007/04/roue-train-etude-1-resultats-contraintes3.jpg" alt="contraintes radiales" width="328" height="314" /></a></p>
<p>la compression due au 12 tonnes de poids du train est extrêmement localisée : à quelques milimètres de la zone de contact, c&#8217;est comme s&#8217;il n&#8217;y avait plus de rail. Chaque point du bandage de la roue passe 50 fois par seconde d&#8217;une forte traction à une forte compression et vice-versa en moins d&#8217;un millième de seconde : combinés avec les vibrations et les chocs, ce sont des conditions idéales pour la fatigue des matériaux&#8230;</p>
<p>Un facteur de sécurité de 2 sur les roues du TGV à 575 km/h est suffisant pour un record, mais pas pour un train censé rouler des heures par jour à cette vitesse. Si les trains commerciaux atteignent un jour cette vitesse, ils auront des roues très &#8220;high-tech&#8221;, ou plus de roues du tout.</p>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/23/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DicoLib</title>
		<link>http://projets.ch/wp/blog/9/</link>
		<comments>http://projets.ch/wp/blog/9/#comments</comments>
		<pubDate>Wed, 14 Sep 2005 14:27:45 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[programmation]]></category>

		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/2005/09/14/dicolib/</guid>
		<description><![CDATA[New post in english.
]]></description>
			<content:encoded><![CDATA[<p>New post in english.</p>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/9/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[english]Shortest Path Problem.[/english]</title>
		<link>http://projets.ch/wp/blog/44/</link>
		<comments>http://projets.ch/wp/blog/44/#comments</comments>
		<pubDate>Mon, 01 Sep 2003 07:44:04 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
		
		<category><![CDATA[géométrie]]></category>

		<category><![CDATA[informatique]]></category>

		<category><![CDATA[optimisation]]></category>

		<category><![CDATA[productique]]></category>

		<category><![CDATA[Concorde]]></category>

		<category><![CDATA[SolidWorks]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/?p=44</guid>
		<description><![CDATA[[english]This page shows how to solve a common problem in  		geometry, with applications in CAD/CAM : How to find the shortest  		path going through a set of points ?
History
It all started form a &#8220;challenge&#8221; posted by Cliff Huprich on  		alt.machines.cnc newsgroup: find the shortest path going through 400  		random X/Y points. [...]]]></description>
			<content:encoded><![CDATA[<p>[english]This page shows how to solve a common problem in  		geometry, with applications in CAD/CAM : <strong>How to find the shortest  		path going through a set of points ?</strong></p>
<h3>History</h3>
<p>It all started form a &#8220;challenge&#8221; posted by Cliff Huprich on  		alt.machines.cnc newsgroup: find the shortest path going through 400  		random X/Y points. Some people tried to solve the problem with existing  		(expensive) tools or simple heuristics.</p>
<p>We took the challenge by considering the problem as a general  		operations research problem, made some web searches and proposed to use  		a &#8220;Travelling Salesman&#8221; approach in some posts summarized below:</p>
<p>This is known as the &#8220;travelling salesman&#8221; problem.<br />
see <a href="http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html"> http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html</a> for a complete  		reference.<br />
What you need is a program that would &#8220;sort&#8221; your list of points along  		the shortest path.<br />
&#8212;<br />
Made some more research on the &#8220;travelling salesman&#8221; problem (TSP) that<br />
reminded me good old times at university&#8230;</p>
<p>Basically, TSP is a &#8220;NP-complete&#8221; (even &#8220;NP_hard&#8221;) problem, which means  		the absolute optimum path can only be found by trying all possible paths,  		which results in exponential complexity :  if it takes a time T to solve  		for N points, it will take N*T to solve for N+1 points. On a powerful  		PC, if you have more than about 100 points, forget it!</p>
<p>Luckily, there are several approximate methods and algorithms around.  		See <a href="http://w1.859.telia.com/%7Eu85905224/tsp/TSP.htm"> http://w1.859.telia.com/~u85905224/tsp/TSP.htm</a> for very nice,  		animated web-based solvers that illustrate the most common methods.</p>
<p>The efficiency of the various approximate methods depends on how the  		points are distributed : they work faster on points that are grouped in  		clusters or spread along a curve compared to random points.</p>
<p><a href="http://www.math.princeton.edu/tsp/concorde.html"> http://www.math.princeton.edu/tsp/concorde.html</a> is apparently the  		most efficient code available (check their &#8220;benchmarks&#8221; link ) but it  		still takes 7 mins for 1000 points, one hour for 1300, and days for  		2000&#8230;<br />
So to solve your problem, the first question is : do you accept  		sub-optimal solutions ?<br />
The second is : how many points do you have ?<br />
And the third : how are they spread in space ? (please send me a sample  		by e-mail)<br />
&#8212;<br />
I could compile concorde on Windows and it works pretty well in 2D now,  		about 5 secs for 1000 points on my dual AMD 1800.<br />
Will modify it for 3D and ask Princeton if they allow me to release the  		executable<br />
for free, because their license restricts use to academic research.<br />
&#8212;</p>
<p>The &#8220;travelling salesman problem&#8221; (TSP) in general considers a &#8220;cost&#8221;  		for each pair of points (cities).<br />
all you have to provide to the algorithm is simply this cost function.<br />
If the function gives the (euclidian) distance between the points, it  		will solve the problem discussed here.<br />
In the case where you have highway or routes, you assign them for  		example the travel time as cost (and even give different costs to the  		A-&gt;B and B-&gt;A route), and infinite (or very large) cost to pairs that  		have no direct route between them, which actually speeds the algorithm  		considerably up by limiting the search width. This is why TSP algorithms  		are tested/benchmarked precisely on &#8220;symmetric euclidian&#8221; problems like  		the one we have here.</p>
<p style="text-align: center">
<a href='http://projets.ch/wp/blog/44/shorte3/' title='points'><img src="http://projets.ch/wp/files/2008/06/shorte3-150x150.gif" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://projets.ch/wp/blog/44/shorte4/' title='initial guess'><img src="http://projets.ch/wp/files/2008/06/shorte4-150x150.gif" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://projets.ch/wp/blog/44/shorte5/' title='optimal'><img src="http://projets.ch/wp/files/2008/06/shorte5-150x150.gif" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
</p>
<p>As you see, the TSP approach is very powerful, but I still have a  		difficulty with the problem posed here as TSP solvers give the shortest  		*closed* path through all points. For an open path with a given start  		point, there should be a simple thing to do but I&#8217;m not sure which&#8230;</p>
<h3>Links:</h3>
<ol>
<li><a href="http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html"> http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html</a> everything  			on Travelling Salesman Problem (TSP)</li>
<li><a href="http://w1.859.telia.com/%7Eu85905224/tsp/TSP.htm"> http://w1.859.telia.com/~u85905224/tsp/TSP.htm</a> very nice,  			animated web-based solvers that illustrate the most common methods.</li>
<li><a href="http://www.math.princeton.edu/tsp/concorde.html"> http://www.math.princeton.edu/tsp/concorde.html</a> concorde solver</li>
<li>Kenneth Castelino Roshan D’Souza and Paul K. Wright &#8220;Tool-path  			Optimization for Minimizing Airtime during Machining&#8221; 			<a href="http://kingkong.me.berkeley.edu/%7Ekenneth/research/pubs/airtime_minimization_joms.pdf"> http://kingkong.me.berkeley.edu/~kenneth/research/pubs/airtime_minimization_joms.pdf</a></li>
</ol>
<p>[/english]</p>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/44/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
