球面绘制六边形——二维平面坐标转成三维球面坐标

本文探讨了如何将二维六边形坐标转换到三维球面上,介绍了自定义函数计算六边形坐标,并详细展示了如何通过数学运算将这些坐标映射到球面,最终实现坐标点在球面上的准确位置定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

难点在于怎样将二维六边形坐标转到三维球面坐标上
const arr = ddd(-50, 0, size, 23) // 自己写的一段计算六边形坐标的函数来获取二维的坐标点

// 传入球的半径及得到的二维坐标点
function getXYZ (r, arr) {
const dataSet = [];
const L = 2 * Math.PI * r; // 算出圆周长
const W = L * 1.70; //定义球面铺开之后的宽高,至于为什么要乘以或者除以这些数,还在研究当中
const H = L / 3.5;
for (let i = 0; i < arr.length; i += 1) {
const x = (360 / W) * arr[i].x - 180;
const y = (180 / H) * arr[i].y - 90;
dataSet.push({x: x, y: y})
}
return dataSet;
} // 这样就拿到了二维坐标对应到球面的坐标,不清楚算不算经纬度

// 大球转换经纬度坐标(coord:弧度)
// 最后就是将坐标带入函数算出对应球面的坐标
function bigLatlngToXYZ® {
const sphereArray = [];
for (let i = 0; i < dataSet.length; i += 1) {
let lat = dataSet[i].x;
let lng = dataSet[i].y;
const phi = ((90 - lat) * Math.PI) / 180;
const theta = ((180 - lng) * Math.PI) / 180;
const x = r * Math.sin(phi) * Math.cos(theta);
const y = r * Math.cos(phi);
const z = r * Math.sin(phi) * Math.sin(theta);

  sphereArray.push({ x: x, y: y, z: z });
}
return sphereArray;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值