diff --git a/sim/exportHelper.cu b/sim/exportHelper.cu index e8aa0f7..aa04af6 100644 --- a/sim/exportHelper.cu +++ b/sim/exportHelper.cu @@ -56,8 +56,18 @@ void exportHelper::imageWriter(size_t idx, thread* thread) { auto* particles_copy = (Particle*)malloc(this->particles->size()); this->particles->sync_to(&particles_copy); + char data[32 * 5 + 1]; + data[32*5] = '\0'; + for (size_t i = 0; i < particle_count; i++) { - fprintf(f, "%f %f %f %f %f\n", particles_copy[i].position.x, particles_copy[i].position.y, particles_copy[i].velocity.x, particles_copy[i].velocity.y, particles_copy[i].mass); + memcpy(data, &particles_copy[i].position.x, sizeof(float)); + memcpy(&data[32], &particles_copy[i].position.y, sizeof(float)); + memcpy(&data[64], &particles_copy[i].velocity.x, sizeof(float)); + memcpy(&data[96], &particles_copy[i].velocity.y, sizeof(float)); + memcpy(&data[128], &particles_copy[i].mass, sizeof(float)); + + + fprintf(f, "%s\n", particles_copy[i].position.x, particles_copy[i].position.y, particles_copy[i].velocity.x, particles_copy[i].velocity.y, particles_copy[i].mass); } free(particles_copy); @@ -91,4 +101,4 @@ void exportHelper::epoch() { } } -} \ No newline at end of file +} diff --git a/viewer/main.cpp b/viewer/main.cpp index 3431cac..7be883e 100644 --- a/viewer/main.cpp +++ b/viewer/main.cpp @@ -104,6 +104,9 @@ int main() { } else { max_dim -= 0.1; } + + max_dim = std::abs(max_dim); + update_required = true; break; @@ -146,9 +149,6 @@ int main() { } if (update_required) { - SDL_FillRect(surf, nullptr, SDL_MapRGB(surf->format, 0, 0, 0)); - particles.clear(); - char filename[256]; sprintf(filename, "./output/%zu.dat", current_idx); @@ -158,7 +158,11 @@ int main() { printf("File not found: %s\n", filename); printf("End of simulation\n"); pause = true; + } else { + SDL_FillRect(surf, nullptr, SDL_MapRGB(surf->format, 0, 0, 0)); + + particles.clear(); char *cur_line = (char *)malloc(64 * sizeof(char)); size_t len = 64; @@ -168,11 +172,11 @@ int main() { break; } - float x, y, vx, vy, m; - - if (sscanf(cur_line, "%f %f %f %f %f", &x, &y, &vx, &vy, &m) != 5) { - break; - } + float x = *(float*)cur_line; + float y = *(float*)cur_line[32]; + float vx = *(float*)cur_line[64]; + float vy = *(float*)cur_line[96]; + float m = *(float*)cur_line[128]; particles.push_back(Particle{m, {x, y}, {vx, vy}}); } @@ -210,4 +214,4 @@ int main() { } return 0; -} \ No newline at end of file +}