1. #21
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 9
    Points : 0
    Points
    0

    Par défaut

    Je pense que pour certain vous vous etes perdu ce sujet ne vise pas le fait de réinventer la 3D, simplement a poser un premier projet d'infographie avec certaine contrainte permettant une mise en condition.

  2. #22
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2015
    Messages
    577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2015
    Messages : 577
    Points : 1 236
    Points
    1 236

    Par défaut

    Soit, supposons que nous nous soyons perdu en cours

    Parlons concret si tu veux bien, tu en es ou de tes exos? Tu as du code du coup?

    Ou est-ce que tu bloques? @Kannagi as pourtant bien ré-écris la question...
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Anciennement magicarpe44, Leviathor incoming...

    Que la force soit avec Developpez.net

  3. #23
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 9
    Points : 0
    Points
    0

    Par défaut

    Sachant que je suis toujours bloquer au même endroit j'ai plein de jolie schéma et formule sur mes feuilles mais rien de concret en code

    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    #include <SDL2/SDL.h>
    #include <stdlib.h>
    #include <stdio.h>
     
    struct objet_t creer_cube(int x, int y, int z, int a);
    int projeter_sommet(int d, int zc, int y, int z);
    void afficher_cube(struct objet_t cube, SDL_Window *window);
    void copy_tab(int tab1[], int tab2[], int taille);
    void pause();
    //void afficher_cube(struct objet_t cube, SDL_Surface *ecran);
     
    struct polygone_t //Structure pour une face du cube
    {
        int som1[3];
        int som2[3];
        int som3[3];
        int som4[3];
    };
     
    struct objet_t //Strucutre construite a partir d'une autre structure polygone_t
    {
        struct polygone_t face1;
        struct polygone_t face2;
        struct polygone_t face3;
        struct polygone_t face4;
        struct polygone_t face5;
        struct polygone_t face6;
    };
     
    struct camera_t // Structure possedant 3 composantes de coordonnées et une de distance au plan de projection
    {
        int position[3]; //Tableau pour les coordonnées de la caméra (Xc, Yc, Zc)
        int d; //Distance entre la caméra et le projeté
    };
     
    int main(int argc, char *argv[])
    {
        //Declare
        int hauteur = 480, largeur = 600;
        int a = 100, x, y, z;   //Taille d'un coté et coordonnées du premier sommet
        int origin_cube_x = (largeur/2) - (a/2) ,origin_cube_y = (hauteur/2) + (a/2),origin_cube_z = 100;
        struct objet_t cube = creer_cube(origin_cube_x, origin_cube_y, origin_cube_z, a);
        struct camera_t camera;
     
        camera.d = 100;    //distance focal
        camera.position[0] = largeur/2;  //xc
        camera.position[1] = hauteur/2;  //yc
        camera.position[2] = -camera.d;  //zc
     
        if (SDL_Init(SDL_INIT_VIDEO) == 0) {
            SDL_Window* window = NULL;
            SDL_Renderer* renderer = NULL;
     
            if (SDL_CreateWindowAndRenderer(largeur, hauteur, 0, &window, &renderer) == 0) {
                SDL_bool done = SDL_FALSE;
     
                while (!done) {
                    SDL_Event event;
     
                    afficher_cube(cube, window);
     
                    SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE);
                    SDL_RenderDrawLine(renderer, origin_cube_x, origin_cube_y, origin_cube_x, origin_cube_y - a);
                    SDL_RenderDrawLine(renderer, origin_cube_x, origin_cube_y - a, origin_cube_x + a, origin_cube_y - a);
                    SDL_RenderDrawLine(renderer, origin_cube_x + a, origin_cube_y - a, origin_cube_x + a, origin_cube_y );
                    SDL_RenderDrawLine(renderer, origin_cube_x + a, origin_cube_y, origin_cube_x, origin_cube_y);
     
                    SDL_RenderPresent(renderer);
     
                    while (SDL_PollEvent(&event)) {
                        if (event.type == SDL_QUIT) {
                            done = SDL_TRUE;
                        }
                    }
                }
            }
     
            if (renderer) {
                SDL_DestroyRenderer(renderer);
            }
            if (window) {
                SDL_DestroyWindow(window);
            }
        }
     
     
     
     
     
     
        SDL_Quit();
        return EXIT_SUCCESS;
    }
     
    struct objet_t creer_cube(int x, int y, int z, int a) //Fonction qui crée le cube
    {
        struct objet_t cube;
     
        /*
        Mon origine est placer en 1 donc mes 7 autre sommet seront placer en fonction de ce sommet
     
                4#######3
                #       #
                #   5   #
                #       #
                7#######8
                #       #
                #   2   #
                #       #
        7#######6#######5#######8
        #       #       #       #
        #   4   #   6   #   3   #
        #       #       #       #
        4#######1#######2#######3
                #       #
                #   1   #
                #       #
                4#######3
        */
     
        //Definition de la face avant du cube
     
        //Definition du premier sommet (x,y,z)
     
        cube.face1.som1[0] = x;
        cube.face1.som1[1] = y;
        cube.face1.som1[2] = z;
     
        //Definition du second sommet (x+a,y,z)
     
        cube.face1.som2[0] = x + a;
        cube.face1.som2[1] = y;
        cube.face1.som2[2] = z;
     
        //Definition du troisieme sommet (x+a,y+a,z)
     
        cube.face1.som3[0] = x + a;
        cube.face1.som3[1] = y + a;
        cube.face1.som3[2] = z;
     
        //Definition du quatrieme sommet (x,y+a,z)
     
        cube.face1.som4[0] = x;
        cube.face1.som4[1] = y + a;
        cube.face1.som4[2] = z;
     
        //Fin definition face avant
     
        //########################################################
     
        //Definition de la arriere avant du cube
     
        //Definition du cinquieme sommet
     
        cube.face1.som1[0] = x + a;
        cube.face1.som1[1] = y;
        cube.face1.som1[2] = z + a;
     
        //Definition du sixieme sommet
     
        cube.face1.som2[0] = x;
        cube.face1.som2[1] = y;
        cube.face1.som2[2] = z + a;
     
        //Definition du septieme sommet
     
        cube.face1.som3[0] = x;
        cube.face1.som3[1] = y + a;
        cube.face1.som3[2] = z + a;
     
        //Definition du huitieme sommet
     
        cube.face1.som4[0] = x + a;
        cube.face1.som4[1] = y + a;
        cube.face1.som4[2] = z + a;
     
        //Fin definition face arriere
     
        //#######################################################
     
        //definition face 3 (2,5,8,3)
     
        copy_tab(cube.face1.som2, cube.face3.som1, 3); //Copie le sommet 2 de la face 1 dans le sommet 1 de la face 3
        copy_tab(cube.face2.som1, cube.face3.som2, 3); //Copie le sommet 1 de la face 2 dans le sommet 2 de la face 3
        copy_tab(cube.face2.som4, cube.face3.som3, 3); //Copie le sommet 4 de la face 2 dans le sommet 3 de la face 3
        copy_tab(cube.face1.som3, cube.face3.som4, 3); //Copie le sommet 3 de la face 1 dans le sommet 4 de la face 3
     
        //Fin definition face 3
     
        //#######################################################
     
        //definition face 4 (6,1,4,7)
     
        copy_tab(cube.face2.som2, cube.face4.som1, 3); //Copie le sommet 2 de la face 2 dans le sommet 1 de la face 4
        copy_tab(cube.face1.som1, cube.face4.som2, 3); //Copie le sommet 1 de la face 1 dans le sommet 2 de la face 4
        copy_tab(cube.face1.som4, cube.face4.som3, 3); //Copie le sommet 4 de la face 1 dans le sommet 3 de la face 4
        copy_tab(cube.face2.som3, cube.face4.som4, 3); //Copie le sommet 3 de la face 2 dans le sommet 4 de la face 4
     
        //Fin definition face 4
     
        //#######################################################
     
        //definition face 5 (4,3,8,7)
     
        copy_tab(cube.face1.som4, cube.face5.som1, 3); //Copie le sommet 4 de la face 1 dans le sommet 1 de la face 5
        copy_tab(cube.face1.som3, cube.face5.som2, 3); //Copie le sommet 3 de la face 1 dans le sommet 2 de la face 5
        copy_tab(cube.face2.som4, cube.face5.som3, 3); //Copie le sommet 4 de la face 2 dans le sommet 3 de la face 5
        copy_tab(cube.face2.som3, cube.face5.som4, 3); //Copie le sommet 3 de la face 2 dans le sommet 4 de la face 5
     
        //Fin definition face 5
     
        //#######################################################
     
        //definition face 6 (6,5,2,1)
     
        copy_tab(cube.face2.som2, cube.face6.som1, 3); //Copie le sommet 2 de la face 2 dans le sommet 1 de la face 6
        copy_tab(cube.face2.som1, cube.face6.som2, 3); //Copie le sommet 1 de la face 2 dans le sommet 2 de la face 6
        copy_tab(cube.face1.som2, cube.face6.som3, 3); //Copie le sommet 2 de la face 1 dans le sommet 3 de la face 6
        copy_tab(cube.face1.som1, cube.face6.som4, 3); //Copie le sommet 1 de la face 1 dans le sommet 4 de la face 6
     
        //Fin definition face 6
     
        return cube;
    }
     
    int projeter_sommet(int d, int zc, int y, int z)
    {
        int yp = (d*y)/(zc-z);
        return yp;
    }
     
    void copy_tab(int tab1[], int tab2[], int taille) // Pour 2 tableau de meme taille uniquement
    {
        int i;
        for( i=0 ; i<taille ; i++ )
            tab2[i] = tab1[i];
    }
     
    void pause()
    {
        int continuer = 1;
        SDL_Event event;
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }
     
    void afficher_cube(struct objet_t cube, SDL_Window *window)
    {
        int xp, yp;
    }

  4. #24
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 124
    Points : 6 077
    Points
    6 077

    Par défaut

    Alors règle numéro 1 faudra organiser mieux ton code , tu on aura besoin.

    Franchement le prof ne fait pas un truc compliqué (normalement pour la projection 3D/2D on fait une multiplication de matrice) , votre prof a voulu faire plus simple , votre caméra est fixe !
    Donc en gros plus un objet est éloigné plus il est petit et inversement (plus il est proche plus il est gros) c'est ce que dit la partie 3 grosso modo.

  5. #25
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 9
    Points : 0
    Points
    0

    Par défaut

    Je ne comprend pas comment définir les coordonnées de la caméra et et du cube par rapport a l'écran
    Nom : IMG_20171128_193409[1].jpg
