#點線面色彩
1.下載課本範例 https://jsyeh.org/3dcg10/ windows.zip及data.zip
2. 在下載資料夾,把windows.zip 解壓縮到資料夾,將data拉進去
3.執行shape.exe便可操作今天課本範例
4.mouse 右鍵,右邊可切換點線面
5..mouse 右鍵,在左邊可切換大的頂點,逐個色彩
6..mouse 左鍵,在右邊可按「綠色數字」上下調整
#要寫程式,試試看點線面色彩
1.moodle 下載freeglut
2. 安裝到桌面上
3.把桌面\freeglut\lib\libfreeglut.a複製成libglut32.a
4.CodeBlocks:file-New-project,選Glut專案目錄選桌面,專名取week02_glut_color_teapot
5.Glut要選桌面的freeglut
6.執行時 跳出上週程式
7.點開左邊的Sources的main.cpp 上周10行貼上
#漸層茶壺(設定色彩)
1.glColor3f(r,g,b)
2. 0,1,0綠色 1,0,0紅色
3.用小畫家滴管攝取色彩直
4.以阿尼亞為例,做出兩個不同顏色,不同大小的茶壺
#畫三角形
1.新增一個glut專案
2.將程式碼刪除 貼上茶壺程式碼
3.刪除上面程式碼 新增程式
4.glColor3f(r,g,d)選擇顏色和glVertex2f (x,y)角度 劃出三角形
#include <GL/glut.h>///使用GLUT外掛
void display()
{
glBegin(GL_POLYGON);
glColor3f(1,0,0); glVertex2f(0,1);
glColor3f(0,1,0); glVertex2f(1,-0.6);
glColor3f(0,0,1); glVertex2f(-1,-0.6);
glEnd();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///初始化 GLUT 140
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143
glutCreateWindow("GLUT Shapes");///145
glutDisplayFunc(display);///148 display函式
glutMainLoop();///174 迴圈
}
#用小畫家 幫我們找到「任意形狀」的頂點座標
1.開啟小畫家 圖片放上
2.小畫家座標裡,左上角是0,0 右下角是300,300(設圖片寬高400 400)
3.關於座標,OprnGl,預設是「正中間0.0」 右邊是+1 左邊是-1 上面+1 下面-1
4.把小畫家(x座標-中心點200)200.0,變成OpenGL座標 (減一半 除一半 )
5.y座標 -(y座標-中心點200)200.0, (減一半 除一半 在加負號)
6.新增一個新的GLUT專案
#畫出圓形
1.新增一個GLUT專案
2.將上一個程式碼貼上
3.利用sin cos(三角函數) 畫出圓形
#include <GL/glut.h>///使用GLUT外掛
#include <math.h>
void display()
{
glBegin(GL_POLYGON);
for(float a=0;a<=3.1415926*2; a+=0.1){
glVertex2f(cos(a),sin(a) );
}
glEnd();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///初始化 GLUT 140
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143
glutCreateWindow("GLUT Shapes");///145
glutDisplayFunc(display);///148 display函式
glutMainLoop();///174 迴圈
}
1.利用剛剛圓形程式 新增不同位子圓形座標
#include <GL/glut.h>///使用GLUT外掛
#include <math.h>
void myCircle(float cx,float cy,float r){
glBegin(GL_POLYGON);
for(float a=0;a<=3.1415926*2; a+=0.1){
glVertex2f(r*cos(a)+cx,r*sin(a)+cy);
}
glEnd();
}
void display()
{
glColor3f(1,1,1);myCircle(0,0,1);
glColor3f(0,0,0);myCircle(-0.5,+0.5,0.3);
glColor3f(0,0,0);myCircle(+0.5,+0.5,0.3);
glColor3f(0,0,0);myCircle(0,-0.3,0.7);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///初始化 GLUT 140
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143
glutCreateWindow("GLUT Shapes");///145
glutDisplayFunc(display);///148 display函式
glutMainLoop();///174 迴圈
}
沒有留言:
張貼留言