IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algo de construction de carte isobare


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut Algo de construction de carte isobare
    Bonjour,
    Je cherche le nom d'un algo permettant de construire une carte isobare à partir d'une matrice ou d'une grille...

    Merci d'avance
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Je viens de trouver la réponse sur un PDF OpenGL : http://www.greyc.ensicaen.fr/ensicae..._2005/DT_1.pdf

    Le nom de l'algo semble etre marching square...
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Bon bha voila, c'est implémenté façon gros bourrin en PHP...
    Je laisse le code source au prochain qui aura besoin de ça, en attendant de mettre tout ça au propre et peut être d'en faire une lib.

    Je le laisse dans Algo plutot que PHP, car dans un langage ou un autre, c'est l'algo qui compte !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    <?php
    class iso
    {
    	var $matrice = false;
    	var $img = false;
    	var $resolution = 5;
    	var $largeur = 100;
    	var $hauteur = 100; 
    	function iso()
    	{
    		$this->img = imagecreatetruecolor($this->largeur * $this->resolution, $this->hauteur * $this->resolution);
    		$this->matrice = array();
    		for($i=0;$i<$this->largeur;$i++)
    		{
    			$this->matrice[] = array();
    			for($j=0;$j<$this->hauteur;$j++)
    			{
    				//$this->matrice[$i][$j] = $j > 5 && $j < 15 && $i > 5 && $i < 15 ? 10 : 1; //mt_rand(1, 10);
    				//$this->matrice[10][10] = 1;
    				$this->matrice[$i][$j] = mt_rand(1, 10);
    			}
    		}
    	}
     
    	function DrawPetitCarre($x , $y, $taille, $hg, $hd, $bg, $bd, $r, $g, $b)
    	{
     
    		$color = imagecolorallocate($this->img, $r, $g, $b);
    		$test = ($hg ? 1 : 0).($hd ? 1 : 0).($bg ? 1 : 0).($bd ? 1 : 0);
    		$demi = $taille / 2;
    		switch($test)
    		{
    			case '0000':break;
    			case '0001': imageline($this->img, $x + $demi, $y + $taille, $x + $taille, $y + $demi, $color);break;
    			case '0010': imageline($this->img, $x, $y + $demi, $x + $demi, $y + $taille, $color);break;
    			case '0011': imageline($this->img, $x, $y + $demi, $x + $taille, $y + $demi, $color);break;
    			case '0100': imageline($this->img, $x + $demi, $y, $x + $taille, $y + $demi, $color);break;
    			case '0101': imageline($this->img, $x + $demi, $y, $x + $demi, $y + $taille, $color);break;
    			case '0110': imageline($this->img, $x, $y + $demi, $x + $demi, $y, $color);imageline($this->img, $x + $demi, $y + $taille, $x + $taille, $y + $demi, $color);break;
    			case '0111': imageline($this->img, $x, $y + $demi, $x + $demi, $y , $color);break;
    			case '1000': imageline($this->img, $x, $y + $demi, $x + $demi, $y, $color);break;
    			case '1001': imageline($this->img, $x + $demi, $y, $x + $taille, $y + $demi, $color);imageline($this->img, $x, $y + $demi, $x + $demi, $y + $taille, $color);break;
    			case '1010': imageline($this->img, $x + $demi, $y, $x + $demi, $y + $taille, $color);break;
    			case '1011': imageline($this->img, $x + $demi, $y, $x + $taille, $y + $demi, $color);break;
    			case '1100': imageline($this->img, $x, $y + $demi, $x + $taille, $y + $demi, $color);break;
    			case '1101': imageline($this->img, $x + $demi, $y + $taille, $x , $y + $demi, $color);break;
    			case '1110': imageline($this->img, $x + $demi, $y + $taille, $x + $taille , $y + $demi, $color);break;
    			case '1111':break;	
    		}
     
    	}
     
     
    	function Render()
    	{
    		$val = 5;
    		$matrice = $this->matrice;
    		for($val=1;$val<10;$val+=4)
    		{
    			for($i=0.5;$i<$this->hauteur-1;$i++)
    			{
    				for($j=0.5;$j<$this->largeur-1;$j++)
    				{
     
    					$this->DrawPetitCarre(($j*$this->resolution) + ($this->resolution/2) , ($i * $this->resolution) + ($this->resolution / 2), $this->resolution, 
    																($this->matrice[floor($j)][floor($i)] < $val ? 1 : 0), 
    																($this->matrice[ceil($j)][floor($i)] < $val ? 1 : 0),
    																($this->matrice[floor($j)][ceil($i)] < $val ? 1 : 0),
    																($this->matrice[ceil($j)][ceil($i)] < $val ? 1 : 0),
    																$val == 5 ? 255 : 0, $val == 9 ? 255 : 0, $val == 1 ? 255 : 0
    																);
    				}
     
    			}
    		}
    	}
     
    	function HtmlRenderMatrice()
    	{
    		$texte = '<style>td{border:1px solid #000000;text_align="center"}</style><table style="border-collapse:collapse;">';
    		foreach($this->matrice as $keyx => $valx)
    		{
    			$texte .= '<tr>';
    			foreach($valx as $keyy => $valy)
    				$texte .= '<td>'.$valy.'</td>';
    			$texte .= '</tr>';
    		}
    		$texte .= '</table>';
     
    		return $texte;
    	}
     
    }
     
     
    $iso = new iso();
    $iso->Render();
     
     
    header('Content-type: image/jpg');
    imagejpeg($iso->img);
    //echo $iso->HtmlRenderMatrice();
     
    ?>
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Représentation arbre n-aire en C++ et construction de l'arbre pendant l'algo MiniMax
    Par Cornellus1985 dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 28/11/2010, 00h39
  2. algo construction d'un arbre
    Par grabriel dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 18/08/2008, 09h16
  3. algo veerif num carte national d identite FR / passport FR
    Par tacata972 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/05/2006, 21h58
  4. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo