我正在为一个六角棋盘游戏制作GUI界面。这个游戏有121个六边形,在一个11x11的菱形中。我已经画出了一个11x11的正方形棋盘。如何将坐标转换为绘制菱形的六边形?以下是每一帧绘制棋盘的代码片段。
void draw_Board(HexBoard* h) {
glPushMatrix();
glTranslatef(1.5f, 1.5f, 0.0f);
for (auto iter = h->drawList.begin(); iter != h->drawList.end(); ++iter) {
pointRef t = *iter;
colorRef c;
float scale_factor = h->get_scale_factor();
if (t.player == 0) {
c.red = 1;
c.green = 1;
c.blue = 1;
}
else if (t.player == 1) {
c.red = 1;
c.green = 0;
c.blue = 0;
}
else if (t.player == 2) {
c.red = 0;
c.green = 0;
c.blue = 1;
}
int x_increment = 2;
int y_increment = 2;
glPushMatrix();
//cout << t.x_pos << " " << t.y_pos << endl;
//cout << c.red << " " << c.green << " " << c.blue << endl;
glTranslatef(t.x_pos * 2 , t.y_pos * 2, 0);
draw_Hex(c, scale_factor);
glPopMatrix();
}
glPopMatrix();
}
这是我的棋盘外观: http://imgur.com/criFeDM 目标形状如下: http://upload.wikimedia.org/wikipedia/commons/3/38/Hex-board-11x11-%282%29.jpg