from OpenGL.GLU import * from OpenGL.GL import * from OpenGL.GLUT import * ''' ==================================== 定義 init() 函式 設定背景顏色為白(R,G,B = 1) 設定坐標系為2D 範圍X:-10~10, y:-10~10 ==================================== ''' def init(): glClearColor(1.0, 1.0, 1.0, 1.0) gluOrtho2D(-10.0, 10.0, -10.0, 10.0) ''' ==================================== 定義 drawFunc() 函式 繪製圖形 ==================================== ''' def drawFunc(): glClear(GL_COLOR_BUFFER_BIT) #繪製初始三角形 顏色為紅 glColor3f(1, 0, 0) glBegin(GL_TRIANGLES) glVertex2f(0,0) glVertex2f(0,3) glVertex2f(3,0) glEnd() glPushMatrix( ) glPushMatrix( ) #繪製"縮小"後三角形 顏色為綠 glColor3f(0, 1, 0) glScalef(0.5,0.5,1) glBegin(GL_TRIANGLES) glVertex2f(0, 0) glVertex2f(0, 3) glVertex2f(3, 0) glEnd() glPopMatrix() #繪製"平移+縮小"後三角形 顏色為藍 glTranslated(3,3,0) glPushMatrix( ) glScalef(0.5,0.5,1) glColor3f(0, 0, 1) glBegin(GL_TRIANGLES) glVertex2f(0, 0) glVertex2f(0, 3) glVertex2f(3, 0) glEnd() glPopMatrix() #繪製"平移+旋轉+縮小"後三角形 顏色為黃 glTranslated(3,3,0) glRotatef(90,0,0,1) glScalef(0.5,0.5,1) glColor3f(1, 1 ,0) glBegin(GL_TRIANGLES) glVertex2f(0, 0) glVertex2f(0, 3) glVertex2f(3, 0) glEnd() glPopMatrix() #輔助線的繪製:x,y軸及基準線 顏色為黑 glColor3f(0, 0, 0) glBegin(GL_LINES) #X軸 glVertex2f(-10,0) glVertex2f(10,0) #y軸 glVertex2f(0,-10) glVertex2f(0,10) #原始三角形及縮小三角形的基準範圍 glVertex2f(3,3) glVertex2f(3,0) glVertex2f(3,3) glVertex2f(0,3) #平移+縮小三角形的基準範圍 glVertex2f(3,3) glVertex2f(3,6) glVertex2f(3,6) glVertex2f(6,6) glVertex2f(6,6) glVertex2f(6,3) glVertex2f(6,3) glVertex2f(3,3) #原始三角形及縮小三角形的基準範圍 glVertex2f(6,6) glVertex2f(6,9) glVertex2f(6,9) glVertex2f(9,9) glVertex2f(9,9) glVertex2f(9,6) glVertex2f(9,6) glVertex2f(6,6) glEnd() #繪製完成執行glFlush顯示在畫面上 glFlush() ''' ======================================= 定義完初始即畫圖函示 下方為執行opengl指令開始繪圖 ======================================= ''' glutInit() glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE) glutInitWindowSize(800, 800) glutCreateWindow(b"Sencond") glutDisplayFunc(drawFunc) init() glutMainLoop()