Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Deimos

Pages: [1]
1
Graphique / Re : Capture vidéo d'une simulation C++/SFML
« le: Septembre 28, 2014, 03:11:51 pm »
C'est bien. Je vais tenter de trouver les messages envoyés à ce sujet.

Merci beaucoup.

2
Graphique / Re : Capture vidéo d'une simulation C++/SFML
« le: Septembre 28, 2014, 02:00:29 am »
Bonjour,

  Non, il n'est pas nécessaire que ce soit depuis le code. Est-ce que avconv serait l'un de ces outils externes?

  Je me doutais bien que cela était informatiquement possible (Qu'est-ce qu'ils ne peuvent pas faire? Telle est la question.) mais je ne savais pas si les gens avaient développé de tels outils. Tant mieux si c'est le cas.

Merci.

3
Graphique / Capture vidéo d'une simulation C++/SFML
« le: Septembre 27, 2014, 03:59:46 pm »
Bonjour,

  Je voudrais savoir s'il est possible de sauvegarder une simulation C++/SFML sous forme d'un fichier vidéo (avi, mpeg).

  J'ai lu que le programme MotionNET permet d'importer un fichier vidéo (https://gist.github.com/rcurtis/c78d5f33b9fe9f0ef66e) mais je n'ai pas vu d'exemple dans lequel on crée un fichier vidéo à partir d'un programme C++/SFML.

Merci

4
Graphique / Re : Affichage de variables
« le: Septembre 15, 2014, 12:57:25 am »
Effectivement, ça fonctionne très bien. Donc, je vais clore ce sujet. Il y a juste mon chronomètre qui n'est pas parfait mais ça peut quand même aller. Le plus important a été réalisé.

Donc, merci à tous ceux qui ont contribué.

5
Graphique / Re : Affichage de variables
« le: Septembre 12, 2014, 06:11:38 pm »
OK. De cette façon, c'est simple. Il suffit donc de télécharger un fichier de police de caractères et de le mettre dans le répertoire de mon exécutable. Je croyais que c'était plus compliqué que ça. Je vais essayer d'en télécharger quelques uns et de les charger.

Merci beaucoup.

6
Graphique / Re : Affichage de variables
« le: Septembre 10, 2014, 06:24:52 pm »
Bonjour,

1. Je vais tenter d'installer une police. Mais je ne suis pas sûr de comprendre. Lorsque tu écris :
tu la mets avec ton executable

  Est-ce que tu veux dire que je dois simplement installer le fichier téléchargé dans le répertoire /src de mon projet?

2. Mais l'installation d'une nouvelle police ne réglera pas le dernier problème que j'ai observé. Lorsqu'une autre colonne de chiffre apparaît, par exemple, les dizaines, le point décimal se tasse vers la droite au lieu de rester au même endroit. Dans un vrai chronomètre numérique, le point reste à la même position et le nouveau chiffre s'ajoute à la gauche.

  Les lignes de codes qui se rapportent à l'affichage du temps sont les suivantes :
  std::stringstream texte_t;
  texte_t.precision(1);
  texte_t << fixed << "Temps (s)     :  "<< temps << '\n';
  std::string out_t = texte_t.str();
  sf::String Texte11(out_t, Arial, 15);
  Si quelqu'un a une petite idée sur ça, je vais l'essayer.

Merci

7
Graphique / Re : Affichage de variables
« le: Septembre 09, 2014, 12:03:24 am »
Bonjour,

 Ça fonctionne! Donc, merci à vous deux.

 Il reste seulement un dernier petit détail à régler pour que la simulation soit parfaite. J'aimerais avoir une police de caractères comme Courrier New qui fait en sorte que les lettres et chiffres sont alignés verticalement comme c'est le cas dans une console ou dans gedit.

  Il y a un site (http://www.dafont.com) qui montre comment installer une police. Il parle aussi d'un répertoire .fonts. Moi, j'ai plutôt le répertoire .fontconfig et il contient huit fichiers avec des noms pas très explicites. Voici un exemple:

7ef2298fde41cc6eeb7af42e48b7d293-le32d4.cache-3

 Ici (http://sfml-dev.org/tutorials/1.6/graphics-fonts-fr.php), il montre comment charger une police avec la classe sf::Font.

Mais avant d'installer d'autres polices, j'aimerais savoir comment on fait pour connaître les polices (noms de fichiers) sous SFML qui sont déjà installées et que je pourrais choisir au lieu de la police Arial?


Merci

8
Graphique / Re : Affichage de variables
« le: Septembre 08, 2014, 09:24:02 pm »
Bonjour,

  J'ai essayé la solution proposée sur le site http://stackoverflow.com mais ça ne fonctionne pas. Le programme s'exécute et ne signale aucune erreur. Cependant, il n'affiche aucune des nouvelles variables ci-dessous. J'ai commencé par déclarer ces variables au début du programme.

   float aa = 5.23;
   float bb = 3.134;
   float cc = 3.0;

   std::stringstream ta;
   std::stringstream tb;
   std::stringstream tc;

   ta.precision(2);
   tb.precision(2);
   tc.precision(2);

   ta << fixed << aa;
   tb << fixed << bb;
   tc << fixed << cc;
 

  J'ai ensuite ajouté, dans la partie concernant l'affichage des fenêtres, quatre lignes de commandes :

 
  // Affichage des fenêtres et du contenu à l'intérieur.

    App.Draw(Rect1);
    App.Draw(Rect2);
    App.Draw(Rect3);
    sf::String Titre1("Donnees", Arial, 25);
    sf::String Texte11("Temps (s)     :", Arial, 15);

         std::stringstream tt;  // Les quatre lignes ajoutées.
         tt.precision(2);
         tt << fixed << aa << '\n' << bb << '\n' << cc << '\n';
         std::string out = tt.str();

    sf::String Texte12("Altitude (km) :", Arial, 15);
    sf::String Texte13("Vitesse (m/s) :", Arial, 15);
    sf::String Texte14("Acceleration (m/s^2) :", Arial, 15);
    Titre1.Move(50.f, 20.f);
    Texte11.Move(20.f, 80.f);
    Texte12.Move(20.f, 120.f);
    Texte13.Move(20.f, 160.f);
    Texte14.Move(20.f, 200.f);
    sf::String Titre2("Simulation graphique", Arial, 25);
    Titre2.Move(400.f, 20.f);
    sf::String Titre3("Messages", Arial, 25);
    Titre3.Move(350.f, 500.f);
    sf::String Texte30("La fusee vient de decoller.", Arial, 15);
    Texte30.Move(30.f, 550.f);
    sf::String Texte31("La fusee a atteint l'altitude de 1 km.", Arial, 15);
    Texte31.Move(30.f, 550.f);
    sf::String Texte32("Limite d'Armstrong atteinte (18,9 km).", Arial, 15);
    Texte32.Move(30.f, 550.f);
    sf::String Texte33("La fusee a atteint l'ionosphere (85 km).", Arial, 15);
    Texte33.Move(30.f, 550.f);

    App.Draw(Titre1);
    App.Draw(Texte11);
    App.Draw(Texte12);
    App.Draw(Texte13);
    App.Draw(Texte14);
    App.Draw(Titre2);
    App.Draw(Titre3);
 

Dans le programme original, j'affiche les lignes dans les fenêtres au moyen de la commande App.Draw(). Dans la solution proposée, il semble que l'on envoie le texte à imprimer dans la console et non dans la fenêtre SFML. C'est ce que je ne comprends pas.

Dans les deux lignes :

tt << fixed << aa << '\n' << bb << '\n' << cc << '\n';
std::string out = tt.str();

où sont les coordonnées comme c'est le cas par exemple dans
Texte31.Move(30.f, 550.f)
?

Merci


9
Graphique / Re : Affichage de variables
« le: Septembre 06, 2014, 01:51:29 am »
Merci beaucoup de ta réponse. Je vais travailler sur cette solution.

J'utilise la version SFLM 1.6 car je roule sur Debian Squeeze.


10
Graphique / [RESOLU] - Affichage de variables
« le: Septembre 05, 2014, 06:05:26 pm »
Bonjour,

  J'ai débuté l'apprentissage du langage C++ il n'y a pas très longtemps. Mon but est d'effectuer de petites simulations avec SFML 1.6.

  J'ai réussi a réaliser une partie du programme que je veux faire en lisant la documentation ici. Je suis maintenant confronté à une plus grande difficulté. Je n'ai pas vu d'exemple de ce genre.

  Je voudrais savoir comment afficher, en temps réel, la valeur des différentes variables (t, y, v et a) dans la fenêtre supérieure gauche. Par exemple, comment afficher le temps au dixième de seconde près et l'altitude correspondante avec une décimale?

 Merci

#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <math.h>
#include <SFML/Audio.hpp>
#include <SFML/Window.hpp>
#include <SFML/Window/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/Graphics/Font.hpp>
#include <SFML/Graphics/Glyph.hpp>
#include <SFML/Graphics/Rect.hpp>
#include <SFML/Graphics/Sprite.hpp>
#include <SFML/System/Resource.hpp>
#include <SFML/System/Vector2.hpp>
#include <SFML/System/Unicode.hpp>

using namespace std;

int main()
{

// Paramètres de la fenêtre principale.

   int XM=240;    // Largeur en pixels selon x de la fenêtre de données.
   int YM=480;    // Hauteur en pixels selon y de la fenêtre de données.

// Paramètres physiques.

   const int MF=3000000;      // Masse totale de la fusée [kg].
   const int DMAS=13500;      // Débit massique [kg/s].
   const int VEJECT=2500;     // Vitesse d'éjection des gaz [m/s].
   double MT;                 // Masse de la Terre [kg].
   MT=5.98*pow(10,24);
   const long RT=6378000;     // Rayon de la Terre [m].
   double G;
   G=6.67*pow(10,-11);        // Constante de gravitation universelle [m^3/s^2*kg].

// Compteurs.

   int i=0;                   // Compteur.
   int n;                     // Numéro de l'élément échantillonné.
   int N=10000;               // Nombre d'éléments dans les tableaux.

// Variables physiques.

   double temps;              // Temps actuel [s].
   double t[N];               // Tableau des temps [s].
   double delta_t[N];         // Tableau des différences de temps [s].
   double y[N];               // Altitude de la fusée [m].
   double v[N];               // Vitesse de la fusée [m/s].
   double a[N];               // Accélération de la fusée [m/s^2].

// Ouverture du fichier saturn.txt.

   ofstream outputFile;
   outputFile.open("saturn.txt");

// Création de la fenêtre.

   sf::RenderWindow App(sf::VideoMode(800, 600), "Lancement d'une fusee");
   sf::Font Arial;
   if (!Arial.LoadFromFile("arial.ttf"))
   return EXIT_FAILURE;

   sf::Shape Rect1 = sf::Shape::Rectangle(0, 0, XM, YM, sf::Color(25, 65, 30));
   sf::Shape Rect2 = sf::Shape::Rectangle(XM, 0, 800, YM, sf::Color(20, 25, 200));
   sf::Shape Rect3 = sf::Shape::Rectangle(0, YM, 800, 600, sf::Color(91, 24, 24));

// Initialisation des variables.

   sf::Clock Clock;
   n = 0;
   t[0] = 0;
   delta_t[0] = 0;
   y[0] = 0;
   v[0] = 0;
   a[0] = (DMAS*VEJECT)/(MF-DMAS*t[0])-((G*MT)/pow((RT+y[0]),2));

// Écriture du titre et des premières données dans le fichier saturn.txt.

   outputFile << "t[n]     y[n]     v[n]      a[n]"<< endl << endl;
   outputFile << std::fixed << setprecision (2) << t[0]<<"    "<< y[0]<<"    "<< v[0]<<"    "<<a[0] << endl;

// Début de la simulation.

   while (App.IsOpened())
   {
    sf::Event Event;
    while (App.GetEvent(Event))
    {
     if (Event.Type == sf::Event::Closed)
     App.Close();
    }
    App.Clear();

    temps = Clock.GetElapsedTime();   // Mesure du temps.

    if (i==99)   // Échantillonnage des données (1:100).
    {
     t[n] = temps;
     delta_t[n] = t[n] - t[n-1];
     y[n] = v[n-1]*delta_t[n-1] + y[n-1];
     v[n] = a[n-1]*delta_t[n-1] + v[n-1];
     a[n] = (DMAS*VEJECT)/(MF-DMAS*t[n])-((G*MT)/pow((RT+y[n]),2));
     cout << "t["<< std::fixed << setprecision (2) << n<<"]= "<<t[n]<<"  delta t= "<<delta_t[n]<< "   y= " << y[n] <<"   v= "<<v[n]<<"   a= "<<a[n]<< endl<<endl;
     outputFile << std::fixed << setprecision (2) << t[n]<<"    "<< y[n]<<"    "<< v[n]<<"    "<<a[n] << endl;
     n++;
     i = 0;
    }
    i++;

 // Affichage des fenêtres et du contenu à l'intérieur.

    App.Draw(Rect1);
    App.Draw(Rect2);
    App.Draw(Rect3);
    sf::String Titre1("Donnees", Arial, 25);
    sf::String Texte11("Temps (s)     :", Arial, 15);
    sf::String Texte12("Altitude (km) :", Arial, 15);
    sf::String Texte13("Vitesse (m/s) :", Arial, 15);
    sf::String Texte14("Acceleration (m/s^2) :", Arial, 15);
    Titre1.Move(50.f, 20.f);
    Texte11.Move(20.f, 80.f);
    Texte12.Move(20.f, 120.f);
    Texte13.Move(20.f, 160.f);
    Texte14.Move(20.f, 200.f);
    sf::String Titre2("Simulation graphique", Arial, 25);
    Titre2.Move(400.f, 20.f);
    sf::String Titre3("Messages", Arial, 25);
    Titre3.Move(350.f, 500.f);
    sf::String Texte30("La fusee vient de decoller.", Arial, 15);
    Texte30.Move(30.f, 550.f);
    sf::String Texte31("La fusee a atteint l'altitude de 1 km.", Arial, 15);
    Texte31.Move(30.f, 550.f);
    sf::String Texte32("Limite d'Armstrong atteinte (18,9 km).", Arial, 15);
    Texte32.Move(30.f, 550.f);
    sf::String Texte33("La fusee a atteint l'ionosphere (85 km).", Arial, 15);
    Texte33.Move(30.f, 550.f);

    App.Draw(Titre1);
    App.Draw(Texte11);
    App.Draw(Texte12);
    App.Draw(Texte13);
    App.Draw(Texte14);
    App.Draw(Titre2);
    App.Draw(Titre3);

 // Affichage des messages dans la fenêtre du bas.

    if (y[n-1] < 1000)
     App.Draw(Texte30);
    else
     if (y[n-1] < 18900)
      App.Draw(Texte31);
      else
       if (y[n-1] < 85000)
        App.Draw(Texte32);
    ;

 // Réafficher la fenêtre entière.

    App.Display();
}
        return 0;
}
 

Pages: [1]
anything