作者znmkhxrw (QQ)
看板Math
标题Re: [几何] 请教有关程式码里所用的数学式子
时间Mon Apr 4 00:03:14 2022
※ 引述《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://webptt.com/cn.aspx?n=bbs/Math/M.1649001797.A.0DA.html
1F:推 phoenixlife : 大大画的图我理解了 所以原程式码sqrt(...)是用凑的04/04 00:25
2F:→ phoenixlife : 吗04/04 00:25
我只能先猜应该不是, 只是我们要逆向工程去猜出他那个式子是要符合怎样的数学目标式
, 然後验证说这个公式是那个数学目标式的唯一解
正向工程来说, 流程就是:
1. 你想要图形"看起来"均匀离散分布在球上
2. 为1.去定义数学目标式
3. 找出符合2.的数学公式
注意步骤2.没有对错问题, 只有主观的像不像的问题, 因为2.就是把1.做数学建模
而目前这个情况看起来1.是对的, 但是有一堆函数都看起来符合1, 所以如果3.是算出来
的话, 作者应该想要让图形去符合更多的性质, 只是这个方向很难猜就是了...
※ 编辑: znmkhxrw (111.255.252.125 台湾), 04/04/2022 00:31:34
3F:→ phoenixlife : 但他的顺序间隔还是很完美 其它虽然有平均分布 但还 04/04 00:27
4F:→ phoenixlife : 是有一些差异 04/04 00:27
5F:→ phoenixlife : 不过大大讲得很棒 让我更理解 感谢 04/04 00:31