48                const float side_len, 
const unsigned int color)
 
   51    const std::array<VECTOR, 8> vertex =
 
   53        VGet(center_pos.x - side_len / 2, center_pos.y - side_len / 2,
 
   54             center_pos.z - side_len / 2),
 
   55        VGet(center_pos.x + side_len / 2, center_pos.y - side_len / 2,
 
   56             center_pos.z - side_len / 2),
 
   57        VGet(center_pos.x + side_len / 2, center_pos.y - side_len / 2,
 
   58             center_pos.z + side_len / 2),
 
   59        VGet(center_pos.x - side_len / 2, center_pos.y - side_len / 2,
 
   60             center_pos.z + side_len / 2),
 
   61        VGet(center_pos.x - side_len / 2, center_pos.y + side_len / 2,
 
   62             center_pos.z - side_len / 2),
 
   63        VGet(center_pos.x + side_len / 2, center_pos.y + side_len / 2,
 
   64             center_pos.z - side_len / 2),
 
   65        VGet(center_pos.x + side_len / 2, center_pos.y + side_len / 2,
 
   66             center_pos.z + side_len / 2),
 
   67        VGet(center_pos.x - side_len / 2, center_pos.y + side_len / 2,
 
   68             center_pos.z + side_len / 2)
 
   75    DrawTriangle3D(vertex[0], vertex[1], vertex[2], color, TRUE);
 
   76    DrawTriangle3D(vertex[2], vertex[3], vertex[0], color, TRUE);
 
   78    DrawTriangle3D(vertex[4], vertex[5], vertex[6], color, TRUE);
 
   79    DrawTriangle3D(vertex[6], vertex[7], vertex[4], color, TRUE);
 
   81    DrawTriangle3D(vertex[4], vertex[7], vertex[0], color, TRUE);
 
   82    DrawTriangle3D(vertex[0], vertex[7], vertex[3], color, TRUE);
 
   84    DrawTriangle3D(vertex[1], vertex[2], vertex[5], color, TRUE);
 
   85    DrawTriangle3D(vertex[5], vertex[6], vertex[2], color, TRUE);
 
   87    DrawTriangle3D(vertex[0], vertex[1], vertex[5], color, TRUE);
 
   88    DrawTriangle3D(vertex[5], vertex[4], vertex[0], color, TRUE);
 
   90    DrawTriangle3D(vertex[2], vertex[3], vertex[7], color, TRUE);
 
   91    DrawTriangle3D(vertex[7], vertex[6], vertex[2], color, TRUE);
 
 
  102void DrawHexagon(
const std::array<VECTOR, 6>& vertex, 
const unsigned int color)
 
  106    DrawTriangle3D(vertex[0], vertex[1], vertex[5], color, TRUE);
 
  107    DrawTriangle3D(vertex[1], vertex[2], vertex[4], color, TRUE);
 
  108    DrawTriangle3D(vertex[1], vertex[4], vertex[5], color, TRUE);
 
  109    DrawTriangle3D(vertex[2], vertex[3], vertex[4], color, TRUE);
 
 
  114                        const unsigned int color)
 
  121    const VECTOR center_to_top = VScale(VNorm(VCross(VSub(vertex[0], vertex[1]),
 
  122                                        VSub(vertex[0], vertex[2]))), height / 2.0f);
 
  125    const std::array<VECTOR, 6> vertex_top =
 
  127        VAdd(vertex[0], center_to_top),
 
  128        VAdd(vertex[1], center_to_top),
 
  129        VAdd(vertex[2], center_to_top),
 
  130        VAdd(vertex[3], center_to_top),
 
  131        VAdd(vertex[4], center_to_top),
 
  132        VAdd(vertex[5], center_to_top)
 
  136    const std::array<VECTOR, 6> vertex_bottom =
 
  138        VSub(vertex[0], center_to_top),
 
  139        VSub(vertex[1], center_to_top),
 
  140        VSub(vertex[2], center_to_top),
 
  141        VSub(vertex[3], center_to_top),
 
  142        VSub(vertex[4], center_to_top),
 
  143        VSub(vertex[5], center_to_top)
 
  150    for (
int i = 0; i < 6; i++)
 
  152        DrawTriangle3D(vertex_top[i % 6],
 
  153                       vertex_top[(i + 1) % 6],
 
  154                       vertex_bottom[i % 6],
 
  158        DrawTriangle3D(vertex_top[(i + 1) % 6],
 
  159                       vertex_bottom[i % 6],
 
  160                       vertex_bottom[(i + 1) % 6],