多角形の細分化(一つの三角形を4つに分け、分けた
三角形を更に4つに分けるを繰り返す)で、4個の三角形の辺を
正しい方向で巡らないと穴が開いたりすんだよね。
こんなのどうやってテストすんだろ。

static bool Subdivision( RasterLogic &target, size_t deeps, const Util::ConstArray<inner_color_type&,3> &tri_colors, const Util::ConstArray<inner_vector_type&,3> &vertices )
{
 if( !deeps ) return /* 省略 */;
 const Util::ConstArray<inner_vector_type&,3>
  &half_vertices = Values
  (
   vertices[0] + ( vertices[1] - vertices[0] ) / 2,
   vertices[1] + ( vertices[2] - vertices[1] ) / 2,
   vertices[0] + ( vertices[2] - vertices[0] ) / 2
  );
 const Util::ConstArray<inner_color_type&,3>
  &half_colors = Values
  (
   Color( Values( tri_colors[0], tri_colors[1] ) ),
   Color( Values( tri_colors[1], tri_colors[2] ) ),
   Color( Values( tri_colors[2], tri_colors[0] ) )
  );
 bool internal = true;
 --deeps;
 // 隣接する三角の辺の向きを揃えないと小さい穴が開く
 internal &= Subdivision( target, deeps, Values( tri_colors[0], half_colors[0], half_colors[2] ), Values( vertices[0], half_vertices[0], half_vertices[2] ) );
 internal &= Subdivision( target, deeps, Values( half_colors[0], tri_colors[1], half_colors[1] ), Values( half_vertices[0], vertices[1], half_vertices[1] ) );
 internal &= Subdivision( target, deeps, Values( half_colors[2], half_colors[1], tri_colors[2] ), Values( half_vertices[2], half_vertices[1], vertices[2] ) );
 internal &= Subdivision( target, deeps, Values( half_colors[0], half_colors[2], half_colors[1] ), Values( half_vertices[0], half_vertices[2], half_vertices[1] ) );
 return internal;
}