2001-11-12 Stephane Popinet <s.popinet@niwa.cri.nz> 

	* gts: release of version 0.5.1.
	
	* tools/gts2oogl.c: Chaining of isolines segments. New default
 	"jet" colormap.

2001-10-08  Stephane Popinet  <s.popinet@niwa.cri.nz>
	
	* gts: Release of version 0.5.0.

	* src/Makefile.am: Now builds shared libraries (thanks to
 	Volodymyr Babin), rebuilds gts.def before making a distribution,
 	includes a gts-config script (a la glib) and gts.m4 autoconf
 	macros.

	* tools/srf2oogl.c: Renamed to gts2oogl.c.

2001-09-17  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/point.c (gts_point_is_inside_surface): New function.

	* src/triangle.c (gts_triangle_is_stabbed): New function.

	* src/bbtree.c (gts_bb_tree_stabbed, gts_bbox_is_stabbed): New
 	functions.

2001-09-03  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* tools/srf2oogl.c (write_isolines): Function to draw isolines
 	(option -i or --isolines).

2001-08-31  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* examples/transform.c: New "revert" option to turn surface inside out.

2001-08-30  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/face.c (gts_face_link): New link() method.

	* src/boolean.c (gts_surface_inter_new): Links back new faces to
 	original faces using the link() method of GtsFaceClass.

	* examples/set.c (main): Use new gts_bb_tree_surface function.

	* src/bbtree.c (gts_bb_tree_is_overlapping): New function.
	(gts_bb_tree_surface): New function.
        (gts_bb_tree_point_distance): Now takes the absolute value of the
 	distance function, which allows for signed distances.
	
2001-08-03  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* tools/srf2oogl.c: New option for coloring vertices according to
 	z coordinate.

2001-08-02  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* examples/transform.c: scaling operations for x, y, z axis.

2001-07-03  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* examples/delaunay.c (shuffle_array): Randomizes the order in
 	which vertices are inserted. Greatly increase speed in
 	pathological cases (i.e. cartesian meshes).

2001-06-20  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* test/delaunay/Makefile.am: Added "two segments" test.

2001-06-19  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/Makefile.am: added graph.c, pgraph.c, partition.c source files.

2001-06-07  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/eheap.c: Can now be initialized with a NULL GtsKeyFunc.
	(gts_eheap_randomized): New function.

2001-06-06  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/fifo.c (gts_fifo_top): New function.

	* src/heap.c (gts_heap_top): New function.

2001-05-31  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/eheap.c (gts_eheap_remove): Now returns the removed element.

2001-05-30  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/face.c (gts_face_foreach_neighbor): New function.

	* examples/traverse.c: New example.

	* src/surface.c (gts_surface_traverse_new): New functions.

2001-05-29  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/surface.c (gts_surface_write_oogl_boundary): New function.

2001-05-24  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* examples/delaunay.c (delaunay_remove_holes): New option to
 	remove holes in the triangulation.

	* src/surface.c (gts_surface_foreach_face_remove): New function.

	* src/boolean.c (next_compatible_face): Fixed bug in the case of
 	an open surface (with boundary edges).

2001-05-22  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/surface.c (gts_surface_write_oogl): Now output colors as
 	specified by the color() method of objects.

	* src/object.c (object_class_init): Added color() virtual method.

	* tools/srf2oogl.c: <unistd.h> is included only if it's there.

	* src/matrix.c (gts_matrix_assign): New function.

2001-05-21  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* examples/delaunay.c: Checks for duplicate vertices.

2001-05-18  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/cdt.c (gts_delaunay_add_constraint): Now checks that a real
 	GtsConstraint is passed as argument.

2001-05-15  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/gts.h: Change read() method of GtsObject.

	* src/object.c (gts_object_class_from_name): New function.

2001-05-14  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/surface.c (gts_range_update): corrected bug in case of a nul
 	variance.

	* src/gts.h: Added flags field to GtkObject and modified
 	GTS_OBJECT_DESTROYABLE etc...

2001-05-11  Stephane Popinet  <s.popinet@niwa.cri.nz>

	* src/triangle.c (gts_triangle_circumcircle_center): now takes the
 	point class as an extra argument.

	* src/eheap.c (gts_eheap_key): new function.

	* src/surface.c (surface_class_init): add_face and remove_face are
 	now methods.

	* src/fifo.c: FIFO queue implementation.

2001-02-04  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/oocs.c (cluster_index): Now uses triplet of integers.

2001-02-03  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* examples/oocs.c: New example for out-of-core simplification via
 	vertex clustering.

2001-02-02  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/oocs.c: Implementation of the out-of-core simplification
 	algorithm of Lindstrom and Turk.

	* src/bbtree.c (gts_bbox_surface): New function.

