テストしにくいコードをテストする方法教えて下さい
■ このスレッドは過去ログ倉庫に格納されています
0038デフォルトの名無しさん
2012/04/16(月) 22:56:27.58三角形を更に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;
}
■ このスレッドは過去ログ倉庫に格納されています