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作业报告相关推荐

  1. 互动媒体技术课程作业 十二个“一”的人格感受

    互动媒体技术课程作业 十二个"一"的人格感受 (本文与编程无关) 十二个"一"的人格评价--想象为十二个异性追求者 结合以下五个方面评价 开放性(opennes ...

  2. 互动媒体技术期末作业——简易绘画系统

    主题 编写一个"绘画系统",提供一系列绘画材料(例如画笔/颜料/滤镜)给用户操作,以创作出动态/交互的绘画作品.这个绘画系统是对"绘画"的概念的扩展,但仍然体现 ...

  3. 【互动媒体技术赏析作业】

    我最喜欢的作品:数艺18级59号. 第一印象是很有活力的小仙女. 构成人物形象的几何图形十分简练,落柿色的红晕,艳红的嘴唇,白皙的皮肤,薄花蓝的连衣裙,几个简单的几何图形就将人物的美丽与可爱表现出来. ...

  4. 互动媒体技术作业——processing码绘

    互动媒体技术作业--processing码绘 一.作品临摹 二.码绘拓展 三.心得体会 一.作品临摹 1.要求: 从参考资料中的"动态图形艺术"中选取不少于1幅作品,用编程方式临摹 ...

  5. p5.js 编程临摹动态图形(互动媒体技术作业)

    p5.js 编程临摹动态图形(互动媒体技术作业) 动态图形的规律分析 p5.js 代码历程 走过的弯路 拓展 总结 动态图形的规律分析 从老师的动态图形参考资料中,我选择了以下图形进行临摹: 初次见面 ...

  6. 十二个“一”与耍猴(互动媒体技术作业)

    十二个"一"与耍猴(互动媒体技术作业) 角色简介 第一章 耍猴之兴 第二章 耍猴之变 第三章 第四章 -- 总结 角色简介 本文故事时间为古代某时期,文中时间点与现实无关,故事背景 ...

  7. 十二个“一”,十二台手机(互动媒体技术作业)

    十二个"一",十二台手机(互动媒体技术作业) 选题: A:VIVO NEX3 B:OPPO Reno系列 C:iPhone 11系列 D:三星 Note10 系列 E:8848钛金 ...

  8. p5.js 绘制创意自画像(互动媒体技术作业)

    p5.js 绘制创意自画像Little Prince(互动媒体技术作业) 作品展示 代码&创意点分析 1.设置工具类以获取坐标点:本次实验最有用的东西就是这个了 2.眼睛跟随鼠标运动: 3.披 ...

  9. 流动墨迹速度感知实验(互动媒体技术作业)

    流动墨迹速度感知实验(互动媒体技术作业) 文献综述 数据分析 研究问题 实验方法 评价标准 测量结果 结果分析 文献综述 阅读律大大关于"测量书法的可回溯感"的论文可知,汉字书法艺 ...

最新文章

  1. 被鱼刺扎一下就没了条手臂?这种“吃人肉”的细菌身边并不罕见
  2. 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别--转
  3. python函数和方法概念_第48p,什么是函数?,Python中函数的定义
  4. mysql报错排查总结
  5. python模块讲解_python模块详解
  6. 获得分辨率_变分辨率宽幅面光固化3D打印,
  7. mysql -h 日志打印_mysql日志
  8. 使用Nginx实现负载均衡
  9. Idea+Mybatis源码构建
  10. 周易版化学元素周期表
  11. Python求解平方怪圈问题
  12. 放弃了灰色轨迹的人,放弃了木马帝国的人(ALLyeSNO)
  13. 数开头的成语有哪些_一至十数字开头的成语有哪些?
  14. 算法系列1《DES》
  15. sublime text3安装python插件和flake8_让你用sublime写出最完美的python代码--windows环境-搜云库...
  16. RxJava 3.x
  17. 我的曲院风荷-让自己慢下来(13)
  18. Python的strip()函数
  19. 认识区块链,认知区块链——NFT
  20. 国家公务员局提醒考生:所谓命题专家不可信-公务员-国考

热门文章

  1. Web登录小案例(含验证码登录)
  2. 什么是幂等?如何实现
  3. opengl绘制卡通人物哆啦A梦
  4. win7 Qt5.5安装Qwt 6.1.2
  5. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
  6. 时势造英雄,快影成长启示录
  7. 美术课程对计算机的好处,学美术的十大好处
  8. 乐学python怎么样_铁乐学Python_day07_集合and浅谈深浅copy
  9. (二)ElasticSearch实战基础教程(ElasticSearch入门)
  10. Java程序员常用的各种快捷键和命令