add doc and example of using triangulate_height_map; it's very similar to the example for surface_nets
-//! TODO: example using ChunkMap2
+//! An algorithm for generating triangle meshes from a heightmap stored in an `Array2`.
+//!
+//! The `triangulate_height_map` function is designed to be used with a `ChunkMap2`, such that each
+//! chunk will have its own mesh. In order to update the mesh for a chunk, you must copy not only
+//! the chunk, but also some adjacent points, into an array and pass it to `triangulate_height_map`.
+//!
+//! ```
+//! use building_blocks_core::prelude::*;
+//! use building_blocks_storage::prelude::*;
+//! use building_blocks_mesh::height_map::*;
+//!
+//! use std::collections::HashSet;
+//!
+//! let chunk_shape = PointN([16; 2]);
+//! let mut map = ChunkMap2::new(chunk_shape, 0.0, (), FastLz4 { level: 10 });
+//!
+//! // Mutate one or more of the chunks...
+//! let mutated_chunk_keys = [PointN([0; 2]), PointN([16; 2])];
+//!
+//! // For each mutated chunk, and any adjacent chunk, the mesh will need to be updated.
+//! let mut chunk_keys_to_update: HashSet<Point2i> = HashSet::new();
+//! let offsets = Point2i::moore_offsets();
+//! for chunk_key in mutated_chunk_keys.into_iter() {
+//! chunk_keys_to_update.insert(*chunk_key);
+//! for offset in offsets.iter() {
+//! chunk_keys_to_update.insert(*chunk_key + *offset * chunk_shape);
+//! }
+//! }
+//!
+//! // Now we generate mesh vertices for each chunk.
+//! let local_cache = LocalChunkCache::new();
+//! let reader = ChunkMapReader2::new(&map, &local_cache);
+//! for chunk_key in chunk_keys_to_update.into_iter() {
+//! // It's crucial that we pad the chunk so we have access to adjacent points during meshing.
+//! let padded_chunk_extent = padded_height_map_chunk_extent(
+//! &map.extent_for_chunk_at_key(&chunk_key)
+//! );
+//! let mut padded_chunk = Array2::fill(padded_chunk_extent, 0.0);
+//! copy_extent(&padded_chunk_extent, &reader, &mut padded_chunk);
+//!
+//! let mut hm_buffer = HeightMapMeshBuffer::default();
+//! triangulate_height_map(&padded_chunk, &padded_chunk_extent, &mut hm_buffer);
+//! // Do something with the mesh output...
+//! }
+//! ```
use super::PosNormMesh;
