均勻地在球體上分布n個點我需要一個算法,可以給我一個球體周圍的位置N點(可能小于20),模糊地將它們展開。沒有必要“完美”,但我只是需要它,所以沒有一個被捆綁在一起。這個問題提供了很好的代碼,但是我找不到制作這種制服的方法,因為這似乎是100%隨機化的。這個博客文章推薦有兩種方式允許輸入球體上的點數,但Saff和Kuijlaars算法完全是我可以轉錄的偽代碼,我發現的代碼示例包含“node [k]”,我不能看到解釋并破壞了這種可能性。第二個博客的例子是黃金分割螺旋,它給了我奇怪的,褶皺的結果,沒有明確的方法來定義恒定的半徑。這種算法從這個問題好像它可能工作,但我無法拼湊出那是什么網頁上成偽代碼或任何東西。我遇到的一些其他問題主題是隨機均勻分布,這增加了我不關心的復雜程度。我很抱歉這是一個如此愚蠢的問題,但我想表明我真的很努力,但仍然很短暫。所以,我正在尋找的是簡單的偽代碼,可以在單位球體周圍均勻分布N個點,這些點可以返回球形或笛卡爾坐標。如果它甚至可以通過一點隨機分布來更好(想想圍繞恒星的行星,分散得很好,但有余地的余地)。
3 回答

郎朗坤
TA貢獻1921條經驗 獲得超9個贊
這被稱為球體上的包裝點,并且沒有(已知的)通用的完美解決方案。但是,有很多不完美的解決方案。最受歡迎的三個似乎是:
創建一個模擬。將每個點視為約束到球體的電子,然后運行模擬一定數量的步驟。電子的排斥力自然會使系統處于更穩定的狀態,在這種狀態下,這些點可以得到的距離彼此相差很遠。
超立方體拒絕。這種奇特的方法實際上非常簡單:你在球體周圍的立方體內統一選擇點(遠遠超過
n
它們),然后拒絕球體外的點。將剩余的點視為向量,并將它們標準化。這些是你的“樣本” -n
使用某種方法(隨機,貪婪等)選擇它們。螺旋近似。您在球體周圍追蹤螺旋線,并均勻分布螺旋周圍的點。由于所涉及的數學,這些比模擬更復雜,但更快(并且可能涉及更少的代碼)。最受歡迎的似乎是Saff等人。
一個很多關于這個問題的更多信息,可以發現這里
添加回答
舉報
0/150
提交
取消