討論區快速選單
知識庫快速選單
網路投保旅行平安險 政府補助!學嵌入式+物聯網 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
呼叫此fuction的功用
更改我的閱讀文章字型大小
作者 : linnat(Nat)
[ 貼文 42 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/29 下午 05:39:56
想問問 當其他程式呼叫"phaseUnwrap() " 有什麼用處

看一看 感覺上 變數值完全沒有變更 例如 distance[y][x], phase[y][x] 等

但是拿掉此方法 結果就完全不同了.........

想知道 哪個部分 我認知有問題 莫非其中有變數被修改了???

先謝謝大家!!!!

// 我是程式分隔線================================================

PriorityQueue toProcess;

void phaseUnwrap() {
  
  int startX = inputWidth / 2;
  int startY = inputHeight / 2;

  toProcess = new PriorityQueue();
  toProcess.add(new WrappedPixel(startX, startY, 0, phase[startY][startX]));

  while(!toProcess.isEmpty()) {
    WrappedPixel cur = (WrappedPixel) toProcess.poll();
    
    int x = cur.x;
    int y = cur.y;
    if(process[y][x]) {
     phase[y][x] = cur.phase;
     process[y][x] = false;
     float d = cur.distance;
     float r = phase[y][x];
 
     if (y > 0)
     phaseUnwrap(x, y-1, d, r);
     if (y < inputHeight-1)
     phaseUnwrap(x, y+1, d, r);
     if (x > 0)
     phaseUnwrap(x-1, y, d, r);
     if (x < inputWidth-1)
     phaseUnwrap(x+1, y, d, r);
    }
  }
}

void phaseUnwrap(int x, int y, float d, float r) {
  if(process[y][x]) {
    float diff = phase[y][x] - (r - (int) r);
    if (diff > .5)
     diff--;
    if (diff < -.5)
     diff++;
    toProcess.add(new WrappedPixel(x, y, d + distance[y][x], r + diff));
  }
}

class WrappedPixel implements Comparable {
  public int x, y;
  public float distance, phase;
  WrappedPixel(int x, int y, float distance, float phase) {
    this.x = x;
    this.y = y;
    this.distance = distance;
    this.phase = phase;
  }
  int compareTo(Object o) {
    if(o instanceof WrappedPixel) {
     WrappedPixel w = (WrappedPixel) o;
     if(w.distance == distance)
     return 0;
     if(w.distance < distance)
     return 1;
     else
     return -1;
    } else
     return 0;
  }
}
作者 : linnat(Nat)
[ 貼文 42 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/29 下午 05:53:41
道歉 我沒發現 我有改到 回饋點數

發文時 系統有提醒 但是修改完在PO 還是出現了

沒權限刪文 只好在此說明一下 抱歉.....
作者 : tand(tand)
[ 貼文 130 | 人氣 5 | 評價 460 | 評價/貼文 3.54 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人linnat註記此篇回應為很有道理 2010/4/6 下午 01:45:37

>想問問 當其他程式呼叫'phaseUnwrap() ' 有什麼用處
>
>看一看 感覺上 變數值完全沒有變更 例如 distance[y][x], phase[y][x] 等
>
>但是拿掉此方法 結果就完全不同了.........
>
 
在 phaseUnwrap()裡面,你重new了 PriorityQueue().
toProcess = new PriorityQueue();
這是結果完全不同的原因所在.
 板主 : 風月
 > Java入門一般區 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Java入門一般區 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Java入門一般區
1 洋將 2410 
2 Aron 2130 
3 Aries 1510 
4 DEMO999 1310 
5 Ben 990 
6 ramb 620 
7 ozzy 570 
8 tand 460 
9 Huah 410 
10 vindy 400 
Java入門一般區
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875