javascript - 三.js球坐标公式

标签 javascript math three.js spherical-coordinate

我试图弄清楚下一个示例中发生了什么
https://threejs.org/examples/css3d_periodictable.html (球体版本)

var vector = new THREE.Vector3();
var spherical = new THREE.Spherical();
for ( var i = 0, l = objects.length; i < l; i ++ ) {
    var phi = Math.acos( -1 + ( 2 * i ) / l );
    var theta = Math.sqrt( l * Math.PI ) * phi;
    var object = new THREE.Object3D();

    spherical.set( 800, phi, theta );
    object.position.setFromSpherical( spherical );
    ...
}

我读了一些数学文章(只有将球坐标转换为笛卡尔坐标的解释)并发现了这个问题 Can someone explain the formula 。由于我的声誉,我不可能在那里发表评论,但毕竟我仍然不明白他们是如何得到这两个公式的。

var phi = Math.acos( -1 + ( 2 * i ) / l );
var theta = Math.sqrt( l * Math.PI ) * phi;

所以我的问题是:

1)如何获得这些公式?

2)为什么使用物体的长度来获取 phi 和 theta?

最佳答案

请注意,phi 从 Pi 到 0 变化,对应于反余弦定律,而 theta 线性取决于 phi。因此,这些 Angular 组合在半球表面形成螺旋(给定的代码不包含制作第二个半球的线索)。

反余弦定律提供了等距线圈(循环?不知道螺旋匝的确切术语)。 theta 的线性相关性给出了方位 Angular (子午线) Angular 的一些分布。由于总体螺旋长度(以适应 L 个项目),已选择 Sqrt(Pi*L) 乘数。

看看元素周期表开始的球体极点 - 氢在极点,氦靠近它,锂在下一个,依此类推 - 形成螺旋。

请注意,phi/theta 名称与常见(和 wiki 页面)名称不同 - 这里 theta 是方位 Angular 。

关于javascript - 三.js球坐标公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492158/

相关文章:

javascript - ThreeJS 无法设置 WebGLRenderer 的 domElement

cross-browser - Three.js:平铺纹理、缓冲和浏览器兼容性

javascript - Three.js 天空盒渲染为红色立方体然后消失?

c - 阅读汇编中的数学函数

javascript - 使用 jQuery 获取 CSS 属性并写入页面

javascript - 添加到数组中,检查id是否存在并随机更改

javascript - 将javascript var值传递给grails变量

javascript - 你如何通过查看我的鼠标光标找到基于圆的边缘的 x,y 坐标

ruby - GSL 和相关性

javascript - angular ui-grid 排序图标显示不正确