2001-02-01  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/boolean.c (gts_surface_inter_new): Fixed bug for reset of
 	reserved pointer in edges.

	* test/boolean/set.c (main): Added test for correctness of
 	vertices, edges and faces of surfaces after operation.

	* src/segment.c (gts_segment_is_ok): Fixed bug in testing for
 	duplicate.

	* src/bbtree.c 
	(gts_bbox_set): New function.
	(gts_bbox_new): Added check for class.

	* test/boolean: Added extra test by T. Binder.

2001-01-31  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* gts: Release of version 0.4.0.

2001-01-04  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/template.c: Template for the creation of new object classes.

2001-01-03  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/rounding.h: Added untested support for Win32 and non-intel 
	systems.

2000-12-22  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/eheap.c (gts_eheap_insert_with_key): New function.

2000-11-22  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* examples/transform.c: New example.

	* src/matrix.c (gts_matrix_product): New function.

2000-11-09  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/named.c: Named vertex, edge, face classes.

2000-11-07  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/point.c (gts_segment_triangle_intersection): New parameter to 
	take into account the boundary of the triangle.

2000-11-03  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/surface.c 
	(gts_surface_foreach_vertex)
	(gts_surface_foreach_edge)
	(gts_surface_foreach_face):
	Removal of faces during one of these will now cause an assertion
	failure.
	
2000-11-02  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/boolean.c: New file containing functions for boolean operations 
	between surfaces.

2000-11-01  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* examples/delaunay.c: New example.

	* src/cdt.c: New implementation.

2000-09-11  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* tools/gtscompare.c: New utility program.

	* src/surface.c (gts_surface_distance): New function.

	* src/bbtree.c (gts_bb_tree_point_closest_bboxes, 
	gts_bb_tree_point_distance, 
	gts_bb_tree_point_closest, 
	gts_bb_tree_triangle_distance, 
	gts_bb_tree_segment_distance, 
	gts_bb_tree_surface_distance, 
	gts_bb_tree_surface_boundary_distance): New functions.

2000-07-31  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/progress.c (gts_psurface_new, gts_psurface_add_edge, 
	gts_psurface_remove_edge): New functions for progressive surfaces.

2000-07-27  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_resize): New function.

	* src/ (gts_point_resize, gts_segment_resize): Now checks if the newly
 	allocated space is located at the same place as the old one.

2000-07-26  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_read): Added a line argument returning 
	the line number in case of error.

2000-07-25  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/gts.h (gts_triangle_points): Added (t) everywhere.

2000-07-24  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* gts: Release of version 0.3.0
	
	* tools/srf2oogl.c: "boundary" option now outputs boundary edges 
	instead of coloring boundary triangles.

	* src/vopt.c: Changed relative weighting of boundary and volume costs.

2000-07-22  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/predicates.c, src/predicates_init.c: Floating point rounding and
 	precision behaviour control now uses symbolic constants.

2000-07-20  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/iso.c: Implementation of isosurfaces of a function f(x, y, z).

2000-07-18  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_coarsen, gts_surface_refine): 
	New stopping interface.

2000-07-17  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* examples/coarsen.c: New options for using memoryless simplification.

	* src/vopt.c: Implementation of Lindstrom and Turk memoryless 
	simplification functions.

	* src/surface.c (gts_surface_read): Error checking in case indices are
 	equal to zero.

2000-07-05  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/matrix.c (gts_vector_print): New function.

2000-07-04  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/point.c 
	(gts_point_is_boundary): New function.
	(gts_point_neighbors): New function.

2000-07-02  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/eheap.c (gts_eheap_remove_top): Now takes an extra @key argument.

	* src/surface.c 
	(gts_segment_collapse_is_valid): New function.
	(gts_surface_coarsen): Now stops if the key of the segment to be 
	collapsed is equal to G_MAXDOUBLE.

	* src/triangle.c (gts_triangle_use_segments): New function.

