|
INFO607
|
#include <stdlib.h>#include <math.h>#include <assert.h>#include <gtk/gtk.h>#include "points.h"#include "particules.h"#include "forces.h"Go to the source code of this file.
Classes | |
| struct | SContexte |
Macros | |
| #define | DT 0.01 |
| #define | DT_AFF 0.02 |
Typedefs | |
| typedef struct SContexte | Contexte |
Functions | |
| GtkWidget * | creerIHM (Contexte *pCtxt) |
| Charge l'image donnée et crée l'interface. | |
| gboolean | on_draw (GtkWidget *widget, GdkEventExpose *event, gpointer data) |
| Point | point2DrawingAreaPoint (Contexte *pCtxt, Point p) |
| double | length2DrawingAreaLength (Contexte *pCtxt, double l) |
| Point | drawingAreaPoint2Point (Contexte *pCtxt, Point p) |
| void | drawParticule (Contexte *pCtxt, cairo_t *cr, Particule p) |
| void | drawPoint (cairo_t *cr, double x, double y, double r) |
| gint | tic (gpointer data) |
| gint | ticAffichage (gpointer data) |
| gint | ticDistance (gpointer data) |
| void | calculDynamique (Contexte *pCtxt) |
| void | deplaceTout (Contexte *pCtxt) |
| void | deplaceParticule (Contexte *pCtxt, Particule *p) |
| void | fontaine (Contexte *pCtxt, double p, double x, double y, double vx, double vy, double m) |
| int | main (int argc, char *argv[]) |
| void | drawLine (cairo_t *cr, Point p, Point q) |
Le contexte contient les informations utiles de l'interface pour les algorithmes de géométrie algorithmique.
| void calculDynamique | ( | Contexte * | pCtxt | ) |
Calcul la dynamique de tous les points en appliquant les forces et met à jour la vitesse.
Definition at line 346 of file main.c.
References appliqueForce(), DT, SParticule::f, SContexte::forces, SParticule::m, NB_FORCES, SContexte::TabP, TabParticules_nb(), TabParticules_ref(), and SParticule::v.
Referenced by tic().
| GtkWidget * creerIHM | ( | Contexte * | pCtxt | ) |
Charge l'image donnée et crée l'interface.
Crée l'interface graphique en fonction du contexte pCtxt.
Definition at line 238 of file main.c.
References SContexte::drawing_area, DT, DT_AFF, SContexte::forces, gravite(), SContexte::height, SContexte::label_distance, SContexte::label_nb, on_draw(), tic(), ticAffichage(), ticDistance(), and SContexte::width.
Referenced by main().
Déplace une particule en fonction de sa vitesse. Devra s'occuper des collisions plus tard.
Definition at line 376 of file main.c.
References DT, SParticule::v, and SParticule::x.
Referenced by deplaceTout().
| void deplaceTout | ( | Contexte * | pCtxt | ) |
Déplace toutes les particules en fonction de leur vitesse.
Definition at line 383 of file main.c.
References deplaceParticule(), SContexte::TabP, TabParticules_nb(), TabParticules_ref(), TabParticules_supprime(), and SParticule::x.
Referenced by tic().
Fait la conversion coordonnées pixel de p vers coordonnées réelles.
| pCtxt | le contexte de l'IHM |
| p | les coordonnées pixel en entrée |
Definition at line 205 of file main.c.
References SContexte::height, SContexte::width, and SPoint::x.
Affiche un point p dans une zone de dessin cairo cr comme un disque. La masse influe sur la taille d'affichage de la particule.
| cr | le contexte CAIRO pour dessiner dans une zone de dessin. |
| p | un point dans la zone de dessin. |
Definition at line 213 of file main.c.
References drawPoint(), SParticule::m, point2DrawingAreaPoint(), SPoint::x, and SParticule::x.
Referenced by on_draw().
| void drawPoint | ( | cairo_t * | cr, |
| double | x, | ||
| double | y, | ||
| double | r | ||
| ) |
Fonction de base qui affiche un disque de centre (x,y) et de rayon r via cairo.
Definition at line 224 of file main.c.
Referenced by drawParticule().
| void fontaine | ( | Contexte * | pCtxt, |
| double | p, | ||
| double | x, | ||
| double | y, | ||
| double | vx, | ||
| double | vy, | ||
| double | m | ||
| ) |
Fontaine pour créer une particule à la position (x, y), avec la vitesse (vx, vy) et la masse m.
| p | probabilité (entre 0 et 1) qu'une particule soit effectivement créée. |
| x | la coordonnée x de la position où la particule est créée. |
| y | la coordonnée y de la position où la particule est créée. |
| vx | la composante x de la vitesse de la particule. |
| vy | la composante y de la vitesse de la particule. |
| m | la masse de la particule créée. |
Definition at line 302 of file main.c.
References initParticule(), SContexte::TabP, and TabParticules_ajoute().
Referenced by tic().
| double length2DrawingAreaLength | ( | Contexte * | pCtxt, |
| double | l | ||
| ) |
Fait la conversion longueur réelle l vers longueur en pixel dans la zone de dessin.
| pCtxt | le contexte de l'IHM |
| l | la longueur réelle |
Definition at line 200 of file main.c.
References SContexte::width.
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 144 of file main.c.
References creerIHM(), main(), SContexte::TabP, and TabParticules_init().
| gboolean on_draw | ( | GtkWidget * | widget, |
| GdkEventExpose * | event, | ||
| gpointer | data | ||
| ) |
c'est la réaction principale qui va redessiner tout.
Definition at line 163 of file main.c.
References drawParticule(), SContexte::TabP, TabParticules_get(), and TabParticules_nb().
Referenced by creerIHM().
Fait la conversion coordonnées réelles de p vers coordonnées de la zone de dessin.
| pCtxt | le contexte de l'IHM |
| p | le point en entrée |
Definition at line 192 of file main.c.
References SContexte::height, SContexte::width, and SPoint::x.
Referenced by drawParticule().
| gint tic | ( | gpointer | data | ) |
Fonction appelée régulièrement (tous les DT secondes) et qui s'occupe de (presque tout):
| data | correspond en fait au pointeur vers le Contexte. |
Definition at line 314 of file main.c.
References calculDynamique(), deplaceTout(), DT, fontaine(), and tic().
Referenced by creerIHM(), and tic().
| gint ticAffichage | ( | gpointer | data | ) |
Fonction appelée régulièrement (tous les DT_AFF secondes) et qui s'occupe de demander le réaffichage dela zone de dessin.
| data | correspond en fait au pointeur vers le Contexte. |
Definition at line 324 of file main.c.
References SContexte::drawing_area, DT_AFF, SContexte::label_nb, SContexte::TabP, TabParticules_nb(), and ticAffichage().
Referenced by creerIHM(), and ticAffichage().
| gint ticDistance | ( | gpointer | data | ) |
Fonction appelée régulièrement (tous les secondes) et qui affiche le nombre d'appels à la fonction distance par seconde.
| data | correspond en fait au pointeur vers le Contexte. |
Definition at line 335 of file main.c.
References getCompteurDistance(), SContexte::label_distance, resetCompteurDistance(), and ticDistance().
Referenced by creerIHM(), and ticDistance().