我正在編碼以模擬解決方案環境中球體的增長。我正在這樣做。使用隨機數創建羣集
創建空間並將細胞置於中心作爲種子。
pSpace = new char[nXRange * nYRange * nZRange]; for (int i = 0; i < nZRange; i++) for (int j = 0; j < nYRange; j++) for (int k = 0; k < nXRange; k++) pSpace[i * nXRange * nYRange + j * nXRange + k] = 0; pSpace[nXRange * nYRange * nZRange/2 + nXRange * nYRange/2 + nXRange/2] = 1;
在解決方案中創建一個單元格。單元格的位置由隨機數創建。
int nXPostion = (int)(((float)rand()/RAND_MAX) * (nXRange - 1)); int nYPostion = (int)(((float)rand()/RAND_MAX) * (nYRange - 1)); int nZPostion = (int)(((float)rand()/RAND_MAX) * (nZRange - 1));
計算用於創建新的小區的鄰居cell.Six的電位的變化進行檢查爲左(L),右(R),前(F),後面(B),上(T)和底部(B *)。如果新細胞的鄰居是圖中L的舊細胞,則電勢的變化是PA2A,否則,如果它不是老細胞,而是溶液,則爲R,F,B,T和B *這個數字,它是PA2S。用新的細胞的創建改變了PCREATE的潛力。因此,潛在的變化是
fPotential = PCREATE + P(Left) + p(Right) + p(Front) + p(Behind) + p(Top) + p(Bottom);
使用隨機數來比較潛在的變化如下。如果隨機數大於潛在變化的指數,則創建一個新的單元,否則取消。
理論上,球體會在種子周圍生長。但是,在我的實驗中,羣集的形狀是不規則的。附加的圖像是50000個單元的羣集。任何人都可以給我一些意見。它與隨機數的產生有關嗎?謝謝。
這可能是一個愚蠢的問題,但你爲什麼認爲你發佈的形狀是「不規則的」?我看起來你的細胞集落的中心是260,260,260,並且細胞集落在x/y/z方向大致在230..290附近傳播。這幾乎是一個球體? –
你說得對。集羣的範圍看起來正確。但是,羣集包絡的形狀不是一個圓圈。你可以從集羣的xy和xz平面看到。集羣表面不光滑。我創造了50000個細胞。 – HXGuo
你有沒有理由不使用多維數組?例如'一[X] [Y] [Z]'。它會提高你的代碼的可讀性,並減少我們的指數出錯的可能性。 – Richard