顯示具有 06160433_傅喬煒 標籤的文章。 顯示所有文章
顯示具有 06160433_傅喬煒 標籤的文章。 顯示所有文章

2019年10月3日 星期四

喬 的 無 形 壓 力 日 Week4

牛頓運動

左右滾















int ballX=300, ballY=300;
int vx=-2;
void setup() {
  size(700, 400);
}
void draw() {
  background(255);
  ellipse(ballX, ballY, 30, 30);
  ballX +=vx;

  if (ballX<0) vx =+2;
  if (ballX>700) vx =-2;
}

int ballX=300, ballY=300;
int vx=-2, vy=+2;
void setup() {
  size(700, 400);
}
void draw() {
  background(255);
  ellipse(ballX, ballY, 30, 30);
  ballX +=vx;
  ballY +=vy;
  if (ballX<0 +15) vx =+2;  ///原本是球的圓心在框框內
  if (ballX>700 -15) vx =-2;   ///+-15  球的邊緣在框框內
  if(ballY<0 +15) vy =+2;
  if(ballY>400 -15) vy =-2
}

紀錄路徑




































float ballX=300, ballY=300;
float vx=-2, vy=-10;
void setup() {
  size(600, 400);
}
void draw() {
  //background(255);
  ellipse(ballX, ballY, 30, 30);
  ballX +=vx;
  ballY +=vy; println(vy);
  vy += 0.98;
  if (ballX<0 +15)      vx= -vx*0.9;
  if (ballX>700 -15)    vx= -vx*0.9;
  if (ballY<0 +15)      vy= -vy*0.9;
  if (ballY>400 -15)    vy= -vy*0.9;
}

































float ballX=300, ballY=300;
float vx=-2, vy=-10;
void setup() {
  size(600, 400);
}
void draw() {
  //background(255);
  ellipse(ballX, ballY, 30, 30);
  ballX +=vx;
  ballY +=vy; println(vy);
  vy += 0.98;
  if (ballX<0 +15)      vx= -vx*0.9;
  if (ballX>700 -15)    vx= -vx*0.9;
  if (ballY<0 +15)      vy= -vy*0.9;
  if (ballY>400 -15){
    vy = -vy+0.9;
    vx = vx*0.9;
    ballY=400-15;
  }
  vy +=0.98;
}

馬力歐
































PImage imgMario;
float marioX=100 , marioY=100;
float marioVX=0 , marioVY=0;
void setup() {
  size(500, 500);
  imgMario = loadImage("mario.png");
}
void draw() {
  //background(255); ///背景
  rect(0, 200, 500,50); ///樓梯
  image(imgMario, marioX, marioY, 100, 100);
  marioX +=marioVX;
  marioY +=marioVY;
  if(marioY<=100) marioVY +=0.9;
  else marioY = 100; ///hold on floor
}
void keyPressed(){
  if(keyCode==RIGHT) marioX+=3;
  if(keyCode==LEFT)  marioX-=3;
  if(keyCode==UP){
    marioVY = -15;
  }
}

















PImage imgMario;
float marioX=100 , marioY=100;
float marioVX=0 , marioVY=0;
void setup() {
  size(500, 500);
  imgMario = loadImage("mario.png");
}
void draw() {
  background(255);
  rect(0, 200, 500,50);  ///樓梯

  image(imgMario, marioX, marioY, 100, 100);
  marioX +=marioVX;
  marioY +=marioVY;
  if(softBrake==1) marioVX *=0.9;
  if(marioY<=100) marioVY +=0.9;
  else marioY = 100; ///hold on floor
}
int softBrake=0;
void keyReleased(){
  if(keyCode==RIGHT) softBrake=1;
  if(keyCode==LEFT)  softBrake=1;
}
void keyPressed(){
  if(keyCode==RIGHT){
    marioVX=3; ///marioX+=3;
    softBrake=0;
  }else if(keyCode==LEFT){
    marioVX=-3; ///marioX-=3;
    softBrake=0;
  }else if(keyCode==UP){
    marioVY = -15;
  }
}

2019年9月26日 星期四

喬現在才來上課日常Week3

用鼠標繪圖















