You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Three.js通过极坐标计算球面点位未生成正确球体的问题

错误原因

  • 坐标转换公式不符合球面方程约束:原代码计算得到的x、y、z分量平方和不等于固定半径平方,因此点位无法落在固定半径的球面上
  • 极角遍历范围错误:球坐标的极角取值范围为0π(即0180度),原代码遍历0~360度会导致点位重复映射,破坏球面分布

修复方案

修正坐标转换公式保证三个分量平方和等于半径平方,同时调整极角的遍历范围即可生成标准球面,修正后代码如下:

const distance = 1000;
// theta为方位角,范围0~360度,绕轴旋转一周覆盖水平全向
for (var i = 0; i < 360; i += 10) {
  // phi为极角,范围0~180度,覆盖从顶部到底部的全纬度
  for (let j = 0; j < 180; j += 10) {
    let theta = i * (Math.PI / 180);
    let phi = j * (Math.PI / 180);
    // 符合球面方程的坐标转换逻辑
    let x = Math.sin(phi) * Math.cos(theta) * distance;
    let y = Math.cos(phi) * distance;
    let z = Math.sin(phi) * Math.sin(theta) * distance;
    const lightSphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
    lightSphere.position.set(x, y, z);
    scn.add(lightSphere);
  }
}

内容的提问来源于stack exchange,提问作者otto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:39:04