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

Mathématiques Discussion :

Cohabitation de fluides


Sujet :

Mathématiques

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 33
    Points
    33
    Par défaut Cohabitation de fluides
    Salut

    J'aimerais pouvoir représenter sur une matrice 2d une carte des températures.
    Je m'explique : je crée un nombre quelconque de sources de chaleur que je connais par leur position[x,y] et une température ( type 100° ).
    Pour le rendu ps de soucis plus c'est chaud plus c'est rouge, plus c'est froid plus c'est noir, je n'ai qu'a faire varier la composante de rouge dans une valeur RVB d'une couleur. Qui plus es, mon soft n'a pas besoin d'être beau^^

    N'empêche, première difficulté : ce point de chaleur "irradie", c'est a dire que la chaleur produite a tendance a decroitre au fur et a mesure qu'on s'eloigne de la source. j'ai essayer quelques formules mais étant une brêle en math j'arrive a rien d'a peu près crédible.

    Je dispose d'une constante nommée ThermalIsolation qui varie entre 0 et 1 et qui me sert a amplifier la zone d'irradiation du point.
    Je ne désespère pas je finirais sans doute par trouver quelque chose de probant pour UN point.

    Par contre, comme il y a beaucoup de sources de chaleurs et que beaucoup d'entre elles se toucheront ou presque, je pense qu'il faut que je trouve une façon d'implémenter un calcul d'irradiation de température qui puisse être influencée par tous les points environnants ET la température de base qui règne dans ma matrice. Et là, je doit admettre que je ne vois pas le début d'une idée sauf a faire un paté qui calculerait un genre de moyenne mais c'est moche alors que je subodore qu'il y a une formule simple, belle et optimisée qui sait faire ca.

    PS : J'ai vu le cours sur les fluides de Millie, mais le lien vers le zip est mort

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Une "irradiation" sera sans doute une exponentielle décroissante de révolution :

    Si le point central est (x0,y0), on aura :

    T(x,y) = T0 exp-ar

    r = sqrt(x2+y2)
    a une certaine constante


    Puis, si il y a plusieurs points de radiaition, en un pixel (x,y) tu auras la somme des N composantes > seuil.

    A toi de jouer avec les paramètres, savoir jusqu'à quelle distance une source influe (donc la valeur de a) et la valeur de ton seuil...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    tu auras la somme des N composantes > seuil.
    La somme ? 3 radiateurs à 60° et ton appartement devient une fournaise. J'avais plutôt dans l'idée qu'une source à 100° et une source à 0° donnaient au centre une température de 50°.

    Ça ressemble à un barycentre mais je ne sais pas comment mélanger distance, température et affaiblissement.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    La somme ? 3 radiateurs à 60° et ton appartement devient une fournaise. J'avais plutôt dans l'idée qu'une source à 100° et une source à 0° donnaient au centre une température de 50°.

    Ça ressemble à un barycentre mais je ne sais pas comment mélanger distance, température et affaiblissement.
    La somme des contributions en un point...

    Tout dépend ensuite de comment tu envisages la "radiation".

    Soit tes sources sont un max chacune, et tu ne peut pas dépasser la valeur du max au point origine de la source, soit si tu as une source 1 à 100, que tu y es (pile sur le point de la source), et que tu es à X mètres d'une source à 200, tu auras 100 + z%*200.... Ce qui semble plus logique...

    Imagine que ce soit des sources radioactives... Ce n'est pas parce que tu es sur une barre d'uranium que tu reçoit pas les radiations de la barre à côté...

    Si tu as 3 radiateurs, un à 50, un à 60, et un à 100 dans la même pièce, si tu es au dessus de celui à 50 il fera sans doute plus chaud que 50... Même si l'influence est inversement proportionnelle à la distance.

    Et c'est pour ça que je disais il vous faut déterminer la constante d'affaiblissement.. Et éventuellement un seul de participation (1/1000, ...), pour ne pas finir dans un problème du style "problème à N corps"
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Bon je me suis dépatouiller un peu comme j'ai pu pour obtenir le resultat suivant :
    Nom : TempVariator.jpg
