1. 程式人生 > >opcv學習日誌三 幾何變換 1

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();

}