void LinearBody::UpdateForces() { // BOOKKEEPING // Clean up from last force calculation and precalculate some helpful values f_clear(); // Precalculate some helpful values into obect-wide variables f_precalc(); // FORCE APPLICATORS fa_linearSprings(); fa_torques(); fa_drag(); fa_friction(); // SET ACCELERATION GIVEN NEW FORCES: a = f/m for (ALLNODES_i) { nodes[i].a.x = (nodes[i].ff.x + nodes[i].fd.x + nodes[i].ft.x + nodes[i].fs.x)/nodeMass; nodes[i].a.y = (nodes[i].ff.y + nodes[i].fd.y + nodes[i].ft.y + nodes[i].fs.y)/nodeMass; } }
main(int argc, char *argv[]) { FILE* out; FILE* pack; s_main_head mhead; s_pack_head phead; s_file_rec rec[20]; s_file_rec frec; t_dword len, cksum=0, i=0,j; f_clear(&mhead,sizeof(s_main_head)); f_clear(&phead,sizeof(s_pack_head)); f_clear(rec,sizeof(s_file_rec)*20); if (argc < 2) printf("eospack outfile [firm version]"); if (argc > 2) strcpy(mhead.version, argv[2]); else strcpy(mhead.version, "eos test firm1"); if ((out = fopen(argv[1], "wb")) == NULL) { printf("Cant't open file name %s\n", argv[1]); exit(-1); } if ((pack = fopen("tmp.pack", "wb+")) == NULL) { printf("Cant't open file name tmp.pack\n"); exit(-1); } printf("File to write: %s\n", argv[1]); printf("Writing pack\n"); cksum = 0; if (f_add(&cksum, &(rec[i]), pack, 8, "firm", "MAIN_FIRMWARE")) i++; if (f_add(&cksum, &(rec[i]), pack, 8, "ver", "FirmwareVersion")) i++; fseek(pack, 0, SEEK_SET); phead.tableOffset = sizeof(s_pack_head); phead.rec_num = i; phead.tableLenght = i*sizeof(s_file_rec); phead.packOffset = phead.tableLenght+phead.tableOffset; for (j=0; j<i; j++) { rec[j].Offset = phead.packLenght + phead.packOffset; phead.packLenght += rec[j].lenght; cksum += f_cksum(&(rec[j]), sizeof(s_file_rec)); } phead.cksum = CK(cksum + f_cksum(&phead,sizeof(s_pack_head))); printf("Writing main\n"); cksum=0; len=0; mhead.modelID= 0x80000236; mhead.cksum= 0x00000000; mhead.firstOffset = sizeof(s_main_head); fwrite(&mhead, sizeof(s_main_head), 1, out); len =f_add(&cksum, &frec, out, 0, "loader", "LOADER"); mhead.secondOffset = mhead.firstOffset + len; fwrite (&phead, sizeof(s_pack_head), 1, out); fwrite (rec, sizeof(s_file_rec), phead.rec_num, out); cksum += f_filecpy(&frec, out, pack); mhead.cksum = CK(cksum + f_cksum(&mhead, sizeof(s_main_head)) + f_cksum(&phead, sizeof(s_pack_head)) + f_cksum(rec, sizeof(s_file_rec)*phead.rec_num)); fseek(out, 0, SEEK_SET); fwrite(&mhead, sizeof(s_main_head), 1, out); fclose(pack); fclose(out); exit(0); }