Les Snippets

Connexion

Tri d'un tableau de TPoint selon la valeur croissante des angles entre eux

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 31/10/2007 15:19:41 et initié par Jean_Jean [Liste]
Vue : 2069
Catégorie(s) : Maths, Trucs & Astuces, Algorithme, Divers
Langages dispo pour ce code :
- Delphi 5



Langage : Delphi 5
Date ajout : 31/10/2007
Posté par Jean_Jean [Liste]
{-------------------------------------------------------------------------------
 Le tri se fait sur les valeurs d'angles croissant entre les couples de points 
 d'un tableau de TPoint.
-------------------------------------------------------------------------------}
Procedure TriTabSurAnglePoints(Var TbAng   : array of Single;
                                              Var TbP      : Array Of TPoint;
                                              Nvaleur       : LongInt);
  Var i,j,tx,ty : Integer;
  Var ta : Single;
  procedure permute;
  begin
    ta      := TbAng[i];
    tx      := Tbp[i].X;
    ty      := Tbp[i].Y;
    TbAng[i]:= TbAng[j];
    Tbp[i].X:= Tbp[j].X;
    Tbp[i].Y:= Tbp[j].Y;
    TbAng[j]:= ta;
    Tbp[j].X:= tx;
    Tbp[j].Y:= ty;
  end;
Begin
  For i:=0 To NValeur -1 Do
    For j:=i+1 To NValeur - 1 Do
    begin
      if TbAng[i] > TbAng[j]
        Then permute
        else if TbAng[i] = TbAng[j] then permute;
    end;
End;
Exemple : 1. choisir un Point Pivot : Pivot.
               2. on calcule les angles pour chacun des couples du tableau de Point
               3. on trie par angles croissants
    For i := 1 to NPoints do
    begin
      P[i]:= Point(random(200),random(100));
      VTAngle[i] := FCAng2Pt2D(0,0,P[i].X-Pivot.X,P[i].Y-Pivot.Y);
    end;
    TriTabSurAnglePoints(VTAngle,P,NPoints);


Remarque :
FCAng2Pt2D renvoie un angle en single utilisée dans la fonction de tri.
Le tri ne doit s'effectuer que sur les Nvaleur définies

Snippets en rapport avec : Tableau, Tri, Angle, Bulle, Ouvert



Codes sources en rapport avec : Tableau, Tri, Angle, Bulle, Ouvert

{Visual Basic, VB6, VB.NET, VB 2005} TRI BULLE DANS UN TREEVIEW
La propriété "Sorted" du treeview ne me satisfait pas. Voilà donc une fonction qui permet de fai...

{Javascript / DHTML} TRI DE TABLEAU, ALGORITHME LES PLUS CONNUS IMPLÉMENTÉS (FUSION, QUICK, SHELL, SEDGE, MERGE)
Suite à une discussion sur le forum, j'ai implémenté ces algorithmes pour les comparer à celui du n...

{Javascript / DHTML} AFFICHAGE, ÉDITION GRAPHIQUE DE TABLEAUX
Ce script permet d'afficher les tableaux, et de les éditer. On peut afficher des tableaux simple ou ...

{Javascript / DHTML} TRI DE TABLEAUX HTML
Ce code permet d'ajouter un tri automatique sur un tableau classique, le javascript fait tout à part...

{Visual Basic, VB6, VB.NET, VB 2005} COMPRESSION
Fonction pour comprimer un tableau de byte...

{C# / C#.NET} TRI GÉNÉRIQUE : TRI RAPIDE, TRI À BULLE, TRI PAR SÉLECTION
J'ai eu à faire pas mal de tri sur diverses choses ces derniers temps, aussi, je me suis fait cette ...

{Javascript / DHTML} TRI DYNAMIQUE DE TABLEAU HTML, MULTI COLONNES, ORIENTÉ OBJET, IE ET FF
Evolution du script : http://www.javascriptfr.com/code.aspx?ID=34180 (auteur zilx). Pas besoins de ...

{Assembleur} PROGRAMME DE TRI (CROISSANT) D'UN TABLEAU EN ASSEMBLEUR DU DSP CONTROLEUR TMS320LF2407
C'est un petit programme qui fait le tri d'untableau pour le DSP controleur TMS320LF2407 utiliser...

{Javascript / DHTML} TRI DE TABLEAU HTML, SCRIPT ORIENTÉ OBJET
Ce script est une adaptation du code de ce script : http://www.javascriptfr.com/code.aspx?id=29926 (...

{C / C++ / C++.NET} TRI CROISSANT ET DÉCROISSANT D'ENTIERS
Ce programme saisit des valeurs dans un tableau x de 100 entiers, puis les trie dans un ordre croi...