有小點點 (這密集的有點噁心 
















其他功能
















void draw() {
  fill(0,255,0);   ///填充顏色
  stroke(255,0,0);  ///線的顏色
  if(mousePressed){   ///if 按下滑鼠
  line(mouseX, mouseY, pmouseX, pmouseY);  ///開始繪圖
  }

}
















void draw() {
  if(key=='1') stroke(255,0,0);  ///按下鍵盤 改變顏色
  if(key=='2') stroke(255,255,0);
  if(key=='3') stroke(0,255,0);
  if(mousePressed){
  line(mouseX, mouseY, pmouseX, pmouseY);
  }

}
































void setup() {
  size(600, 400);
  fill(255, 0, 0);
  rect(0, 0, 50, 50);
  fill(255, 255, 0);
  rect(0, 50, 50, 50);
  fill(0, 255, 0);
  rect(0, 100, 50, 50);
  fill(0, 255, 255);
  rect(0, 150, 50, 50);
  fill(0, 0, 255);
  rect(0, 200, 50, 50);
  line(25, 250, 25-7, 400);
  line(25, 250, 25+7, 400);
}
void draw() {
  if (mouseX<50 && mousePressed) {
    if (mouseY<50) stroke(255, 0, 0);
    else if (mouseY<100) stroke(255, 255, 0);
    else if (mouseY<150) stroke(0, 255, 0);
    else if (mouseY<200) stroke(0, 255, 255);
    else if (mouseY<250) stroke(0, 0, 255);
    else {
      strokeWeight((mouseY-250)/10);
    }
  }
}
void mouseDragged() {
  if (mouseX>50 && mousePressed) {
    line(mouseX, mouseY, pmouseX, pmouseY);
  }
}
void keyPressed() {
  if (key=='1') stroke(255, 0, 0);
  if (keyCode==UP) line(300, 200, 300, 0);
  if (keyCode==DOWN) line(300, 200, 300, 400);
  if (keyCode==LEFT) line(300, 200, 0, 200);
  if (keyCode==RIGHT) line(300, 200, 600, 200);
}

2019年6月10日 星期一

喬巴的補交作業

計時器Timer



#include <GL/glut.h> #include <mmsystem.h>///Now (1) #include <stdio.h>///printf() void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot( 0.3 ); glutSwapBuffers(); } void timer(int t)///NOW timer!!!! { glutTimerFunc(1000, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘 printf("timer(t) 的 t是 %d\n", t);///順便印一下現在的t是多少 準確地告訴你放第幾次屁 PlaySoundA("fart.wav", NULL, SND_ASYNC);///Now (2) ///NOW timer!!!! } ➜去wav檔案下載尋找檔案 int main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(500,500);///變大了 glutCreateWindow("week 14 timer"); glutDisplayFunc(display); glutTimerFunc(3000, timer, 0);///NOW timer!!!! glutMainLoop(); }


內插公式

























#include <GL/glut.h> #include <mmsystem.h>///Now (1) float angle=0; float nowX=0;///NOW2 void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); ///glRotatef(angle, 0,0,1); glTranslatef(nowX, 0, 0);///NOW2 glutSolidTeapot( 0.3 ); glPopMatrix(); glutSwapBuffers(); } void timer(int t)///NOW timer!!!! { /// 1000 ms = 1 sec, 30 ms = 1/33 sec , 33 fps glutTimerFunc(30, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘 float alpha = (t%33) / 33.0;///NOW2 alpha 內插 nowX = alpha* 1 + (1-alpha)* -1 ;///NOW2 angle += 1; glutPostRedisplay();///系統重繪畫面 } int main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(500,500);///變大了 glutCreateWindow("week 14 timer"); glutDisplayFunc(display); glutTimerFunc(1000, timer, 0);///NOW timer!!!! glutMainLoop(); }


動畫



2019年5月31日 星期五

喬巴的期末作業爆炸(絕非日常)

攝影機與運鏡

先下載 http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/



























#include <GL/glut.h> #include "glm.h" ///for glmReadOBJ(), glmDraw(), glmUnitized().... GLMmodel * pmodel=NULL;///NOW void drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/al.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); drawmodel(); glutSwapBuffers(); } int main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(500,500); glutCreateWindow("week15"); glutDisplayFunc(display); glutMainLoop(); }


















#include <GL/glut.h> #include "glm.h" ///for glmReadOBJ(), glmDraw(), glmUnitized().... GLMmodel * pmodel=NULL;///NOW void drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/al.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); drawmodel(); glutSwapBuffers(); } int main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(500,500); glutCreateWindow("week15"); glutDisplayFunc(display); GLfloat light_pos[] = { 0.0, 0.0, -1.0, 0.0 };///NOW2 打光的位置 glEnable(GL_DEPTH_TEST);///NOW2 有立體的功能 glEnable(GL_LIGHT0); ///NOW2 打光後變立體的彩色的 glEnable(GL_LIGHTING); ///NOW2 打光後變立體的彩色的 glLightfv(GL_LIGHT0, GL_POSITION, light_pos);///NOW2 打光的位置 glutMainLoop(); }










➜他在轉動






#include <GL/glut.h> #include "glm.h" ///for glmReadOBJ(), glmDraw(), glmUnitized().... GLMmodel * pmodel=NULL;///NOW void drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/al.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); drawmodel(); glutSwapBuffers(); } #include <math.h> float eyeX=1, eyeY=0, eyeZ=0; void timer(int t)///NOW3 { glutTimerFunc(33, timer, t+1);///NOW3 float angle=t/180.0*3.1415926;///NOW3 算出一個角度 eyeX=cos(angle); eyeZ=sin(angle);///NOW3 glMatrixMode(GL_MODELVIEW);///NOW3 glLoadIdentity();///NOW3 gluLookAt(eyeX, eyeY, eyeZ, ///NOW3 LookAt的 eye 0.0, 0.8, 0.0, ///NOW3 LookAt的 center 0, 1, 0);///NOW3 LookAt的 up glutPostRedisplay();///NOW3 Re-display } int main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(500,500); glutCreateWindow("week15"); glutDisplayFunc(display); glutTimerFunc(33, timer, 0);///NOW3 GLfloat light_pos[] = { 0.0, 0.0, -1.0, 0.0 };///NOW2 打光的位置 glEnable(GL_DEPTH_TEST);///NOW2 有立體的功能 glEnable(GL_LIGHT0); ///NOW2 打光後變立體的彩色的 glEnable(GL_LIGHTING); ///NOW2 打光後變立體的彩色的 glLightfv(GL_LIGHT0, GL_POSITION, light_pos);///NOW2 打光的位置 glutMainLoop(); }











➜他也在轉動







#include <GL/glut.h> #include "glm.h" ///for glmReadOBJ(), glmDraw(), glmUnitized().... GLMmodel * pmodel=NULL;///NOW void drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/al.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); drawmodel(); glutSwapBuffers(); } #include <math.h> float eyeX=1, eyeY=0, eyeZ=0; void timer(int t)///NOW3 { glutTimerFunc(33, timer, t+1);///NOW3 float angle=t/180.0*3.1415926;///NOW3 算出一個角度 eyeX=cos(angle); eyeZ=sin(angle);///NOW3 glMatrixMode(GL_PROJECTION);///NOW4 glLoadIdentity();///NOW4 glOrtho(-1,+1, -1,+1, -10,+10);///NOW4 可以看到範圍比較大的投影法 glMatrixMode(GL_MODELVIEW);///NOW3 glLoadIdentity();///NOW3 gluLookAt(eyeX, eyeY, eyeZ, ///NOW3 LookAt的 eye 0.0, 0.6, 0.0, ///NOW3 LookAt的 center 0, 1, 0);///NOW3 LookAt的 up glutPostRedisplay();///NOW3 Re-display } int main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(500,500); glutCreateWindow("week15"); glutDisplayFunc(display); glutTimerFunc(33, timer, 0);///NOW3 GLfloat light_pos[] = { 0.0, 0.0, 1.0, 0.0 };///NOW2 打光的位置 glEnable(GL_DEPTH_TEST);///NOW2 有立體的功能 glEnable(GL_LIGHT0); ///NOW2 打光後變立體的彩色的 glEnable(GL_LIGHTING); ///NOW2 打光後變立體的彩色的 glLightfv(GL_LIGHT0, GL_POSITION, light_pos);///NOW2 打光的位置 glutMainLoop(); }