basic triangulation works again, but now uses halfedges instead of the horrible brute-force triangle mesh