互动媒体技术作业A1
作业内容
编写一个能够实现各种线条效果的库
line:
闪烁线 一条线段三等分 随时间在白色与红、绿、蓝之间闪烁
参数:起始坐标 终止坐标 drag是滑轮传递的参数
function twinkleLine0228(x1,y1,x2,y2,drag){
strokeWeight(5);
dx=x2-x1;dy=y2-y1;
point1x=x1+dx/3;point2x=x2-dx/3;
point1y=y1+dy/3;point2y=y2-dy/3;
var t = millis() / 20;
var colorChange=200*Math.sin(t * Math.PI/180);
drag=-drag;
colorChange+=drag;
stroke(200+drag,colorChange,colorChange);
line(x1,y1,point1x,point1y);
stroke(colorChange,200+drag,colorChange);
line(point1x,point1y,point2x,point2y);
stroke(colorChange,colorChange,200+drag);
line(point2x,point2y,x2,y2);
}
折叠线 一条线段三等分,形成闪电状,分别不同颜色显示
参数:起始坐标 终止坐标 drag是滑轮传递的参数
function foldLine0028(x1,y1,x2,y2,drag){
stroke(11);
dx=x2-x1;dy=y2-y1;
absX=abs(dx);absY=abs(dy);
if(absX<=absY){
point1x=x1+dx/2;point2x=x2-dx/2;
point1y=y1+dy/3;point2y=y2-dy/3;
}
else{
point1x=x1+dx/3;point2x=x2-dx/3;
point1y=y1+dy/6;point2y=y2-dy/6;
}
sweight=1000/(absX+absY);
strokeWeight(sweight);
if(drag>80){
drag=80;
}
stroke(180-drag,100,100);
line(x1,y1,point1x,point1y);
stroke(100,180-drag,100);
line(point1x,point1y,point2x,point2y);
stroke(100,100,180-drag);
line(point2x,point2y,x2,y2);
stroke(226);
strokeWeight(1);
}
circle:
简单黑洞 从边缘到中心颜色由浅到深的圆
参数:圆心坐标 半径 黑洞层次 黑洞中心颜色
function blackholeCircle0228(x,y,r,loop,centerColor){
noStroke();
fColor=centerColor;fR=r;
dR=r/loop;
dColor=centerColor/loop;
for(var i=0;i<loop;i++){
fill(fColor);
circle(x,y,fR);
fColor-=dColor;
fR-=dR;
}
fill(0);
stroke(128);
}