Skip to content
Snippets Groups Projects
main.cpp 2.94 KiB
Newer Older

#include "params.h"
#include "graphics.h"
#include "../cmath3d/TriangleMesh.h"

//create some shared objects...
ParamsClass params;
void ParamsSetup(void);
//
ActiveMesh mesh;


int main(void)
{
	ParamsSetup();

	//load mesh
	//char filename[]="../sample_input/samplecell.stl";
	//char filename[]="../sample_input/torus_100_30.stl";
	char filename[]="../sample_input/sphere.stl";
	char VTKfile[]="../sample_input/ID1_t001_nucleusSurf2148.vtk"; //surface
	//char VTKfile[]="../sample_input/ID1_t001_nucleus2038.vtk"; //volumetric

	//int retval=mesh.ImportSTL(filename);
	int retval=mesh.ImportVTK(VTKfile);
	//int retval=mesh.ImportVTK_Volumetric(VTKfile);
	{
		std::cout << "some error reading file: " << retval << "\n";
		return(1);
	}

	retval=mesh.ImportVTK_Ftree("../sample_input/ID1_t001_fTree01.vtk");
	retval=mesh.ImportVTK_Ftree("../sample_input/ID1_t001_fTree02.vtk");
	if (retval) 
	{
		std::cout << "some error reading f-tree: " << retval << "\n";
		return(2);
	}

	std::cout << "mesh: " << filename << "\n";
	std::cout << "vertices  #: " << mesh.Pos.size() << "\n";
	std::cout << "triangles #: " << mesh.ID.size()/3 << "\n";
	std::cout << "normals   #: " << mesh.norm.size() << "\n";

	mesh.CenterMesh(params.sceneCentre);

	//work with mesh
	float surf_coeff[10];
	mesh.CalcQuadricSurface_Taubin(10,surf_coeff);
	i3d::Image3d<i3d::GRAY16> mask;
	mask.SetOffset(i3d::Offset(0.0,0.0,0.0));
	//mask.SetResolution(i3d::Resolution(20.0,20.0,20.0)); //for torus
	//mask.MakeRoom(300,300,300);
	mask.SetResolution(i3d::Resolution(2.0,2.0,2.0));    //for sample cell
	mask.MakeRoom(600,600,600);
	mask.GetVoxelData()=0;
	mesh.RenderMask(mask);
	mask.SaveImage("mesh.ics");

	initializeGL();
	loopGL();
	closeGL();

	return(0);
}


void ParamsSetup(void)
{
	//set up the environment
   params.sceneOffset=Vector3d<float>(0.f);
   params.sceneSize=Vector3d<float>(15.f,15.f,15.f); //for torus
   //params.sceneSize=Vector3d<float>(150.f,150.f,150.f); //for sample cell

	params.sceneCentre=params.sceneSize;
	params.sceneCentre/=2.0f;
	params.sceneCentre+=params.sceneOffset;

	params.sceneOuterBorder=Vector3d<float>(2.f);
	params.sceneBorderColour.r=0.5f;
	params.sceneBorderColour.g=0.5f;
	params.sceneBorderColour.b=0.5f;

	params.inputCellsFilename="cells/cell%d.txt";
	params.numberOfAgents=2;

	params.friendshipDuration=10.f;
	params.maxCellSpeed=0.20f;

	//adapted for cell cycle length of 24 hours
	params.cellCycleLength=14.5*60; //[min]

	params.currTime=0.f; //all three are in units of minutes
	params.incrTime=0.1f;
	params.stopTime=5000.f;

	params.imgSizeX=500; //pixels
	params.imgSizeY=500;
	params.imgResX=1.0f; //pixels per micrometer
	params.imgResY=1.0f;

	params.imgOutlineFilename="Outline%05d.tif";
	params.imgPhantomFilename="Phantom%05d.tif";
	params.imgMaskFilename="Mask%05d.tif";
	params.imgFluoFilename="FluoImg%05d.tif";
	params.imgPhCFilename="PhCImg%05d.tif";
	params.tracksFilename="tracks.txt";
}