看板 Math 關於我們 聯絡資訊
各位大大好 最近在看有關three js裡面的example,看到元素表的例子 https://threejs.org/examples/?q=peri#css3d_periodictable 程式碼在此 https://reurl.cc/l9qDQl 看到有一段關於 元素螺旋平均分佈在球面上 這兩行 line 298,299這兩行讓我看很久 298 const phi = Math.acos( - 1 + ( 2 * i ) / l ); 299 const theta = Math.sqrt( l * Math.PI ) * phi; 298行還可以理解 但299行完全不知道為什麼要 乘上 sqrt(l * pi) // l是元素總數 我查了一下,似乎看起來是Fibonacci sphere,然後也改了程式碼 const phi = Math.acos( - 1 + ( 2 * i ) / l ) const theta = Math.PI*(1.809)*i 結果長這樣 https://i.imgur.com/E1k10nO.png 也有很類似的效果,至於為什麼會是1.809,老實說我也不清楚,我只是測了幾組 黃金比例1.618,0.608,而1.809是常用在股市的黃金比例,如果數字不對,甚至不會平均分佈在球面上 例如調成8變這樣 https://i.imgur.com/bysIHIo.png 而原程式碼sqrt(l * pi)看起來不太像是用湊的權重,如果取代成 theta = XX * phi XX 隨便當作一個常數有時也不會螺旋均勻分布在球體 因為小弟數學真的沒有很好 想問問看板上的大大有沒有人知道原程式碼 line 299行是根據什麼paper或是原理才這樣寫 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.107.51 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1648979143.A.EBD.html ※ 編輯: phoenixlife (59.127.107.51 臺灣), 04/03/2022 17:47:15 ※ 編輯: phoenixlife (59.127.107.51 臺灣), 04/03/2022 17:54:38
znmkhxrw : 你打 const theta = i 看是否有類似效果, 如果也有 04/03 23:22
znmkhxrw : 的話, 代表他原本的程式碼只是一種把點散佈到圓的一 04/03 23:22
znmkhxrw : 種方式而已 04/03 23:22
有耶 有類似一樣的效果 ※ 編輯: phoenixlife (59.127.107.51 臺灣), 04/03/2022 23:27:39
phoenixlife : H he li b p c n ...雖然是平均分佈球面 但順序間隔 04/03 23:34
phoenixlife : 有點跳 04/03 23:34
znmkhxrw : 我回你一篇 稍等 04/03 23:39
phoenixlife : 主要想知道為什麼他的方式可以這麼的完美 照順序螺 04/03 23:40
Vulpix : 8的長那樣不是正常現象嗎?2,0,-6,4也一樣啊。 04/03 23:40
phoenixlife : 旋又可以等距 04/03 23:40
phoenixlife : 我覺得用8舉得不好,偶數pi的確都長這樣,但1.089表 04/03 23:54
phoenixlife : 現的確是我目前測得最好 04/03 23:55
phoenixlife : 更正1.809 04/03 23:55
musicbox810 : 乘以sqrt(l * pi)的圖形,原PO可以截圖貼上嗎?第一 04/04 00:20
musicbox810 : 個網址是一個平面,看不出是在球上 04/04 00:20
phoenixlife : 你點開網址 點下面sphere就是結果 04/04 00:29
musicbox810 : 謝謝,我仔細看了一下,感覺並沒有很均勻 04/04 00:37
musicbox810 : 現在就是要去解釋為何會想取sqrt(Lpi)phi 04/04 00:37