15 if ( XGalaxy.tmpentry )
16 tfree(XGalaxy.tmpentry);
17 XGalaxy.tmpentry=NULL;
18 XGalaxy.nentry = XGalaxy.lenentry = 0;
22 addEntry(Star *star) {
23 if ( XGalaxy.nentry >= XGalaxy.lenentry ) {
24 XGalaxy.lenentry = (XGalaxy.lenentry) ? XGalaxy.lenentry*2 : 16;
25 XGalaxy.entry = (Star*) ((XGalaxy.entry) ?
26 trealloc(XGalaxy.entry, sizeof(Star)*XGalaxy.lenentry)
28 tmalloc(sizeof(Star)*XGalaxy.lenentry));
29 XGalaxy.tmpentry = (Star*) ((XGalaxy.entry) ?
30 trealloc(XGalaxy.tmpentry, sizeof(Star)*XGalaxy.lenentry)
32 tmalloc(sizeof(Star)*XGalaxy.lenentry));
36 memcpy(XGalaxy.entry + XGalaxy.nentry, star, sizeof(Star));
38 memset(XGalaxy.entry + XGalaxy.nentry, 0, sizeof(Star));
44 deleteEntry(u_int32_t i) {
45 if ( i>=XGalaxy.nentry || XGalaxy.nentry==0)
48 if ( i!=XGalaxy.nentry-1)
49 memmove( XGalaxy.entry + i, XGalaxy.entry + i + 1, sizeof(Star) * ( XGalaxy.nentry-i-1) );
54 editEntry(u_int32_t i, int col, double val) {
55 if ( i>=XGalaxy.nentry )
58 case 1: XGalaxy.entry[i].mass = val; break;
59 case 2: XGalaxy.entry[i].c.x = val; break;
60 case 3: XGalaxy.entry[i].c.y = val; break;
61 case 4: XGalaxy.entry[i].c.z = val; break;
62 case 5: XGalaxy.entry[i].v.x = val; break;
63 case 6: XGalaxy.entry[i].v.y = val; break;
64 case 7: XGalaxy.entry[i].v.z = val; break;
74 memset(&galaxy,0,sizeof(galaxy));
76 galaxy.stars = XGalaxy.entry;
77 galaxy.nstars = XGalaxy.nentry;
79 EnergyImpulseGalaxy(&galaxy);
81 sprintf(buf,"%G",galaxy.kineticEnergy + galaxy.potentialEnergy);
82 gtk_label_set_text( GTK_LABEL(XGalaxy.dataEnergyField), buf);
84 sprintf(buf,"%G",galaxy.Impulse);
85 gtk_label_set_text( GTK_LABEL(XGalaxy.dataImpulseField), buf);
87 sprintf(buf,"%G",galaxy.Moment);
88 gtk_label_set_text( GTK_LABEL(XGalaxy.dataMomentField), buf);