2010-10-24 32 views
4

我一直在試驗這個,我一直沒有能夠拿出一個適當的解決方案。希望你們中的一位Mathletes能指引我朝着正確的方向前進。我在ActionScript 3中構建了一個Snow Globe,我需要想出一組方程來控制兩層雪花 - 一層是隨機的,另一個是用戶可以點擊它們的交互。 對於隨機雪,我需要讓它在地球底部創建一定數量的隨機x/y位置,這是一個半徑大約爲300的圓。然後當發生搖動動作時,它們應隨機向着頂部,然後再回落到圓圈底部的隨機位置。雪地球隨機雪的數學公式

對於交互式雪,我需要它隨機佈局,但我不希望雪花重疊,以便更容易與它們交互。

+0

+1有趣。 – 2010-10-24 13:31:40

回答

0

這是一個解決方案,不是特別的切割者。

基於片狀物的形狀,可以計算片狀物可以接近另一片狀物而不重疊的程度(可能需要特定的旋轉)。讓中心之間的距離爲d。在某種分辨率下爲您的顯示器構建一個2d陣列,以便它完全包含您的圈子。

該數組可以有0或1的值。 0意味着你可以放置一個新的雪花,那意味着你不能。將圓圈外的所有內容標記爲1.現在爲碎片挑選一個隨機中心。當你把它放在那裏時,用1標出d周圍半徑的所有點。生成另一個隨機點。如果它是1,繼續生成另一個隨機點,直到找到0爲止。一旦找到它,將新的雪花放在那裏,並標記半徑爲d的所有物體。有些時候片子太近了,你必須適當地旋轉它們,以免它們重疊。

一旦你接近尾聲,它可能會開始花更長,更長的時間找到一個空白點。此時,您可能需要掃描陣列,製作空點列表,然後從中選擇隨機點。