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

Algorithmes et structures de données Discussion :

emission particules dans un cône


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Par défaut emission particules dans un cône
    salut à tous
    voila je suis en train de faire un effet de flamme en c++ avec opengl .
    tous marche très bien si j'emet ces particules le long d'un axe, par exemple sur l'axe Z .
    mais j'aimerais bien les emettres dans n'importe quel direction.
    l'idéal serai que j'arrive a les emettre dans la même direction qu'un vecteur donné avec un angle d'ouverture donné.
    j'utilise rand() pour générer des nombres aléatoires.

    si qq1 sait comment faire ...
    merci

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 49
    Par défaut
    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
    Vecteur3D GenereVecteurAlea;
    {
      Vecteur3D Resulta =[0,0,0];
      // 2- générer trois valeur aléatoires
      réel Alpha = rand [entre -Pi et +Pi]; // un angle qui donne une orientation sur le plan (X,Y)
      réel Beta = rand [entre -Pi et +Pi]; // azimute comme pour définir la porté d'un canon
      réal Force = rand [t'as vraiment le choix]
     
      // 2- trouver les composantes du vecteur 
      Resulta[_x] = Force * sin(Apha);
      Resulta[_y] = Force * cos(Apha);
      Resulta[_z] = Force * sin(Beta);
     
      Retourner Resulta;
    }
    N! 1- ||Resulta|| = Force * racine(1+ sin(Beta)^2)
    2- tu peut jouer sur l'étendu de Apha et Beta pour donner une forme conique à ton système de particules

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 150
    Par défaut
    Citation Envoyé par chebreg
    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
    Vecteur3D GenereVecteurAlea;
    {
      Vecteur3D Resulta =[0,0,0];
      // 2- générer trois valeur aléatoires
      réel Alpha = rand [entre -Pi et +Pi]; // un angle qui donne une orientation sur le plan (X,Y)
      réel Beta = rand [entre -Pi et +Pi]; // azimute comme pour définir la porté d'un canon
      réal Force = rand [t'as vraiment le choix]
     
      // 2- trouver les composantes du vecteur 
      Resulta[_x] = Force * sin(Apha);
      Resulta[_y] = Force * cos(Apha);
      Resulta[_z] = Force * sin(Beta);
     
      Retourner Resulta;
    }
    N! 1- ||Resulta|| = Force * racine(1+ sin(Beta)^2)
    2- tu peut jouer sur l'étendu de Apha et Beta pour donner une forme conique à ton système de particules
    Si Mat 74 fait comme cela (avec beta entre 0 et phi, par exemple), il aura une forte concentration de particules au centre de son cône d'angle au sommet 2*phi, et une concentration faible à la périphérie. Cela peut être l'effet recherché bien sûr, mais si ce n'est pas le cas, s'il souhaite une équirépartition dans l'angle solide du cône, il ne faut pas se contenter d'une répartition uniforme sur beta.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Par défaut
    d'abord merci de m'avoir repondu

    chebreg : je suis parti de ton bou de code et je me suis demerder pour faire un truc qui ma l'air de marcher nickel

  5. #5
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    Sinon tu prends aléatoirement un angle (alpha) entre ton angle max et 0.
    puis tu procède ainsi :
    -> tu dois avoir un vecteur unitaire porté par l'axe de ton cone (ton axe z) (V2)
    -> puis un vecteur qui est dans un plan orthogonal au vecteur précédent (plan x, y) (tu utilise rand pour faire un vecteur aléatoire) (V1) de norme tan(alpha)
    -> tu donne à ta particule la vitesse suivante : V1 + V2
    Et voila equirépartition assurée...

    Si tu veux comprendre, fais le dessin d'un triangle rectangle, l'angle entre l'hypothénus et l'un des coté, c'est ton angle alpha, le vecteur V1 est le vecteur opposé à alpha, V2 est lé deuxième coté qui n'est ni V1, ni l'hypothénus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    V1
    ---------+
    \        |
      \      |
        \    |V2
          \  |
            \|
           alpha
    si tu te rapelle de la trigo de lycée c'est gagné !

Discussions similaires

  1. [Débutant] particules dans une boite
    Par Xyleil dans le forum MATLAB
    Réponses: 0
    Dernier message: 23/10/2009, 16h00
  2. Performance des systemes de particules dans les jeux commerciaux.
    Par jolgeirr dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 13/05/2008, 12h38
  3. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59

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