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

Moteurs 3D Discussion :

une question de syntaxe


Sujet :

Moteurs 3D

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut une question de syntaxe
    Bonjour à tous,

    Je bosse toujours sur mon modeste moteur 3D, et je suis en train de plancher sur l'implementation des metaballs.
    En gros, je suis la methode de base qui consiste a mettre en place un champ scalaire, a calculer en chaque point de ce champ la contribution de chaque metaball, et a tracer une isosurface sur une valeur seuil a choisir.

    Pour generer l'isosurface, il semble que la solution standard soit l'utilisation de l'algorithme dit de "Marching Cubes" dont j'ai trouvé un tuto/code source sympa au lien suivant:
    http://local.wasp.uwa.edu.au/~pbourk...ry/polygonise/

    Cependant, il y a deux points que je ne coprends pas dans cette implementation:

    a la ligne "
    if (grid.val[0] < isolevel) cubeindex |= 1;
    "
    (et lignes suivantes)
    A quoi correspond le symbole "|="? Si j'ai bien compris, il s'agit d'attribuer un 1 au bit de poids faible si la valeur seuil est dépassée, et 0 sinon, mais pourquoi c'est écrit comme ca? (moi j'aurais betement mis +=)

    deuxieme point:
    un peu plus loin, il est ecrit:
    if (edgeTable[cubeindex] & 1)

    a quoi correspond le symbole & dans ce contexte?

    merci pour votre aide!

    a bientot

    Z.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut

    | est un OU binaire
    cubeindex |= 1 correspond effectivement a setter le bit de poid faible de cubeindex a 1, donc a forcer la non parité du nombre. Ce nest pas equivalent a += 1 (mais le resultat sera le meme dans le cas de nombres pairs)

    & est un ET binaire
    edgeTable[cubeindex] & 1 est un masque sur le bit de poid faible, ca permet de connaitre la parité du nombre. C est exactement equivalent a edgeTable[cubeindex] % 2 mais en bien plus optimisé
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    ok, compris,

    merci!

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

Discussions similaires

  1. Une question de syntaxe
    Par gambi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/05/2012, 23h38
  2. Besoin d'explication sur une question de syntaxe
    Par Cynthia. dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/10/2010, 17h22
  3. question sur syntaxe d'une requete
    Par sparis dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/09/2005, 11h58
  4. [C linux makefile] question de syntaxe
    Par Ultros dans le forum Systèmes de compilation
    Réponses: 7
    Dernier message: 09/04/2004, 07h58
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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