#include <stdio.h>
#include "particlemap.h"

int main (int argc, char * const argv[]) {
	if (argc < 3) {
		printf("To few arguments.\n");
		return 0;
	}
   
	FILE* file = fopen(argv[1], "r");
	if (!file) {
		printf("File failed to open.\n");
		return 0;
	   }
   
	ParticleMap* map = CreateParticleMap(100000);
	BalancedParticleMap* bmap;
	float pos[3];
   
	while (fscanf(file, "%f %f %f\n", pos, pos + 1, pos + 2) == 3) {
		StoreParticle(map, pos);
	   }
	printf("Found %i particles\n", map->storedParticles);
   
   
	printf("Extracted particle data.  Creating balanced map...\n");
   
	bmap = BalanceParticleMap(map);
   
	const float tmp[3] = {0, 0, 0};
	float density = DensityEstimate(bmap, tmp, 100.0, 100);
	printf("density: %f\n", density);

	printf("Done.\n");
	SaveParticleMap(bmap, argv[2]);
	DestroyParticleMap(bmap);
   
	//Try loading it
	printf("Verifying...\n");
	bmap = LoadParticleMap(argv[2]);
	if (!bmap) {
		printf("Error when verifying file\n");
		DestroyParticleMap(bmap);
		return 1;
	}
   
	printf("Done.\n");
	DestroyParticleMap(bmap);
   
	return 0;
}
