2021年3月17日 星期三

week04 熊貓大人到此一遊

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

#include <stdio.h>///因為要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)///左中右鍵,上下,x座標,y座標

{

    printf("button:%d state:%d x:%d y:%d\n",button,state,x,y);///印出值

}

int main(int argc,char**argv)///glut初始設定

{

    glutInit(&argc,argv);

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

    glutCreateWindow("WEEK04");///視窗

    glutDisplayFunc(display);///顯示的函示

    glutMouseFunc(Mouse);///Mouse函式

    glutMainLoop();///主要迴圈

}








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

int N=0,vx[3000],vy[3000];///放點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)///x座標,y座標

{

    vx[N]=x,vy[N]=y;///把vx vy值存起來

    N++;

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

}

int main(int argc,char**argv)///glut初始設定

{

    glutInit(&argc,argv);

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

    glutCreateWindow("WEEK04");///視窗

    glutDisplayFunc(display);///顯示的函示

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

    glutMainLoop();///主要迴圈

}







粗箭頭是拇指方向
細箭頭是旋轉方向

用右手安培定律理解





粗箭頭是拇指方向
細箭頭是旋轉方向

用右手安培定律理解













沒有留言:

張貼留言

距地表面160 Week11

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