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 :

Dessiner une sphère


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut Dessiner une sphère
    Bonjour chers lecteurs,
    Je veux écrire un programme en Pascal qui trace et affiche une sphère; celui que j'ai écrit se compile sans aucun problème mais ne s'exécute pas. Je ne sais pas exactement où se trouve le problème.
    Aidez-moi afin qu'il puisse s'exécuter. Merci!
    Voici ce programme
    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
    106
    program Courbe3D;
     
    uses Crt,Graph;
     
    var x,y,z     : array[1..4] of real;
        affx,affy : array[1..4] of integer;
        cos1,sin1 : real;
        cos2,sin2 : real;
        agr       : integer;
        ecran,mode: integer;
        pn        : real;
     
    procedure Angle(x,y : real);
    begin
         cos1:=cos(x*pi/180);
         sin1:=sin(x*pi/180);
         cos2:=cos(y*pi/180);
         sin2:=sin(y*pi/180);
    end;
     
    procedure Zoom(z : integer);
    begin
         agr:=z;
    end;
     
    procedure Calcule2D(a : integer ; x,y,z : real);
    var xyz : real;
    begin
         xyz:=cos1*x+sin1*y;
         y:=cos1*y-sin1*x;
         x:=xyz;
         xyz:=cos2*y+sin2*z;
         z:=cos2*z-sin2*y;
         y:=xyz;
         affx[a]:=trunc(x[a]*(1-z[a]/1000))+320;
         affy[a]:=trunc(-y[a]*(1-z[a]/1000))+240;
    end;
     
    function Fonction(x,y : real) : real;
    begin
         Fonction:=10*sin(sqrt(x*x+y*y))/(sqrt(x*x+y*y));
    end;
     
    procedure Affiche;
     begin
     setcolor(blue);
     moveto(affx[1],affy[1]);
     lineto(affx[2],affy[2]);
     moveto(affx[2],affy[2]);
     lineto(affx[3],affy[3]);
     moveto(affx[3],affy[3]);
     lineto(affx[4],affy[4]);
     moveto(affx[4],affy[4]);
     lineto(affx[1],affy[1]);
     floodfill(affx[1],affy[1],blue);
     end;
    end;
     
    procedure Trace(umin,umax,vmin,vmax,r : real ; udiv,vdiv : integer);
    var a,b : integer;
    begin
         setcolor(white);
         for a:=0 to xdiv-1 do
         for b:=0 to ydiv-1 do
         begin
              u:= umin+(umax-umin)*a/udiv;
              v:= vmin+(vmax-vmin)*b/vdiv;
              x[1]:=r*(cos(v))*(sin(u)) ;
              y[1]:=r*(sin(v))*(sin(u)) ;
              z[1]:=r*(cos(u));
              Calcule2D(1,x[1]*agr,y[1]*agr,z[1]*agr);
              v:= vmin+(vmax-vmin)*a+1/vdiv;
              u:= umin+(umax-umin)*b/udiv;
               x[2]:=r*(cos(v))*(sin(u)) ;
               y[2]:=r*(sin(v))*(sin(u)) ;
              z[2]:=r*(cos(u));
              Calcule2D(2,x[2]*agr,y[2]*agr,z[2]*agr);
              v:= vmin+(vmax-vmin)*a+1/vdiv;
              u:= umin+(umax-umin)*b+1/udiv;
               x[3]:=r*(cos(v))*(sin(u)) ;
               y[3]:=r*(sin(v))*(sin(u)) ;
              z[3]:=r*(cos(u));
              Calcule2D(3,x[3]*agr,y[3]*agr,z[3]*agr);
              v:= vmin+(vmax-vmin)*a/vdiv;
              u:= umin+(umax-umin)*b+1/udiv;
               x[4]:=r*(cos(v))*(sin(u)) ;
               y[4]:=r*(sin(v))*(sin(u)) ;
              z[4]:=r*(cos(u));
              Calcule2D(4,x[4]*agr,y[4]*agr,z[4]*agr);
              Affiche;
         end;
    end;
     
    begin
         ecran:=VGA;
         mode:=2;
         InitGraph(ecran,mode,'');
         SetBkColor(black);
         SetColor(white);
         ClearDevice;
         Angle(-20,120);
         Zoom(15);
         Trace(-15,15,-15,15,2,101,101);
         Readln;
         CloseGraph;
    end.
    Je ne sais pas exactement où se trouve le problème. Pardon, aidezmoi afin qu'il puisse s'exécuter. Merci !

  2. #2
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour

    A première vue, je dirai que ça vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     InitGraph(ecran,mode,'');
    Il faut que tu précises le chemin vers le BGI. Mais en fait quand je regarde cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure Calcule2D(a : integer ; x,y,z : real);
    var xyz : real;
    begin
         xyz:=cos1*x+sin1*y;
         y:=cos1*y-sin1*x;
         x:=xyz;
         xyz:=cos2*y+sin2*z;
         z:=cos2*z-sin2*y;
         y:=xyz;
         affx[a]:=trunc(x[a]*(1-z[a]/1000))+320;
         affy[a]:=trunc(-y[a]*(1-z[a]/1000))+240;
    end;
    Il risque d'avoir conflit entre tes variables passées en paramètres (x, y, z) réels et tes variables globales (x, y, z) qui sont des tableaux de réels

    Cordialement

Discussions similaires

  1. dessiner une sphère en 3d en c++
    Par dadou846 dans le forum C++
    Réponses: 8
    Dernier message: 03/05/2009, 20h40
  2. Dessiner une sphère avec un vertex shader
    Par zeyous dans le forum OpenGL
    Réponses: 10
    Dernier message: 18/03/2008, 11h34
  3. Dessiner un cercle sur une sphère ?
    Par nico_ippo dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/01/2007, 17h25
  4. Dessiner une image en arrière plan d'1 MDI Main Frame
    Par Yacine95000 dans le forum MFC
    Réponses: 3
    Dernier message: 14/06/2004, 10h22
  5. Dessiner une ligne dans un cube transparent ?
    Par Muetdhiver dans le forum OpenGL
    Réponses: 4
    Dernier message: 04/05/2004, 11h06

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