Affichages : 65
Taille : 1,66 Mo

  6. #26
    Membre expert
    Inscrit en
    mars 2005
    Messages
    1 123
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 123
    Points : 3 286
    Points
    3 286

    Par défaut

    Tes vecteurs sont des triplets d'int ? Tu ne peux pas travailler directement en coordonnées écran (pixels), tu as besoin d'un intervalle bien plus large. Bien que ce soit possible de travailler avec des entiers, c'est bien plus compliqué dans ce cas. Utilise des variables flottants (type double ou float). Travaille en coordonnées normalisées (entre zéro et un, ou entre moins un et un) puis convertis-les au dernier moment, tu t'affranchis ainsi des dimensions de la zone de dessin qui peuvent varier et de tout un tas d'autres contraintes.

    Avance progressivement : qu'as-tu réussi à obtenir jusqu'à présent ? Parviens-tu à afficher quelque chose à l'écran ? Qu'est-ce qui te bloque précisément ?

    Prends les problèmes un par un et dans l'ordre.

  7. #27
    Membre à l'essai
    Homme Profil pro
    chef de projet developpement
    Inscrit en
    juillet 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : chef de projet developpement

    Informations forums :
    Inscription : juillet 2015
    Messages : 34
    Points : 13
    Points
    13

    Par défaut idée

    je crois qu'il y a une formule de math pour calculer la position de chaque sommet de ton cube.

    tu trace un cube vue de face par rapport au centre de ta fenêtre normalement pour être parfait a l'affichage tu devrai avoir 4 sommet et 4 arrêtes.
    le centre de ta fenêtre c xyz { 0,0,0 }

    tu peut faire bouger ton cube :

    sur x avec les flèches droite et gauche du calcule chaque sommet de ton cube avec une fonction du genre x = x0 + r * cos(a);
    sur y avec les flèches haut et bas "" "" y = y0 + r * sin(a);
    sur z avec les les touches 1 et 2 par exemple z = z0 + r * tan(a); // a vérifier

    Nom : 1511900827-images1.jpg
