日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

互动媒体技术A1作业报告

發布時間:2024/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 互动媒体技术A1作业报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

A1實驗技術報告

  • function文件
    • 1. function ellipse_drawStdFace_0128(x, y, rate)
    • 2. function line_ao_0128(x0, y0, xstep, ystep, num)
    • 3. function line_flower_0128(x, y, angle, radius1, radius2, velocity)
    • 4. function line_noise_0128(x, y, lineArray, lineNum, controlPointNum)
    • 5. function line_apple_0128(r, n, x, y)
    • 6. function line_BW_0128(y, XN, YN, XL, YL)
    • 7. function line_heart_0128()
    • 8. function frameRate_line_0128()
    • 9 class Pendulun
  • rainbow文件
    • 1. rainbow_line_0128_1(x, y)
    • 2. function rainbow_ellipse_0128(x, y)
  • Processing
    • 海綿寶寶
  • 粒子效果分享

function文件

1. function ellipse_drawStdFace_0128(x, y, rate)

效果:笑臉,并根據鼠標位置放大縮小。
擴展:對ellipse進行了擴展,畫出來了笑臉

function ellipse_drawStdFace_0128(x, y, rate) {let StdSize = 1.5*rate;print("face");// face//ellipse(0, 0, StdSize, StdSize);ellipse(0+x, 0+y, StdSize, StdSize);var ESize = -0.2*StdSize;// LEyefill(255);//ellipse(-0.2*StdSize,-0.1*StdSize,ESize,ESize);ellipse(x-0.2*StdSize, y-0.1*StdSize, ESize, ESize);fill(0);//ellipse(-0.2*StdSize,-0.1*StdSize,0.4*ESize,0.4*ESize);ellipse(x-0.2*StdSize, y-0.1*StdSize, 0.4*ESize, 0.4*ESize);// REyefill(255);//ellipse(0.2*StdSize,-0.1*StdSize,ESize,ESize);ellipse(x+0.2*StdSize, y-0.1*StdSize, ESize, ESize);fill(0);//ellipse(0.2*StdSize, -0.1*StdSize, 0.4*ESize, 0.4*ESize);ellipse(x+0.2*StdSize, y-0.1*StdSize, 0.4*ESize, 0.4*ESize);// Mouthvar MWd = 0.3*StdSize;var MHt = 0.2*StdSize;push();fill(255, 0, 0);//ellipse(0, MHt, MWd, MHt);ellipse(x, y+ MHt, MWd, MHt);pop(); }

2. function line_ao_0128(x0, y0, xstep, ystep, num)

效果:笑臉和凹凸線,并根據鼠標位置拉伸(放大)收縮(縮小)
擴展:對ellipse,line進行了擴展,畫出來了笑臉,并放在凹凸線上。

function line_ao_0128(x0, y0, xstep, ystep, num) {for (i=0; i<num; i++){ line(x0+2*xstep*i, y0, x0+xstep+2*xstep*i, y0);line(x0+xstep+2*xstep*i, y0, x0+xstep+2*xstep*i, y0+ystep);line(x0+xstep+2*xstep*i, y0+ystep, x0+2*xstep+2*xstep*i, y0+ystep);ellipse_drawStdFace_0128(float(x0+3.5*xstep*i), y0+ystep+10, xstep);//畫笑臉line(x0+2*xstep+2*xstep*i, y0+ystep, x0+2*xstep+2*xstep*i, y0);} }

3. function line_flower_0128(x, y, angle, radius1, radius2, velocity)

效果:一個可以根據鼠標位置調節變化快慢的花團形狀。
擴展:貝塞爾曲線和ellipse的應用

function line_flower_0128(x, y, angle, radius1, radius2, velocity) {/*let num; //let angle; //petal anglelet radius1; //petal sizelet radius2; //petal sizelet velocity //petal speed*/stroke(255, 255, 255); //設置線條顏色為紫色let num=int(360/angle); //num must be int//fill(0, 0, 0, 50);//rect(0, 0, width, height);translate(x, y);for (i=0; i<num; i++){let x1 = sin(radians(i * angle + velocity)) * radius1; let y1 = cos(radians(i * angle + velocity)) * radius1;let x2 = sin(radians(i * angle - velocity)) * radius2; let y2 = cos(radians(i * angle - velocity)) * radius2;noFill(); bezier(x1, y1, x1+x2, y1+y2, x2+x1, y2+y1, x2, y2); bezier(x1, y1, x1-x2, y1-y2, x2-x1, y2-y1, x2, y2); fill(51, 51, 51); ellipse(x1+x2, y1+y2, 6, 6);}velocity += 1*0.005*mouseX; return velocity; }

4. function line_noise_0128(x, y, lineArray, lineNum, controlPointNum)

效果:一個根據噪聲形成的不斷變化的曲線??梢哉{節曲線數量,密度,抖動情況。
擴展:對繪制多邊形流程進行了擴展,用了random函數。

function line_noise_0128(x, y, lineArray, lineNum, controlPointNum) {//lineNum //線的總數//controlPointNum //每條線控制點總數translate(x, y);noFill();stroke(255);strokeWeight(2);//strokeWeight(0.7);for ( i=0; i<lineNum+1; i++) {beginShape();curveVertex(line[i][0].x, line[i][0].y);for ( j=0; j<controlPointNum+1; j++) {curveVertex(line[i][j].x, line[i][j].y);}curveVertex(line[i][controlPointNum].x, line[i][controlPointNum].y);endShape();}let off =float( random(50));for ( i=0; i<lineNum+1; i++) {for ( j=0; j< controlPointNum+1; j++) {//line[i][j].y = height/lineNum*i + random(-20, 20); //隨機偏移line[i][j].y = height/6/lineNum*i + map(noise(0.1*i, 0.1*j+off), 0, 1, -60, 60);//通過判斷點的上下,判斷線條是否會交叉,如果交叉就把點降到上一條的下面if (i>0) {if (line[i][j].y <= line[i-1][j].y) {line[i][j].y = line[i-1][j].y + random(5);}}}} }

5. function line_apple_0128(r, n, x, y)

效果:一個用線組成的花環形狀。
擴展:對line,正余弦函數進行了擴展

function line_apple_0128(r, n, x, y) {//background(255); //畫布顏色translate(x, y); //移動坐標原點到中心//let r = 300; //設置圖形半徑//let n = 200; //設置等分點的數目//通過循環,為每一個點找到對應的點進行連線for ( i=0; i<n; i++) {let a = i * 2 * PI/n; //相應的角度取值0-2PIlet b = frameCount * 0.005 * a; //規則對應的點的角度let x1 = r * cos(a);let y1 = r * sin(a);let x2 = r * cos(b);let y2 = r * sin(b);line(x1, y1, x2, y2); //進行連線} }

6. function line_BW_0128(y, XN, YN, XL, YL)

效果:多條類似斑馬線的線條形狀,可以調節線條數量,并根據鼠標位置改變變化的快慢。
擴展:對rect函數的擴展

7. function line_heart_0128()

效果:一個可以根據鼠標移動的心得形狀。
擴展:對bezierVertex的擴展。

8. function frameRate_line_0128()

效果:一條根據幀數變化而形成的心率線。
擴展:對line的擴展。

9 class Pendulun

效果:模擬重力,摩擦力,加速度,角速度做出的擺錘效果。并根據彩虹色漸變。
擴展:對ellipse ,line ,rect的擴展

rainbow文件

1. rainbow_line_0128_1(x, y)

效果:按下鼠標中鍵,會有多條根據柏林噪音形成的不斷變化的線。
根據彩虹色進行漸變。
擴展:noise,line函數的擴展。

2. function rainbow_ellipse_0128(x, y)

效果:一個根據柏林噪聲不斷抖動的漸變色球。根據彩虹色變化。
擴展:對noise,ellipse函數的擴展

Processing

海綿寶寶

用代碼畫的海綿寶寶。

粒子效果分享

int num = 1000;//the number of point(s). float mts = PI/24;//max theta speed. int r = 100;//radius of the circle int rdtr = 5;//range of the rdt int rdu = 1;//radius of circle //********** PVector v[]=new PVector[num]; boolean mv = true; boolean mo = true; color c[] = new color[num];//color of each point. float theta[] = new float[num];//original angle of each point. float mtheta[] = new float[num];//translate angle to math value. float dtheta[] = new float[num];//speed of theta. float easing[] = new float[num]; int rdt[] = new int[num];//make a shuffle of radius. void setup() {colorMode(RGB,255,255,255);size(650,650);for(int i =0;i<num-1;i++){c[i] = color(random(100,200),random(100,200),random(100,200));v[i] = new PVector(random(width),random(height));theta[i] = round(random(360));dtheta[i] = random(mts);mtheta[i] = theta[i]/180*PI;rdt[i] = round(random(-rdtr,rdtr));easing[i] = random(0.02,0.3);}frameRate(60); } void draw() {fill(25,25,25,25);rect(0,0,width,height);pushMatrix();noStroke();if(mv){if(mo){for(int i = 0;i<num-1;i++){mtheta[i] += dtheta[i];v[i].lerp(mouseX+cos(mtheta[i])*(rdt[i]+r), mouseY+sin(mtheta[i])*(rdt[i]+r),0,easing[i]);fill(c[i]);ellipse(v[i].x, v[i].y, rdu,rdu);}}if(!mo){for(int i = 0;i<num-1;i++){v[i].lerp(mouseX+cos(mtheta[i])*(rdt[i]+r), mouseY+sin(mtheta[i])*(rdt[i]+r),0,easing[i]);fill(c[i]);ellipse(v[i].x, v[i].y, rdu,rdu);}}}if(!mv){if(mo){for(int i = 0;i<num-1;i++){mtheta[i] += dtheta[i];v[i].lerp(mouseX+cos(mtheta[i])*rdt[i], mouseY+sin(mtheta[i])*rdt[i],0,easing[i]);fill(c[i]);ellipse(v[i].x, v[i].y, rdu,rdu);}}if(!mo){for(int i = 0;i<num-1;i++){v[i].lerp(mouseX+cos(mtheta[i])*rdt[i], mouseY+sin(mtheta[i])*rdt[i],0,easing[i]);fill(c[i]);ellipse(v[i].x, v[i].y, rdu,rdu);}}}popMatrix();fill(0);rect(0,0,width,15);fill(255);textAlign(LEFT,TOP);text("r = "+r,0,0);text("fps = "+round(frameRate),40,0);if(mv){fill(255,0,0);text("Running",100,0);}if(!mv){text("Static",100,0);}if(mo) {fill(255,0,0);text("motion",150,0);}if(!mo){fill(255);text("stop",150,0);} } void mousePressed(){/*for(int i = 0;i<num-1;i++){v[i] = new PVector(random(width),random(height));theta[i] = round(random(360));mtheta[i] = theta[i]/180*PI;dtheta[i] = random(mts);rdt[i] = round(random(-rdtr,rdtr)+r);}*/mv = !mv; } void keyPressed(){if(key == 's'||key == 'S'){mo =!mo;} } void mouseWheel(MouseEvent event){float e = event.getCount();if(e == -1) r+=10;if(e == 1) r-=10; }

總結

以上是生活随笔為你收集整理的互动媒体技术A1作业报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。