2017-02-09 42 views
-1

我正在嘗試使用我擁有的OpenGL網格,並將它賦予一個房間內的隨機位置。我目前有這行代碼:如何爲網格生成隨機位置?

positions[i] = glm::vec3(rand() % 10 - 1, rand() % 10 - 1, rand() % 10 - 1); 

它只是產生一個隨機位置(x,y和z)。不過,我並不完全確定'%10 - 1'在做什麼,因爲這段代碼片段已經在線使用。我可以改變場景中的數字和網格移動,但我不完全確定這些數字是如何影響它的。

如何編輯線條,使網格不太靠近在一起,並且都適合在房間內(我知道你不知道房間的尺寸/位置,所以只是一個解釋會很有幫助)。

+0

網格中的隨機位置與其他隨機數不同。你會發現很多問題/答案。嘗試尋找'',因爲'rand()'不是最好的rng – user463035818

回答

2

這部分rand()%10-1:rand()是隨機數生成器。 %是模運算。所以基本上rand()%10會生成範圍[0,9]中的所有數字。現在rand()%10 - 1會將範圍更改爲[-1,8]。

如何編輯線條,使網格不太靠近在一起,並且都適合在房間內(我知道你不知道房間的尺寸/位置,所以只是一個解釋會很有幫助)。

只需將10更改爲您的尺寸最大值。

+0

完美,只是我需要的解釋,謝謝。有沒有一種很好的方法來確保網格不會彼此靠得太近?我的網格有物理碰撞盒,所以我想避免重疊。 –

+0

您可以使用HashMap或其他東西來存儲座標。所以每當你得到與你已經看到的相同的座標時,只需再次生成這些值,直到你獲得一個新的座標。 那麼你不能確保網格不給位置,因爲它是一個隨機數生成器。 – vk3105