2013年6月23日 星期日

「筆記」QC進階筆記 4-1



本週經堯老師跟大家分享他的作品軌跡 (tracks)的創作過程,感謝經堯老師無私的分享作品,透過開放作品程式碼,讓我們更理解了他的創作方法以及作品的意涵,以下為本週課程內容的部分節錄。

var clicked=false;
var control={};
var clock=[];

function dis(x1,y1,x2,y2){ 
 return Math.sqrt(Math.pow((x1-x2),2)+Math.pow((y1-y2),2));
}

function angle(x,y,x1,y1){
 return Math.atan2(y1-y,x1-x);
}

function (__structure outlet,__structure outlet2) main (__number x,__number y,
__boolean click,__boolean reset,__number time)
{

 for(var i=0;i<clock.length;i++){
  clock[i].theta+=clock[i].r/10;
  clock[i].x1=clock[i].x+Math.cos(clock[i].theta)*clock[i].r;
  clock[i].y1=clock[i].y+Math.sin(clock[i].theta)*clock[i].r;
 }


 var result = new Object();
 //if(click==true && clicked==false)
 if(reset){
 clock=[];
 }
 
 
 if(click && !clicked){
  clicked=true;
  control.posx=x;
  control.posy=y;
  control.enable=true;
 }
 if(click && clicked){
  control.posx1=x;
  control.posy1=y;
  control.dis=dis(control.posx,control.posy,control.posx1,control.posy1);
  control.angle=angle(control.posx,control.posy,control.posx1,control.posy1)
 }
 if(!click && clicked){
  clicked=false;
  control.enable=false;
  
  clock.push({
   x:control.posx,
   y:control.posy,
   x1:control.posx1,
   y1:control.posy1,
   r:control.dis,
   theta:control.angle,
  }); 
 }
 result.outlet=control;
 result.outlet2=clock; 
 return result;
}

(draw line)

(iterator)

qc2-w4-1.qtz