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

Turbo Pascal Discussion :

Comment obtenir un polygone


Sujet :

Turbo Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment obtenir un polygone
    bonsoir, je voudrais savoir comment écrire un programme qui dessine un octogone régulier.
    Merci et à bientôt

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Quelle difficulté rencontrez-vous ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut rep
    La difficulté est que je n'arrive pas à l'aide d'une boucle dessiner un polygone régulier à partir d'un point ; il s'agit de tracer un coté du polygone puis de tourner d'un angle donné j'usqu'à obtenir une ligne fermée

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Vous n'y arrivez pas, mais encore ? Pourriez-vous montrer le code que vous avez écrit, même s'il n'est pas bon ? Parce que, franchement, personne n'est ici pour faire vos devoirs à votre place.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Ce forum n'ayant pas bougé depuis longtemps, je me permets de donner une solution qui pourrait servir à d'autres en plus du demandeur(On est tous passé par cette étape d'incertitude de ce qu'on fait ou ce qu'on veut faire) :
    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
     
      Uses Crt, Graph;
      VAR
          I, R, X, Y, X1, Y1 : Integer;
          Ang : Real;
          Poly: Byte ;
    {====================================}
      PROCEDURE initgr;
         VAR  Gd,Gm:integer; PathToDriver:String;
          Begin
            Gd:= detect;
            initgraph(Gd,Gm,'BGI');
             IF (graphresult<>grok) then
               begin
                clrscr;
                writeln;
                writeln(' Pilote graphique introuvable ! ');
                Write(' Indiquer le chemin du pilote graphique : ');
                Readln(PathToDriver);
                gd:=detect;
                InitGraph(Gd,Gm,PathToDriver);
               end;
          End;
    {======================================================}
     {Pour afficher un polygone de n côtés, on doit mettre la valeur n
     souhaitée dans la variable Poly, On peut faire la même chose pour
     le rayon R du cercle circonscrit
     Le polygone étant régulier, on peut commencer à partir d'un
     triagle équilatéral, un carré...}
    Begin
        Repeat
          Write('  Donner le nombre de côtés du polygone n = ');
          Readln(Poly);
          ClrScr;
        Until Poly >=3;
        InitGr;
     
        SetColor(14);{Couleur de départ jaune}
        SetLineStyle(0,0,3); {Style de trait : épais,
        la normale est 1 ou tout simplement on supprime cette ligne}
        {Centre de l'écran}
        X:=GetMaxX div 2;
        Y:=GetMaxY div 2;
        {On marque le centre du polygone en jaune}
        PutPixel(x,y,14);
        {Initilisation du rayon R}
        R:=150;
        {Calcul de l'angle de rotation}
        Ang := 2*Pi/Poly;
        {On commence sur l'axe horizontal}
        MoveTo(X+R, Y);
        {Itération sur les côtés du polygone}
        For i:= 1 To Poly DO
          begin
            X1:= Round(x+R*Cos(i*Ang)) ;
            Y1:= Round(y+R*Sin(i*Ang));
            LineTo(X1, Y1);
            SetColor(i);  {Changement de couleur pour les côtés du polygone.
                           On peut s'en passer}
          end;
        readln;   
        CloseGraph;
    End.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    En suivant la même méthode, on peut également utiliser le type PointType et la fonction DrawPoly :

    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
     
    program Octogone;
     
    { Compilation testée : Free Pascal 2.6.4, Turbo Pascal 7.0. }
     
    uses
      Graph, {$IFDEF FPC}WinCrt{$ELSE}Crt{$ENDIF};
     
    const
      A = 2 * PI / 8;
     
    var
      pilote, mode: {$IFDEF FPC}smallint{$ELSE}integer{$ENDIF};
      points: array[0..8] of pointType;
      xc, yc, r, i: integer;
     
    begin
      pilote := {$IFDEF FPC}d8bit{$ELSE}VGA{$ENDIF};
      mode := {$IFDEF FPC}m640x480{$ELSE}VGAHi{$ENDIF};
     
      InitGraph(pilote, mode, 'C:\BGI');
     
      xc := GetMaxX div 2;
      yc := GetMaxY div 2;
     
      r := GetMaxY div 3;
     
      for i := 0 to 8 do
      begin
        points[i].x := xc + Round(r * Cos(A * i));
        points[i].y := yc + Round(r * Sin(A * i));
      end;
     
      DrawPoly(SizeOf(points) div SizeOf(pointType), points);
     
      ReadKey;
      CloseGraph;
    end.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Salut Roland ;
    Pour FPC, je ne l'ai jamais(ou presque) utilisé, donc pas la compilation conditionnelle utilisée dans ton code.

    En ce qui concerne DrawPoly et PointType, je connais et c'est peut-être plus court, mais je n'ai pas voulu les utiliser pour ne pas trop laisser le demandeur perplexe quant à la signification des différents termes. Déjà avec le code que j'ai envoyé et d'après sa demande, il semble très débutant en la matière.

    Merci encore pour le code et je te donne le
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. comment obtenir un polynome de regression
    Par evariste_galois dans le forum Mathématiques
    Réponses: 17
    Dernier message: 19/01/2007, 16h06
  2. Réponses: 5
    Dernier message: 18/01/2004, 17h25
  3. Comment obtenir l'heure du serveur avec flash ?
    Par Michaël dans le forum Flash
    Réponses: 9
    Dernier message: 23/12/2003, 18h50
  4. Comment detecter un polygon sous le curseur
    Par FreshVic dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/07/2003, 11h48
  5. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 17h54

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