2021年3月17日 星期三

 

茶壺(查詢坐標)

#include <GL/glut.h>  ///使用glut外挂

#include <stdio.h>  ///todc:因爲要printf()

 

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); ///清空

    glutSolidTeapot(0.3);

    glutSwapBuffers(); ///交換兩倍的buffers

}

void mouse(int button,int state,int x,int y)

{ ///todc:,,右鍵 , x坐標 y坐標

    printf("button:%d  state:%d  x:%d  y:%d\n",button,state,x,y);

} ///TODC:印出這些值,觀察

int main(int argc,char ** argv)

{

    glutInit(&argc,argv); ///glut初始設定

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);///顯示模式

    glutCreateWindow("08160714");///開窗

    glutDisplayFunc(display);///等一下要顯示的函式

    glutMouseFunc(mouse);///TODC:我們注冊mouse函式

    glutMainLoop();///主要迴圈

}




 

畫圖

 



#include <GL/glut.h>///使用glut外挂

int N=0,vx[3000],vy[3000];

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);///清空

    glBegin(GL_LINE_LOOP);

    for(int i=0;i<N;i++){

        glVertex2f( (vx[i]-150)/150.0,-(vy[i]-150)/150.0  );

    }       ///減一半,再除一半               減一半,再除一半,加負號

    glEnd();

 

    glutSwapBuffers();交換兩倍的buffers

}

void motion(int x,int y)

{///mouse motion 再拖動它

    vx[N]=x; vx

    vy[N]=y; vy

    N++;

    display();///邊動mouse motion 邊畫display()

}

int main(int argc,char ** argv)

{

    glutInit(&argc,argv); ///glut初始設定

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);///顯示模式

    glutCreateWindow("08160714");///開窗

    glutDisplayFunc(display);///等一下要顯示的函式

    glutMotionFunc(mouse);///TODC:mouse motion在動

    glutMainLoop();///主要迴圈

}

 


 




 

三坐標

Translate   xyz坐標     大小不動,角度不懂

Rotate    旋轉角度(angle,x,y,z)     大小不動,坐標不動

Scale    縮放大小      坐標不動,角度不動




沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...