Les Snippets

Connexion

Dessine une Etoile de David à partir du centre et du rayon du cercle circonscrit

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



Langage : Delphi 5
Date ajout : 15/10/2007
Posté par Jean_Jean [Liste]
{-- FCooPtStarDavid2d ----------------------------------------------------------
 Calcule les coordonnées des douze sommets d'une étoile de David en 2D à partir
 des coordonnées du Centre de gravité
 Entrées : CG(x,y)
            : R rayon du cercle qui circonsrit  l'étoile
 Sorties : S1(x1,y1)..S12(x12,y12)
-------------------------------------------------------------------------------}
Function FCooPtStarDavid2d (CG : Tpoint; R : LongInt) : T12Points;
 var  H : extended; // H hauteur du triangle equilatéral des étoiles internes
        a : Extended; // a = longueur d'une branche de l'étoile
begin
  H := R / 2;
  a := R / sqrt(3);
  Result[1].X := Round(CG.X + a);
  Result[1].Y := CG.Y;
  Result[2].X := Round(CG.X + 1.5 * a);
  Result[2].Y := Round(CG.Y + H);
  Result[3].X := Round(CG.X + a / 2);
  Result[3].Y := Result[2].Y;
  Result[4].X := CG.X;
  Result[4].Y := Round(CG.Y + R);
  Result[5].X := Round(CG.X - a / 2);
  Result[5].Y := Result[2].Y;
  Result[6].X := Round(CG.X - 1.5 * a);
  Result[6].Y := Result[2].Y;
  Result[7].X := Round(CG.X - a);
  Result[7].Y := CG.Y;
  Result[8].X := Result[6].X;
  Result[8].Y := Round(CG.Y - H);
  Result[9].X := Result[5].X;
  Result[9].Y := Result[8].Y;
  Result[10].X := CG.X;
  Result[10].Y := Round(CG.Y - R);
  Result[11].X := Result[3].X;
  Result[11].Y := Result[8].Y;
  Result[12].X := Result[2].X;
  Result[12].Y := Result[8].Y;
end;
Exemple :
{ ETOILE DE DAVID --------------------------------------------------------------
 Ox,Oy     : Centre de la figure
 R         : rayon du cercle circoncrit de l'étoile
 e         : épaisseur de la ligne entourant la figure
 aCanvas   : Canvas désigné sur laquelle la figure sera déssinée
 aColorExt : Couleur du trait extérieur
 aColorIt  : Couleur intérieure
 ------------------------------------------------------------------------------}
procedure Draw_StarDavid(Ox,Oy,R,e : Word;aAngle : Real; aCanvas : TCanvas;aColorExt,aColorInt: Tcolor);
 var  CooSomStar : T12Points; // coordonnées des 12 sommets
begin
  CooSomStar := FCooPtStarDavid2d (Point(Ox,Oy),R);
  With aCanvas do
  begin
    Brush.Color := aColorInt;
    Brush.Style := bsSolid;
    Pen.Color   := aColorExt;
    Pen.Style   := psSolid;
    Pen.Width   := e;
    Polygon([Point(CooSomStar[1].X, CooSomStar[1].Y),
             Point(CooSomStar[2].X, CooSomStar[2].Y),
             Point(CooSomStar[3].X, CooSomStar[3].Y),
             Point(CooSomStar[4].X, CooSomStar[4].Y),
             Point(CooSomStar[5].X, CooSomStar[5].Y),
             Point(CooSomStar[6].X, CooSomStar[6].Y),
             Point(CooSomStar[7].X, CooSomStar[7].Y),
             Point(CooSomStar[8].X, CooSomStar[8].Y),
             Point(CooSomStar[9].X, CooSomStar[9].Y),
             Point(CooSomStar[10].X, CooSomStar[10].Y),
             Point(CooSomStar[11].X, CooSomStar[11].Y),
             Point(CooSomStar[12].X, CooSomStar[12].Y)] );
  end;
end;

Remarque :
Type
  T12Points = array[1..12] of TPoint; // Type 12 Points

Snippets en rapport avec : Triangle, Etoile, Graphique, Polygon, Coordonnées



Codes sources en rapport avec : Triangle, Etoile, Graphique, Polygon, Coordonnées

{JAVA / J2EE} TRIANGLE D'ÉTOILES
Le programme invite l'utilisateur à rentrer un nombre entier, correspondant aux nombre de lignes. Pl...

{JAVA / J2EE} POLYGONE RÉGULIER EN FORME D'ÉTOILE
Voici une petite fonction permettant de tracer un polygone régulier (juste régulier, ou en forme d'é...

{Visual Basic, VB6, VB.NET, VB 2005} ETOILE QUI ROULE N'AMMASE PAS MOUSSE...
Une petite étoile qui roule... Et quelques explications trees basiques sur le cercle trigonometriqu...

{Javascript / DHTML} FENETRE QUI SE DEPLACE
Creation d'un calque qui se deplace avec un bouton pour reduire la fenetre et un bouton pour la ferm...

{Delphi} JEU DE CHIFFRES
petit jeu de reflexion à deux que j'avais deja commencé il y a longtemps mais je manipulais trop d'i...

{C / C++ / C++.NET} BASE POUR L'UTILISATION DU GDI (API WINDOWS)
J'ai eu assez de mal à savoir commment utiliser le GDI (la solution n'est pas donnée toute faite dan...

{C / C++ / C++.NET} [WIN32][C][DEV-C++] GRAPH TRANSPARENT DEBIT RESEAU
Voila une petite source qui affiche un graphique transparent du débit réseau (moyenne sur 1/2 minute...

{C / C++ / C++.NET} CALCULER SES MOYENNES
Voila mon premier programme en C (je n'avais jamais touché à ce langage avant), il n'est pas vraimen...

{JAVA / J2EE} GRAPHIQUE EN BÂTON
Une classe permettant de créer des graphiques en bâton , plusieurs mises en forme sont disponnibles ...

{PHP} ALGORITHME DE DOUGLAS-PEUKER
En ces temps bénis où chaque brin d'herbe est référencé sur GoogleEarth et où la moindre trottinette...