Affichages : 60
Taille : 18,4 Ko

    x0 y0 et z0 sont les coordonnées de ton point central du cube relier au point central de ta fenêtre.
    r c'est le rayon du cercle par lequel les sommet de ton cube passe.
    a est l'angle que tu peux modifier avec laide des touches.

  8. #28
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 9
    Points : 0
    Points
    0

    Par défaut

    Pour le moment je n'arrive a obtenir que la face avant le reste par dans tout les sens, j y avait penser a changer mes coordonnées en unitaire je vais faire ça et je reviens vers vous.

    En ce qui concerne ce qui me bloque, je ne comprend pas du tout a partir de quel origine me référencer... En gros je vois doit quel direction placer mes axes mais en ce qui concerne le sens et l’origine de mon repère c'est un mystère

  9. #29
    Membre à l'essai
    Homme Profil pro
    chef de projet developpement
    Inscrit en
    juillet 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : chef de projet developpement

    Informations forums :
    Inscription : juillet 2015
    Messages : 34
    Points : 13
    Points
    13

    Par défaut

    j'ai regarder le schema de ton prof et je me suis dit peut etre que je prend le schema dans le mauvais sens en le lisant .


    le cadre epais c'est la face avant
    dit moi si sa peut t'aider
    Images attachées Images attachées  

  10. #30
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 9
    Points : 0
    Points
    0

    Par défaut

    C'est intéressant comme idée seulement ce genre de fuyante ne correspond pas a ce projet car mon cube doit pouvoir translater et surbir une rotation quelque soit l'axe choisi

  11. #31
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 9
    Points : 0
    Points
    0

    Par défaut

    ENFIN j y suis arrivé mon cube s'affiche en 3D maintenant la gestion des face cacher
    je posterai tout mon programme apres le rendu de mon projet pour que d'autres que ça interesse vois
    comment faire... sachant que je n'ai pas suivi toute la methode du projet ça fonctionnai pas

  12. #32
    Nouveau Candidat au Club
    Homme Profil pro
    université d'avignon
    Inscrit en
    décembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : université d'avignon
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2017
    Messages : 1
    Points : 1
    Points
    1

    Par défaut reaction

    alors vous avez pu bien terminer votre projet je serai intéréssé de voir comment vous avez fait pour la translation et la rotation

Discussions similaires

  1. Enregistrement avec micro par logiciel
    Par Gilles Louïse dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 11/06/2006, 12h00
  2. Cube avec 8 Vertex + textures
    Par mister3957 dans le forum DirectX
    Réponses: 2
    Dernier message: 24/11/2005, 00h31
  3. [java3d] Rendu logiciel
    Par redtux dans le forum 3D
    Réponses: 7
    Dernier message: 21/10/2005, 11h01
  4. Decision Cube avec Oracle
    Par Leclair2000 dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/11/2004, 16h38
  5. Problème avec le rendu de sphère
    Par Francky033 dans le forum DirectX
    Réponses: 10
    Dernier message: 29/08/2003, 23h00

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