2011-05-24 131 views
1

我正在使用畫布在JavaScript中編寫相當簡單的腳本。它繪製了一箇中心節點,將所有周圍的節點拉向它。這很好,但我需要每個節點相互排斥。x/y越接近x/y的速度

我打算通過增加每個節點的速度使它們彼此遠離,這樣最終它們應該平滑並最終看起來像花朵一樣。它需要有足夠的力量阻止它們相互撞擊或沉入中心節點而不會飛到遠處。

我只是不能解決我如何能得到更多的數字。

因此,如果兩個節點彼此相距10px,則會爲其x速度中的一個增加5個力。但是,如果它們彼此相距1000px,那麼它幾乎不會增加其中一個節點的力量。

有沒有人知道一個數學方程式,我可以使用這種東西出來,或者也許是在正確的方向微調?

TL; DR:根據兩個x值的接近程度,我需要增加一個節點的x速度,使它們分開,但最終達到平衡。這只是我不能破解的數學,我幾乎完成了所有的JavaScript,包括速度的實現。

謝謝,抱歉,這有點羅嗦。

回答

4

你只需要逆(或平方反比)關係:

var increment = k/distance; 

或:

var increment = k/(distance * distance); 

您可以根據您想要的實際值確定k,例如,在第一如果你想在10的距離上增加5,你可以設置k = increment * distance = 50

+0

所以我假設'k'非常高,那麼他們就可以用較少的力量靠近。說190左右吧?他們現在似乎有太多的力量,並在各地飛行。如果你看看[這裏](http://jsfiddle.net/Wolfy87/KAktJ/51/)並搜索這個評論。 '//計算速度'。任何指針。我知道我完全錯了,我只是不確定在哪裏。 – Olical 2011-05-24 16:38:44

+0

對不起,'k =增量*距離'> _>我試圖測試它,但jsFiddle運行非常慢。 – Olical 2011-05-24 16:48:43

+0

@ Wolfy87:這是一個很好的模擬你已經到了那裏。 :) – casablanca 2011-05-24 16:54:07

2

研究控制電點電荷的方程式,速度應基於每個「電荷」根據其接近度感受的「力」。