2025年5月1日 星期四

Processing筆記_week11

概要:延續上禮拜的內容,讀寫檔案。



















第一個程式碼,我們延續上禮拜第六個程式,在讀檔的時候去額外判斷是否有資料,再去決定是否撥放旋轉角度。
int R=0;
if(key=='r'){
    if(R==0){
      String [] file = loadStrings("angles.txt");
      if(file!=null){
        for(int i=0;i<file.length;i++){
          lines.add(file[i]);
        }
      }
    }
    if(R<lines.size()){
      float [] now = float(split(lines.get(R),' '));
      for(int i=0;i<20;i++)angle[i] = now[i];
      R = (R+1) % lines.size();
    }
  }
第二個程式碼,我們利用內插的原理,將兩個動作間的間隔補上,形成動畫的效果。
if(key=='p'){
    float [] oldAngle = float(split(lines.get(R)," "));
    float [] newAngle = float(split(lines.get((R+1)%lines.size()),' '));
    float alpha = (frameCount%30)/30.0;
    for(int i=0;i<20;i++)angle[i] = oldAngle[i]*(1-alpha)+newAngle[i]*alpha;
  }

第二個程式碼plus版,不使用q,而是在每次draw的時候就內插一次,用r呈現動畫。
接下來參考剛剛的程式碼,再做一個更簡潔的版本。


沒有留言:

張貼留言