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

Développement 2D, 3D et Jeux Discussion :

bouger en temps réel


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut bouger en temps réel
    Salut
    J’ai un problème assez mathématique j'ai essayer de résonner tous seul mais je ne suis pas arrivé alors voila:
    si j'arrive a modéliser une fonction paramétrique avec des réel comment de ça passer a une fonction avec des entier par exemple( x=sin(t) et y=cos(t) ) quand je met des entier dans t ça donne n'importe quoi c'est normal.
    Je me demande comment à partir d'une fonction de ce type faire en sorte que mon programme choisi les point les plus significatif pour que mon mouvement soit un sens vu su encran.

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Peut on savoir pourquoi est que tu veux utiliser des entiers comme paramètres à tes fonctions ?

  3. #3
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Avant tout il faut définir un repère : par exemple le point (0,0) au centre de l'écran, l'axe des abscisses orienté vers la droite, les ordonnées vers le haut et pour l'échelle disons 200 pixels pour une unité.

    Ensuite il faut faire varier t sur une plage à déterminer. Pour sin(t) et cos(t) c'est facile il suffit de prendre t de 0 à 2*pi. Il faut aussi déterminer la fréquence des points que l'on va considérer. Plus on en prend mieux c'est mais plus c'est long. Disons que l'on va compter de 0.1 en 0.1 pour commencer (pas assez pour donner une coube mais on aura des points pour vérifier le principe).

    Reste à boucler sur t, calculer x=cos(t) et y=sin(t) puis calculer les coordonnées correspondantes à l'écran en fonction du repère choisi. Et ce n'est que là que l'on arrondit à un entier pour utiliser le plus proche pixel. (A la limite en openGL on peut tout configurer pour donner directement x et y mais c'est plus du jeux.)

    Pour afficher une "courbe" il est possible de relier les points, au lieux d'en placer des milliards.


    Sinon pour automatiser le choix du repère, de la plage à utiliser pour t et de l'incrément par contre ça peut être fun. Pour le repère il suffit de calculer tous les points et de prendre un repère où l'on va utiliser le maximum de l'écran tout en affichant tous les points. Le reste va être plus coton.

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bon, désolé, je sais que le genre de réponses que je viens de poster n'avance en rien, et le zèle dont fait preuve Sirvît me fait sentir coupable.
    Mais sérieusement, avec des entiers, t'iras pas loin, il y aura énormément de distorsions et de perte de précision. Donc, à moins que ce ne soit absolument nécessaire, je ne vois pas l'utilité d'utiliser des entiers. Au pire, tu peux faire tous les calculs sur des flottants, puis arrondir le resultat lors de l'affichage. En attendant plus d'explications ...

  5. #5
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par Modjo
    Bon, désolé, je sais que le genre de réponses que je viens de poster n'avance en rien, et le zèle dont fait preuve Sirvît me fait sentir coupable.
    Mais sérieusement, avec des entiers, t'iras pas loin, il y aura énormément de distorsions et de perte de précision. Donc, à moins que ce ne soit absolument nécessaire, je ne vois pas l'utilité d'utiliser des entiers. Au pire, tu peux faire tous les calculs sur des flottants, puis arrondir le resultat lors de l'affichage. En attendant plus d'explications ...
    Pas la peine de culpabiliser, je suis tout à fait d'accord. J'ai pas été très clair mais utiliser des flotants sauf à la fin pour placer le petit pixel me semblait évident. Enfin bref je ne vois pas du tout comment faire en gardant t entier. La prochaine fois je ferais plus attention aux non dits à dire.

  6. #6
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    Citation Envoyé par Sivrît
    Pas la peine de culpabiliser, je suis tout à fait d'accord. J'ai pas été très clair mais utiliser des float sauf à la fin pour placer le petit pixel me semblait évident. Enfin bref je ne vois pas du tout comment faire en gardant t entier. La prochaine fois je ferais plus attention aux non dits à dire.
    je vais commencer par un truc qui n'as aucun rapport je ne comprend pas la signification de l'expression non dits a dire.
    mais l'idée de faire x=x+0.01 est vraiment génial .ça change du i++
    je culpabilise moi aussi car je n'étais pas assez clair mais ça l'es surtout dans ma tête :
    1-mon but c'est d'apprendre des truc et astuce qui peuvent me service a mieux comprendre.
    2-je veux aussi savoir en gros si je veut faire de beaux simulation graphique que doit je apprendre quel bibliothèque du c est le mieux suis je vraiment obliger d'apprendre la programmation objet.
    3-maintenant que je sais ce que je connais x=x+0.01 comment choisir la mieux dégradation quel rapport avec la vitesse que je voix car j'ai pas envie a chaque fois d'essayer plusieurs chiffre par j'ai fais ça.
    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
    #include <stdio.h>
    #include <conio.h>
    #include <graphics.h>
    #include <dos.h>
    #include <time.h>
    #include <math.h>
    void startgraph()
    {
    int D,M;
    detectgraph(&D,&M);
    initgraph(&D,&M,"<a href="file://\\TURBOC\\BGI" target="_blank">\\TURBOC\\BGI</a>");
    }
    void main()
    {
    float t=0;
    int i,j,k,x=0;
    startgraph();
    cleardevice();
    while(x!=1)
    {
     cleardevice();
     setcolor(2);
     j=100*cos(t);
     i=100*sin(t);
     circle((i%639)+300,(j%479)+200,10);
     setfillstyle(CLOSE_DOT_FILL,6);
     floodfill((i%639)+300,(j%479)+200,2);
     t=t+0.01;
     if(kbhit())
      if(getch()==27)
       exit(0);
    }
    closegraph();
    }
    si je veux une vitesse a mon mouvement que je connais a l'avance, comment la mètre en pratique je cherche la une règle ou une formule qui répond a tout au debut quand j'avais parler d'entier je pensai au temps que je peut prélever avec ftime() par exemple.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Erf, si tu veux faire du rendu software, ce type de calculs pour tracer un cercle (ou un arc de cercle est horriblement désoptimisé).


    Va regarder ici pour avoir des algos qui sont un poil plus optimisé http://raphaello.univ-fcomte.fr/Ig/A...orithmique.htm

    Sinon, deja, constate que tu peux ne calculer qu'1/8 du cercle, le reste n'est que symetrie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Swing] Bouger un cercle en temps réel
    Par Fahelis dans le forum Débuter
    Réponses: 4
    Dernier message: 26/01/2014, 17h27
  2. [MFC] graphique temps réel
    Par _Thomas_ dans le forum MFC
    Réponses: 10
    Dernier message: 01/06/2004, 11h56
  3. Voir requête éxécuté en temps réel ?
    Par [DreaMs] dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/01/2004, 14h52
  4. cubes temps réel en ROLAP
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/07/2003, 16h36
  5. Durée d'un traitement temps réel
    Par Almex dans le forum C
    Réponses: 5
    Dernier message: 29/03/2003, 14h15

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