Affichages : 65
Taille : 109,8 Ko

    ici il s'agit d'a peu pres 100 sources chaudes ( en rouge ) et 100 sources froides ( en bleu ). quand c'est noir, c qu'il fait 0. ( les positions et les températures sont aleatoires. )
    Meme si visuellement le résultat approche de ce que je voulais obtenir, ca ne me satisfait pas vraiment je trouve le calcule lourd ( mais au moins comme ca on voit de quoi je veux parler ).
    En terme de perf je ne parle meme pas du temps que prends le fait de dessiner sur un canvas chaque pixel apres avoir calculer sa couleur selon une température obtenue depuis une matrice.
    @souviron34 : en effet on est sur la même longueur d'ondes^^ j'utilise effectivement une constante de diminution ( nommée isolation ).
    Ma methode consiste a prendre les poitns de chaleur 1 par 1 et de mixer leur temperature avec celle deja présente en un point xy. Mais ca pose des problemes de coeficient j'ai l'impression, ET le dernier arrivé écrase les précédents. ainsi, si je traite les points froids en dernier on voit bien dans le resultat final qu'ils "dominent" les zones chaudes.
    Voila le procédé rapidos :
    1 : j'ai un tableau de sources chaudes et un tableau de sources froides ( qui chacune ne sont que 3 entiers : un x un y et une temperature )
    Pour chacune d'elle, je mets à jour une matrice des temperatures en parcourant l'espace autour du point xy et en pseudo calculant une température résultante de celle qui est deja la, et de celle apportée par ma source.

    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
     
    // avec un bete calcul qui me rappelle le college
    distance := GetDistance( Point( x, y ), p );
     
    // je ne m'interesse qu'aux points situés 
    // dans le rayon d'influence du point de chaleur
    if( distance < abs( isolation * Temp ))
    then
    begin
          // ca c la température "apportée" par la source
          // qui décroit au fur et a mesure qu'on s'eloigne
          tempModifier := round( Temp + distance );
     
           // la je "mixe" les températures ( du coup j'ai tout simplifier dans un
           // premier temps avant
           t := Temps[x,y] + tempModifier
     
           // la c'est juste pour des questions de depassement d'intervalles
           // mais je vois bien que c'est pas tout a fait logique
           // si max=100 une source a 90 a coté d'une source a 90 donnera 100
           // alors qu'une source a 20 a coté d'une autre source a 20 donneras
           // dans les 40, pas logique 
                if ( t > maxTemp )
                then t := maxTemp
                else if ( t < minTemp )
                then t := minTemp;
     
           // finalement j'enregistre
           Temps[x,y] := t;
    avec cette methode je résouds partiellement un probleme : les influences de multiples sources de chaleurs puisque si il y a plusieurs sources qui influent sur un mm point, elle seront toutes prises en compte. mais j'aime pas trop.
    je pense que je vais me pencher sur ta formule souviron : T(x,y) = T0 exp-ar

    il faut que j'arrive a diminuer le nombre de sources pour obtenir un résultat équivalent^^
    il faut que j'arrive a calculer la température de chaque pixel en une seule passe et non en 1 passe par source
    il faut que je trouve un moyen avec delphi de colorer chaque pixel sans que ca ne prenne les 4 ou 5 secondes que ca prends actuellement ( oui car a la fin je voudrais que les températures evoluent lentement et que l'image ai l'air de "pulser" pas gagné^^ )

    merci pour les pistes deja

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    J'avoue être un peu atterré par cette façon de chercher à représenter une réalité physique sans faire de physique...

    Si le but est de faire une belle carte de température à partir d'un nombre de données ponctuelles, je pense qu'une méthode d'interpolation du type "krigeage" (kriging in english) devrait convenir.

    Bonne continuation.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Moi j'avoue etre un peu attéré par ton post l'expert.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Citation Envoyé par niocco Voir le message
    Moi j'avoue etre un peu attéré par ton post l'expert.
    Merci pour le titre, mais je ne suis qu'un physicien.

    Navré si cela te heurte, mais il faut bien dire ce qui est.

    Si tu souhaites vraiment rechercher une solution physique, alors il faut regarder du côté des équations de transfert radiatif (qui émet, qui absorbe, comment, etc.), c'est très non-linéaire et global et hélas pas trivial à résoudre.

    Si tu souhaites juste bricoler quelque chose tel que, je te cite,
    visuellement le résultat approche de ce que je voulais obtenir
    une procédure standard d'interpolation est adaptée.

    Mais il ne faudra pas se tromper sur le sens à donner au produit final.

    Bonne continuation

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Ehouarn Voir le message
    Mais il ne faudra pas se tromper sur le sens à donner au produit final.

    Bonne continuation
    D'un autre côté, c'est parfaitement courant et largement utilisé dans tous les softs (y compris professionnels de météo, pour le dessin des cartes de température au sol, par exemple avec les stations, ou bien pour la représentation des champs calculés par les modèles numériques).

    Les résolutions de calcul/de mesures sont largement supérieures aux résolutions d'affichage, il y a donc des "lissages", "interpolations" et agréments de présentation.

    Maintenant, tu as raison si il s'agit de modéliser un phénomène physique

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Ehouarn Voir le message
    Bonjour,



    Merci pour le titre, mais je ne suis qu'un physicien.

    Navré si cela te heurte, mais il faut bien dire ce qui est.

    Si tu souhaites vraiment rechercher une solution physique, alors il faut regarder du côté des équations de transfert radiatif (qui émet, qui absorbe, comment, etc.), c'est très non-linéaire et global et hélas pas trivial à résoudre.

    Si tu souhaites juste bricoler quelque chose tel que, je te cite,

    une procédure standard d'interpolation est adaptée.

    Mais il ne faudra pas se tromper sur le sens à donner au produit final.

    Bonne continuation
    Ehouarn : Aucun soucis ça ne me heurte pas c'est juste un exemple de plus de cette nouvelle façon de communiquer typique des forums : "Je lis en diagonale, je vois que les gens ne savent tout ce que moi je sais, je balance un truc lapidaire et inadapté dont le but principal est de montrer que moi je sais".

    On est sur un forum d'informatique, pas de physique, comme la plupart des gens (à plus forte raison si je poste sur un forum) je n'entends rien au krigeage ni a la physique en général. J'ai fait des études de lettres ( ceci dit je n'ai jamais déboîté un physicien qui confondrait apacope et aphérèse. )

    Je précise donc que le but de mon soft est de faire un "jeu de la vie" dans lequel la température du milieu jouera un rôle, on est donc pas dans le cas d'un logiciel pro, mais il me faut quand même trouver un moyen de gérer cet aspect sans rien y connaitre : c'est à dire faire varier la température de façon à peu près crédible pour l'oeil d'un néophyte, et savoir la représenter sans pénaliser les performances sont mes 2 objectifs.
    J'ai été jeté un oeil au "krigeage" sur wikipedia, et il faut bien admettre que c'est juste imbitable. donc je n'irais pas chercher plus loin de ce coté.
    Je vais donc tacher de me rencarder sur les interpolations par exemple et les pistes données par souviron.

Discussions similaires

  1. [JVM]Faire cohabiter java 1.4 et 1.5
    Par MicroPuce dans le forum Général Java
    Réponses: 5
    Dernier message: 31/01/2005, 12h49
  2. Delphi 2005 et Delphi 7 cohabitent-ils ?
    Par vanquish dans le forum EDI
    Réponses: 5
    Dernier message: 15/12/2004, 22h50
  3. Scrolling fluide ?
    Par Seiya dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 06/07/2004, 21h15
  4. [CR6][CR8] cohabitation sur un même poste
    Par obi dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 27/11/2003, 21h24
  5. [Kylix] cohabitation
    Par jpaulin dans le forum EDI
    Réponses: 1
    Dernier message: 02/04/2003, 00h11

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