2012-11-11 57 views
0

我已經得到了通過創建基於陰影從一組座標的距離細胞梯度的腳本。我想要做的是使漸變圓形,而不是它目前的菱形形狀。你可以在這裏看到一間例如:http://jsbin.com/uwivev/9/edit獲取彎曲的結果集,而不是角在JavaScript(數學幫助需要)

var row = 5, col = 5, total_rows = 20, total_cols = 20; 

$('table td').each(function(index, item) { 

    // Current row and column   
    var current_row = $(item).parent().index(), 
     current_col = $(item).index(); 

    // Percentage based on location, always using positive numbers 
    var percentage_row = Math.abs(current_row-row)/total_rows; 
    var percentage_col = Math.abs(current_col-col)/total_cols; 

    // I'm thinking this is what I need to change to achieve the curve I'm after 
    var percentage = (percentage_col+percentage_row)/2; 

    $(this).find('div').fadeTo(0,percentage*3); 

}); 

如果你能給我的手用正確的數學函數來獲取曲線後,我這將是偉大的!謝謝!

達倫

+0

你爲什麼做這樣的嗎?爲什麼不使用畫布? – elclanrs

回答

0
// Current row and column   
var current_row = $(item).parent().index(), 
    current_col = $(item).index(); 

// distance away from the bright pixel 
var dist = Math.sqrt(Math.pow(current_row - row, 2) + Math.pow(current_col - col, 2)) 

// do something with dist, you might change this 
var percentage = dist/total_cols; 

$(this).find('div').fadeTo(0,percentage*3); 
+0

如果我想增加曲線的嚴重程度,就像easyInQuart那樣,我該如何做到這一點?謝謝! – iamdarrenhall

+0

不完全確定你的意思,但你可以嘗試平方* dist *或* 1 - dist *以獲得更快或更慢的光衰。 – James

+0

謝謝,最後我用fade = percent-(0.5-percent); – iamdarrenhall

0

可以使用距離公式的平方:

((CURRENT_ROW - 行)*(CURRENT_ROW - 行)+(current_col - 列)*(current_col - COL))

然後乘以你需要的任何比例因子。

0

這裏是圓圈繪製procudure我寫了很久以前在帕斯卡,你可以僞代碼中使用,以瞭解如何從一個(X,Y)的半徑彩色像素,並在你的工作方式。多縮水界要覆蓋您需要的整個區域。該代碼還爲您提供了訪問半徑的公式。

PROCEDURE DrawCircle(X,Y,Radius:Integer); 
VAR A,B,Z:LongInt; 
BEGIN 
    Z:=Round(Sqrt(Sqr(LongInt(Radius))/2)); 
    FOR A:=Z TO Radius DO 
    FOR B:=0 TO Z DO 
    IF Radius=Round(Sqrt(A*A+B*B)) THEN 
     BEGIN 
     PutPixel(X+A,Y+B,8); 
     PutPixel(X+A,Y-B,9); 
     PutPixel(X-A,Y+B,10); 
     PutPixel(X-A,Y-B,11); 
     PutPixel(X+B,Y+A,12); 
     PutPixel(X+B,Y-A,13); 
     PutPixel(X-B,Y+A,14); 
     PutPixel(X-B,Y-A,15); 
     END; 
END; 

NB:「Longint型()」是較大的數值計算的編譯器的類型轉換,所以不要讓這種擔心你。

注:最內側的括號先執行。