Re: [幾何] 請教有關程式碼裡所用的數學式子

看板Math作者 (QQ)時間2年前 (2022/04/04 00:03), 2年前編輯推噓1(104)
留言5則, 1人參與, 2年前最新討論串2/2 (看更多)
※ 引述《phoenixlife (All in AAPL)》之銘言: : 各位大大好 : 最近在看有關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或是原理才這 : 感謝! (通篇用大寫L取代小寫l, 為了好看) 首先程式碼中的phi與theta跟他文件所引用的wiki連結是相反的, 我這邊直接給你修正後 的結果: phi是polar, 範圍從0~pi theta是equator, 範圍從0~2pi 再來看程式碼的phi, 相當於在xy平面的上半圓等距灑上L個點, 注意並非是等角, 他是在 x軸上等距然後才往上對應半圓, 不過"視覺上"差不多, 只要有"均分"的效果就會有效果 再來看程式碼的theta, 相當於要把這些在xy平面中上半圓的點賦予角度, 即把這些不同 的點往多少高度與正反向打 比如theta=0就是原處, theta=90就是最低點, theta=180就是原處的背面... 所以我們就是要對每個點選擇theta以至於讓這些點均勻分布在整個球體 如果theta=(i/L)*2pi, 那你會看到一尾龍盤旋在圓上 其他的theta我公式化在下面的連結裡, 數學上來說就是選擇函數f後, 定義theta = f(i) , 只要同餘函數mod(f(i),2pi)有分多段並且不同段間的高度都不一樣, 那視覺上就會有 原效果 https://www.desmos.com/calculator/yrrarwlfmn (繪圖圖形可以點擊開關) f_1是我的i f_2是原程式碼 f_3是你的1.809 f_4是你的8pi 發現f_1~f_3都有我描述的"多段且每段不同高度", 而f_4的圖其實都是0(只是浮點誤差導 致有些點很接近2pi), 才會導致你那個圖, 而你那個圖是因為每個圖片有厚度, 換成點的 話你會發現他其實落在同一條圓弧 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.252.125 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1649001797.A.0DA.html

04/04 00:25, 2年前 , 1F
大大畫的圖我理解了 所以原程式碼sqrt(...)是用湊的
04/04 00:25, 1F

04/04 00:25, 2年前 , 2F
04/04 00:25, 2F
我只能先猜應該不是, 只是我們要逆向工程去猜出他那個式子是要符合怎樣的數學目標式 , 然後驗證說這個公式是那個數學目標式的唯一解 正向工程來說, 流程就是: 1. 你想要圖形"看起來"均勻離散分布在球上 2. 為1.去定義數學目標式 3. 找出符合2.的數學公式 注意步驟2.沒有對錯問題, 只有主觀的像不像的問題, 因為2.就是把1.做數學建模 而目前這個情況看起來1.是對的, 但是有一堆函數都看起來符合1, 所以如果3.是算出來 的話, 作者應該想要讓圖形去符合更多的性質, 只是這個方向很難猜就是了... ※ 編輯: znmkhxrw (111.255.252.125 臺灣), 04/04/2022 00:31:34

04/04 00:27, 2年前 , 3F
但他的順序間隔還是很完美 其它雖然有平均分佈 但還
04/04 00:27, 3F

04/04 00:27, 2年前 , 4F
是有一些差異
04/04 00:27, 4F

04/04 00:31, 2年前 , 5F
不過大大講得很棒 讓我更理解 感謝
04/04 00:31, 5F
文章代碼(AID): #1YISL53Q (Math)
文章代碼(AID): #1YISL53Q (Math)