Précédent   Forum des professionnels en informatique > Autres langages > Algorithmes > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2011, 14h25   #41
Candidat au titre de Membre du Club
 
Homme
Responsable fonctionnel SOGETI
Inscription : avril 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Responsable fonctionnel SOGETI
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2011
Messages : 24
Points : 13
Points : 13
Par contre j'ai tenté de modifier le code pour gérer la continuité "sphérique". Mon but étant d'appliquer cet algorithme à l'étiquetage de continents, îles et océans, et donc un océan sur le bord droit de l'image continu à gauche. On ne devrait trouver qu'un seul label et pas deux.

J'ai essayé avec les modulos (code ci-dessous) tels que déjà implémentés dans l'algo du "Diamond Square". Mais cela ne marche pas. Une idée ?

Code Delphi :
1
2
3
4
5
 
     If ( (X>0)   And (fMatrixC[(X-1+W) Mod W,Y Mod H] = fMatrixC[X Mod W,Y Mod H]))             Then Root := CCunion(CCfind(PosI - 1),     Root);
      If ( (X>0)   And (Y>0) And (fMatrixC[(X-1+W) Mod W, (Y-1+H) Mod H] = fMatrixC[X Mod W,Y Mod H])) Then Root := CCunion(CCfind(PosI - 1 - W), Root);
      If ( (Y>0)   And (fMatrixC[X Mod W,(Y-1+H) Mod H] = fMatrixC[X Mod W,Y Mod H]))             Then Root := CCunion(CCfind(PosI - W),     Root);
      If ( (X<W-1) And (Y>0) And (fMatrixC[(X+1) Mod W, (Y-1+H) Mod H] = fMatrixC[X Mod W,Y Mod H])) Then Root := CCunion(CCfind(PosI + 1 - W), Root);
zuulcoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 14h51   #42
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 436
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 39
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 436
Points : 14 162
Points : 14 162
Citation:
Envoyé par zuulcoder Voir le message
Par contre j'ai tenté de modifier le code pour gérer la continuité "sphérique". Mon but étant d'appliquer cet algorithme à l'étiquetage de continents, îles et océans, et donc un océan sur le bord droit de l'image continu à gauche. On ne devrait trouver qu'un seul label et pas deux.

J'ai essayé avec les modulos (code ci-dessous) tels que déjà implémentés dans l'algo du "Diamond Square". Mais cela ne marche pas. Une idée ?
Le plus simple c'est de gérer spécifiquement les pixels qui assurent la continuité sphérique, c'est à dire les pixels sur les bords.

Donc, une fois la double boucle effectuée, on s'occupe de fusionner les bords gauche/droit, puis ensuite les bords haut/bas.

Code delphi :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
For Y := 0 to H - 1 do Begin
  For X := 0 to W - 1 do Begin
    (...)
  End;
End;
 
// merge left/right border
Pos := 0;
For Y := 0 to H - 1 do Begin
  if (Image1[0,Y] = Image1[W-1,Y]) then CCunion( CCfind(Pos), CCfind(Pos+W-1) );
  Pos := Pos + W;
End;
 
// merge top/bottom border
Pos := 0;
For X := 0 to W - 1 do Begin
  if (Image1[X,0] = Image1[X,H-1]) then CCunion( CCfind(Pos), CCfind(Pos+(H-1)*W) );
  Pos := Pos + 1;
End;
 
// Remove indirection...
(...)

(je ne maitrise pas trop Delphi )
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/07/2011, 09h08   #43
Candidat au titre de Membre du Club
 
Homme
Responsable fonctionnel SOGETI
Inscription : avril 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Responsable fonctionnel SOGETI
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2011
Messages : 24
Points : 13
Points : 13
Citation:
Envoyé par pseudocode Voir le message
Le plus simple c'est de gérer spécifiquement les pixels qui assurent la continuité sphérique, c'est à dire les pixels sur les bords.

Donc, une fois la double boucle effectuée, on s'occupe de fusionner les bords gauche/droit, puis ensuite les bords haut/bas.

(je ne maitrise pas trop Delphi )
Pour quelqu'un qui ne maitrise pas Delphi tu te débrouilles plutôt bien
Cela fonctionne

J'ai mis à jour l'algo Delphi avec cette modif.

Un grand merci pour ta disponibilité et tes conseils avisés
zuulcoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 15h07   #44
Invité de passage
 
Inscription : janvier 2012
Messages : 1
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 1
Points : 1
Points : 1
Par défaut Rapidité

Bonjour,

Quelqu'un a-t-il testé la vitesse en C et en Java pour confirmer (ou non) si le C va (beaucoup ?) plus vite que Java

Merci
mjobert est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h35.


 
 
 
 
Partenaires

Hébergement Web