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

C Discussion :

Sinus table lookup


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut Sinus table lookup
    Bonjour à tous,


    Je chercherai à implementer une methode de calcul de sinus grâce à des tables lookup, des tables de résultats de sinus.
    Aprés avoir attentivement regardé votre page de codes sources, je n'ai pas trouvé de réponse toute faite.
    Je voudrais savoir comment faire une telle fonction par rapport à mes besoins.

    En vous remerciant,

    Nicolas.

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    faut dire, c'est tellement compliqué a faire

    tu définis la précision a laquelle tu veux avoir droit (un pas, la granularité...)
    tu met toutes tes valeurs dans un tableau (de double)
    pour faire propre tu peux enquiller ton tableau et une info sur le pas choisi dans une structure
    ensuite il te reste a construire une fonction qui te retourne le bon indice du tableau en fonction de la valeur passé.

    double getsinvalue(sin_table*,double val);

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nicolas_
    Je chercherai à implementer une methode de calcul de sinus grâce à des tables lookup, des tables de résultats de sinus.
    Qu'est-ce qui t'empêche d'utiliser sin() ?

    Sinon, si tu dois générer un tableau, je conseille d'écrire un générateur de code.
    Par exemple :
    génère :
    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
     
    /* sinus.c 
        generated by 'tabsin 0.1' 
    */
    #include "sinus.h"
     
    /* Sinus look-up table. 
        The resolution is 0.1 degree */
    double sinus[]=
    {
       0.0, /* 0.0 */
       ...,
       1.0, /* 90.0 */
       ...,
       0.0, /* 180.0 */
       ...,
       -1.0 /* 270.0 */
       ...,
       -0.0..., /* 359.9 */
    };
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #ifndef H_SINUS
    #define H_SINUS
     
    /* sinus.h */
     
    extern double sinus[3600];
     
    #endif
    à exécuter bien sûr sur ta machine de développement.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par défaut
    pour ma part je ferais plutôt une structure :
    struct TableElement
    {
    double x;
    double y;
    };

    ensuite je construirais un tableau de TableElement.
    pour les x de zero à Pi/2. l'ecart entre deux valeurs dépends de la precision voulue. l'interêt d'avoir une structure x,y c'est que tu peux faire varier l'ecart entre deux valeurs (reduire l'ecart quand la dérivé augmente). Par contre il est plus long de rechercher une valeur, sauf a construire un arbre binaire ou une organisation de données de ce genre.

    Pour un sinus inutile d'aller plus loin que Pi/2.

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Gandalf
    Pour un sinus inutile d'aller plus loin que Pi/2.
    A condition de se fendre d'un petit calcul, ce que voulait sans doute éviter le P.O. en utilisant une table et un index en degré (ou en fraction de degré)...

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par défaut
    Même avec un index en degré ou en fraction de degré, les propriétés de la fonction sinus restent les mêmes...

    ce n'est donc pas l'"unité" d'angle qui a ici une quelconque influence, ou alors au contraire si elle devient un entier, il n'y a alors plus de retenue à avoir les calculs préliminaires étant alors tout à fait abordables.

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Gandalf
    Même avec un index en degré ou en fraction de degré, les propriétés de la fonction sinus restent les mêmes...

    ce n'est donc pas l'"unité" d'angle qui a ici une quelconque influence, ou alors au contraire si elle devient un entier, il n'y a alors plus de retenue à avoir les calculs préliminaires étant alors tout à fait abordables.
    Je crois que tu n'as pas compris ma proposition.

    L'index représente la fraction d'unité k. Si k vaut 10, il y a 36 valeurs (0-35). Si il vaut 5, il y a 72 valeurs (0-71), si il vaut 1, il y a 360 valeurs (0-359), 0.1, 3600 (0-3599) etc. L'indice est toujours un nombre entier calculé à partir de la valeur demandée.

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

Discussions similaires

  1. [LabVIEW 8.6] Lookup table initialisation
    Par silversmith dans le forum LabVIEW
    Réponses: 3
    Dernier message: 21/04/2009, 09h18
  2. Problème de vitesse avec fonction lookup table
    Par Phelix2003 dans le forum MATLAB
    Réponses: 10
    Dernier message: 06/11/2008, 05h57
  3. Besoin d'infos sur fonction utilisant des lookup table
    Par Phelix2003 dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 24/10/2008, 11h07
  4. lookup table ou autre
    Par ABN84 dans le forum Simulink
    Réponses: 0
    Dernier message: 10/04/2008, 15h26
  5. Texture + LookUp Table + Shader + extensions
    Par exxos dans le forum OpenGL
    Réponses: 7
    Dernier message: 01/09/2005, 17h14

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