2000-06-04  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/segment.c (gts_segment_is_boundary): Now works with a NULL 
	argument for surface.

	* tools/srf2oogl.c: New `boundary' option to color triangles which 
	have a boundary edge.

2000-06-02  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/matrix.c: Matrix operations have been moved to this new file.
	(gts_matrix_new): The order of the arguments has been transposed.

	* src/: All the source files have been modified to use only GSList 
	and not GList. The memory saving is about 20% for a triangulated 
	surface.

2000-06-01  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/point.c (gts_point_triangles): Now takes a list as an extra
	argument.

2000-03-07  Stephane Popinet  <popinet@lmm.jussieu.fr>

	* src/point.c (gts_segment_triangle_intersection): Removed the
	part which was specific to the surface intersection stuff. This
	function can now be used on its own as it should.

	* src/: Changed data identifier to private in _GtsPoint,
	_GtsSegment, _GtsTriangle.

	* src/surface.c (gts_surface_foreach_triangle): Now takes a
	GtsFunc as a callback function as it should have from the start.

2000-03-03  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_triangle_number): New function.

	* src/point.c (gts_point_is_in_triangle): Now returns GTS_IN,
	GTS_ON, GTS_OUT.

	* src/segment.c (gts_segments_are_intersecting): Now returns
	GTS_IN, GTS_ON, GTS_OUT.

2000-02-18  Stephane Popinet <popinet@lmm.jussieu.fr>

	* examples/coarsen.c: New example.

	* tools/srf2oogl.c: Now takes an --incomp option for coloring
	incompatible triangles.

	* src/surface.c (gts_surface_coarsen): Fixed a bug when the
	collapse went down to two similar triangles (back to back).

	* src/surface.c (gts_surface_read): Don't stupidly use hash tables
	anymore use simple arrays instead (simpler, faster, better).

2000-02-17  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/point.c (gts_points_merge): Rewritten. Now destroys merged
	points and returns the updated list of points. Much faster.

	* src/surface.c (gts_surface_coarsen): Bug fix in the case of
	input surface with degenerate or duplicate edges.

	* src/segment.c (gts_segment_is_duplicate): Bug fix for the case
	when the input segment is degenerate.

	* examples/cleanup.c: New example.

	* src/triangle.c (gts_triangle_is_duplicate): New function.

2000-02-14  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_write): Does not use hash tables
	anymore. Simpler, more memory efficient and slightly faster.

	* src/surface.c (gts_surface_coarsen): New type GtsStopFunc is now 
	used as a stopping criterium. Two functions
	gts_coarsen_number_stop() and gts_coarsen_length_stop() are
	provided.

	* src/surface.c (gts_surface_refine): New type GtsStopFunc is now 
	used as a stopping criterium. Two functions
	gts_refine_number_stop() and gts_refine_length_stop() are
	provided.

2000-02-12  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_volume): New function.

	* examples/volume.c: New example.

	* src/surface.c (gts_surface_stats): New fields
	n_boundary_segments, n_non_manifold_segments.

	* src/surface.c: New functions for topological properties:
	manifold, orientable, closed.

2000-02-10  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_remove_triangle): New function.

2000-02-09  Stephane Popinet <popinet@lmm.jussieu.fr>

	* examples/: A new examples directory has been created.

2000-02-03  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/point.c (gts_segment_triangle_intersection): Now uses robust 
	orientation tests. Obviously a great improvement for the
	robustness of the set operations on surfaces.

2000-02-02  Stephane Popinet <popinet@lmm.jussieu.fr>

	* gts: Release of version 0.2.0.

	* src/stripe.c (gts_surface_strip): implementation of a simple
	but efficient triangle strips generation algorithm.

2000-01-28  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/triangle.c: New functions gts_triangle_neighbor_number() and 
	gts_triangle_neighbors().

	* src/surface.c (gts_surface_coarsen): Now uses extended binary
	heaps (speedup is at least a factor of two). The interface is more 
	generic and allows for user-defined cost, stopping criterium and
	midpoint functions.	

	* src/eheap.c: An implementation of extended binary heaps. Allows
	0(log n) removal of elements.

	* src/segment.c (gts_segment_midpoint): is now a function.

2000-01-20  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_refine): User-defined sorting and
	stopping functions can now be specified.

2000-01-19  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/surface.c (gts_surface_refine): Now uses binary heaps. Speed
	up of at least 2 compared with the version using binary trees plus 
	simpler and more robust.

	* src/heap.c: Implementation of binary heaps.

2000-01-17  Stephane Popinet <popinet@lmm.jussieu.fr>

	* gts: Release of version 0.1.0.
	
	* src/surface.c: The gts_surfaces_intersection and union no longer 
	assume that the data field of the triangles is NULL but still
	assume that the data field of the edges of the triangles is
	NULL. The methods have been checked against memory leaks.
	
	* src/triangle.c: The destroy method now takes one extra argument
	giving the possibility to "descend" the hierarchy and destroy any
	unused segment or endpoints recursively.
	
	* src/segment.c: The destroy method now takes one extra argument
	giving the possibility to "descend" the hierarchy and destroy any
	unused endpoint.
	
	* src/cdt.c: The data field of the constraints is not supposed to
	contain NULL initially anymore. Some cosmetic changes.

	* src/bbtree.c: The leaves of the bounding box tree can now be
	freed as well. The methods have been checked against memory leaks.

2000-01-11  Stephane Popinet <popinet@lmm.jussieu.fr>

	* doc/: Updated documentation.

2000-01-06  Stephane Popinet <popinet@lmm.jussieu.fr>

	* src/kdtree.c (gts_kdtree_range): Fixed a
	bug. gts_point_is_in_rectangle was 2D not 3D.

	* src/bbtree.c (gts_bb_tree_destroy): Creation of this function
	which was obviously missing. Needs testing.	

1999-12-06  Stephane Popinet <popinet@lmm.jussieu.fr>

	*  Creation of the initial CVS repository.

