opcv學習日誌三 幾何變換 1
反轉
一般約定為“頂點以逆時針順序出現在螢幕上的面”為“正面”,另一個面即成為“反面”。生活中常見的物體表面,通常都可以用這樣的“正面”和“反面”,“合理的”被表現出來(請找一個比較透明的礦泉水瓶子,在正對你的一面沿逆時針畫一個圓,並標明畫的方向,然後將背面轉為正面,畫一個類似的圓,體會一下“正面”和“反面”。你會發現正對你的方向,瓶的外側是正面,而背對你的方向,瓶的內側才是正面。正對你的內側和背對你的外側則是反面。這樣一來,同樣屬於“瓶的外側”這個表面,但某些地方算是正面,某些地方卻算是反面了)。
glFrontFace(GL_CCW); // 設定CCW方向為“正面”,CCW即CounterClockWise,逆時針
glFrontFace(GL_CW); // 設定CW方向為“正面”,CW即ClockWise,順時針
下面是一個示例程式,請用它替換第一課中的myDisplay函式,並將glFrontFace(GL_CCW)修改為glFrontFace(GL_CW),並觀察結果的變化。
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPolygonMode(GL_FRONT, GL_FILL); // 設定正面為填充模式
glPolygonMode(GL_BACK, GL_LINE); // 設定反面為線形模式
glFrontFace(GL_CCW); // 設定逆時針方向為正面
glBegin(GL_POLYGON); // 按逆時針繪製一個正方形,在左下方
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.0f, -0.5f);
glVertex2f(0.0f, 0.0f);
glVertex2f(-0.5f, 0.0f);
glEnd();
glBegin(GL_POLYGON); // 按順時針繪製一個正方形,在右上方
glVertex2f(0.0f, 0.0f);
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, 0.5f);
glVertex2f(0.5f, 0.0f);
glEnd();
glFlush();
}