擦 大哥_week03_移動
下載上課檔案
data and win32 (網址:https://jsyeh.org/3dcg10/)
解壓縮 打開Transformation
怎麼開新檔案不用教了吧
複製week02-1茶壺程式碼
加入這幾行
#include <GL/glut.h>
void display()
{
glPushMatrix();
glTranslatef(0.5,0,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMainLoop();
week03-2
透過mouse移動
#include <GL/glut.h>
float X=0, Y=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(X,Y,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
X = (x-150)/150.0;
Y = -(y-150)/150.0; tips:減一半 除一半 加負號
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMouseFunc(mouse); ///mouse event
glutMainLoop();
}
git
week 03-3
老師示範 GitHub 的 Gist功能, 只要在 gist.github.com 裡面 + 新增一個不公開的小程式, 便能經由 embedded 的 HTML JavaScript的方法, 把程式用很漂亮的格式,放在你的 blog 裡。只是你要熟 HTML CSS 才能運作順利。
學生心得:巨難 完全看不懂
week 03-4
畫個兔子利用 mouse 來幫忙描點
在 void mouse() 裡面 if(state==GLUT_DOWN) 再印出你換算出來的座標, 便能幫你寫出程式碼
#include <GL/glut.h>
#include <stdio.h>
float X=0, Y=0;
void display()
{
///glutSolidTeapot(0.3);
glBegin(GL_POLYGON);
glVertex2f(0.007, -0.040);
glVertex2f(0.007, -0.040);
glVertex2f(0.007, -0.040);
glVertex2f(0.007, -0.040);
glVertex2f(0.007, -0.040);
glVertex2f(0.000, 0.007);
glVertex2f(0.000, 0.007);
glVertex2f(0.000, 0.007);
glVertex2f(0.000, 0.007);
glVertex2f(0.000, 0.007);
glVertex2f(-0.220, 0.147);
glVertex2f(-0.253, 0.067);
glVertex2f(-0.300, -0.033);
glVertex2f(-0.293, -0.100);
glVertex2f(-0.260, -0.187);
glVertex2f(-0.227, -0.227);
glVertex2f(-0.133, -0.227);
glVertex2f(0.200, -0.213);
glVertex2f(0.267, -0.167);
glVertex2f(0.293, -0.127);
glVertex2f(0.280, -0.007);
glVertex2f(0.220, 0.133);
glVertex2f(0.193, 0.167);
glVertex2f(0.133, 0.153);
glVertex2f(0.040, 0.180);
glVertex2f(-0.020, 0.193);
glVertex2f(-0.140, 0.160);
glVertex2f(-0.220, 0.160);
glEnd();
glBegin(GL_POLYGON);
glVertex2f(-0.207, 0.140);
glVertex2f(-0.233, 0.173);
glVertex2f(-0.267, 0.233);
glVertex2f(-0.300, 0.353);
glVertex2f(-0.320, 0.440);
glVertex2f(-0.320, 0.547);
glVertex2f(-0.300, 0.613);
glVertex2f(-0.233, 0.647);
glVertex2f(-0.207, 0.620);
glVertex2f(-0.187, 0.527);
glVertex2f(-0.180, 0.433);
glVertex2f(-0.180, 0.313);
glVertex2f(-0.153, 0.260);
glVertex2f(-0.147, 0.187);
glVertex2f(-0.133, 0.160);
glVertex2f(-0.107, 0.133);
glEnd();
glBegin(GL_POLYGON);
glVertex2f(0.093, 0.147);
glVertex2f(0.100, 0.187);
glVertex2f(0.120, 0.227);
glVertex2f(0.140, 0.373);
glVertex2f(0.140, 0.440);
glVertex2f(0.140, 0.520);
glVertex2f(0.147, 0.560);
glVertex2f(0.153, 0.640);
glVertex2f(0.193, 0.700);
glVertex2f(0.233, 0.700);
glVertex2f(0.247, 0.627);
glVertex2f(0.253, 0.573);
glVertex2f(0.253, 0.487);
glVertex2f(0.253, 0.400);
glVertex2f(0.240, 0.267);
glVertex2f(0.233, 0.167);
glVertex2f(0.220, 0.127);
glVertex2f(0.180, 0.053);
glEnd();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
float X = (x-150)/150.0;
float Y = -(y-150)/150.0;
if(state==GLUT_DOWN)
{
printf(" glVertex2f(%.3f, %.3f);\n", X, Y);
}
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
沒有留言:
張貼留言