Question 1:
	What happens for case 0011/1100 when two of the tetrahedron's vertex
	values are equal to the iso-value of interest and the other two are greater
	than the iso-value? Is this a bad thing? Hint: think of the kind of output
	generated in this case.

	In that case, two corners of the same triangle are equal to the tetrahedon
	vertices that are equal to the isovalue, so an edge of the triangle is
	exactly on the edge of the tetrahedon between the two equal vertices. In the
	interpolation function, this means a division by zero (v2 - v1 = 0), which
	is indeed a bad thing. A solution to this problem would build in an extra
	check for this kind of cases.

--------------------------------------------------------------------------------

Question 2:
	We render the iso-surface two-sided here, that is, without back-face culling.
	But if the iso-surface were to form a closed surface there would be no need
	for this, as the inside/back-side of the surface would never be visible. So
	for what situation does marching tetrahedra not produce a closed isosurface?

	For each triangle edge in a tetrahedon, there should be a triangle in one
	of the neighbouring tetrahedons that shares that edge. Because of the
	shapes of the tetrahedons, this means that the end points of the edge are
	the result of interpolation in both tetrahedons (which can be checked in
	code relatively easily). For example, this situation occurs in a dataset
	containing a cube or a sphere.

--------------------------------------------------------------------------------

Question 3:
	What optimizations to the marching tetrahedrons algorithm as described
	in Section 3 can you think of? Are there computations that are performed
	redundantly? Is there opportunity for parallel processing?

	- There's plenty of room for parallel processing, since all cells/tetrahedons
	  are checked independently of each other.
	- If we know (by specification) that an isosurface is closed, we can use the
	  property described in the answer to question 2 by creating an incremental
	  algorithm that uses already interpolated points in neigbouring tetrahedons
	  to create a triangle strip, instead of interpolating seperately in each
	  tetrahedon (note that there is less room for parallel processing in this case).
	- There is an algorithm, "regularised marching tetrahedra" which combines
	  marching tetrahedra and vertex clustering to generate iso-surfaces which
	  are topologically consistent with the data and contain a number of triangles
	  appropriate to the sampling resolution (typically 70% fewer than marching
	  tetrahedra). For this algorithm, see also:
	  http://mi.eng.cam.ac.uk/reports/svr-ftp/treece_tr333.pdf
