void CSeebreezeView::drawSensorSurface(void) { #define MAX_SURFACE_X 3.25 #define MAX_SURFACE_Y 11.75 bool first_row = 1, last_row = 0; for (vector::iterator cur_row = g_sensor_data.begin(); cur_row != g_sensor_data.end(); cur_row += 10) { if (cur_row + 10 == g_sensor_data.end()) break; else if (cur_row + 20 == g_sensor_data.end()) last_row = 1; for (int i = 0; i < 9; i++) { glBegin(GL_QUADS); setSensorColor((cur_row + i)); glVertex3d(i > 0 ? (cur_row + i)->m_x : 0, first_row ? 0 : (cur_row + i)->m_y, 0); setSensorColor(cur_row + i + 1); glVertex3d(i < 8 ? (cur_row + i + 1)->m_x : MAX_SURFACE_X, first_row ? 0 : (cur_row + i + 1)->m_y, 0); setSensorColor(cur_row + i + 11); glVertex3d(i < 8 ? (cur_row + i + 11)->m_x : MAX_SURFACE_X, last_row ? MAX_SURFACE_Y : (cur_row + i + 11)->m_y, 0); setSensorColor(cur_row + i + 10); glVertex3d(i > 0 ? (cur_row + i + 10)->m_x : 0, last_row ? MAX_SURFACE_Y : (cur_row + i + 10)->m_y, 0); glEnd(); } first_row = 0; } #undef MAX_SURFACE_X #undef MAX_SURFACE_Y }