Pour pouvoir lire cette page contenant une appliquette Java, il est nécessaire de disposer de l'environnement Java de SUN téléchargeable gratuitement ici .

Marche aléatoire dans l'espace


L'espace est rapporté à un repère (O;i;j;k). On part de l'origine O et à chaque étape, on suit aléatoirement l'un des vecteurs i, -i, j, -j, k ou -k. Quelle est la trajectoire obtenue au bout de 1 000 étapes?

Un résultat :

La figure ci-dessous a été obtenue avec une appliquette JMath3D, qui si on lui fournit un fichier .obj, donne une représentation dans l'espace de l'objet décrit.

Le fichier .obj est disponible ici . Il a été obtenu avec le formulaire Javascriptci-dessous.

Vous pouvez déplacer la figure à la souris et et avec la molette vous pouvez agrandir ou diminuer la figure.

Avec un clic droit sur l'appliquette, vous pouvez voir la figure de face, de gauche, de dessus… C'est assez étonnant.


La machine :

Ce formulaire fournit le fichier .obj. Il suffit 

  1. de cliquer sur Lancer;
  2. de cliquer sur la zone de texte et de sélectionner le texte obtenu avec Ctrl A;
  3. de le copier avec Ctrl C;
  4. d'ouvrir un nouveau fichier avec un éditeur de texte (pas un traitement de texte);
  5. de coller le contenu avec Ctrl V;
  6. d'enregistrer le fichier avec une extension .obj genre toto.obj

utiliser JMath3D

Si vous voulez utiliser le fichier que vous avez créé

  1. visitez le site de JMath3D , en particulier la page documentation ;
  2. voir aussi cette page de présentation.

Galerie

Sur cette galerie , j'ai mis des captures d'écran de figures obtenues après 10 000 ou 50 000 déplacements élémentaires.

Le code

<script type="text/javascript">
//marche aléatoire dans l'espace
//fait le 07 mai 2008
// http://pagesperso-orange.fr/calque/js/esp.html
//pour 10 000 étapes changer la ligne 3

function marche()
{
var total=1000;
var ligne=0;
ligne=total/5;
var cox=0;
var coy=0;
var coz=0;
var al=0;
var choix=0;
var obj="#http://pagesperso-orange.fr/calque/js/esp.html    \n v \t 0\t 0 \t 0 \n";
for(var c=0;c<total;c++)
	{
	choix=Math.floor(3*Math.random());
	al=2*Math.floor(2*Math.random())-1;
	switch(choix)	{
			case 0: cox=cox+al;
			break;
			case 1: coy=coy+al;
			break;
			case 2: coz=coz+al;
			break;
			}
			
	obj=obj+"v"+"\t"+cox+"\t"+coy+"\t"+coz+"\n";
	};

var d=0;
	var lis="# on trace les segments \n l 1 2 3 4 5 \n";
	for(var f=1;f<ligne;f++)
	{
		lis+="l  "+parseInt(5*f)+" "+parseInt(5*f+1)+" "+parseInt(5*f+2)
		+" "+parseInt(5*f+3)+" "+parseInt(5*f+4)+" "+parseInt(5*f+5)+"\n";
	}

obj=obj+lis+"#merci de votre visite";

document.machineEsp.march.value=obj;

}

</script>

fait le 7 mai 2008