在threejs中自定义了一个场景,该场景的原点由经纬度转换而来,创建了一条以原点为起点的线段,hover到线段上的时候如何计算hover点的经纬度?
获取到的经纬度与实际经纬度存在较大偏差
function worldToLatLon(vector3, radius) {
if (!(vector3 instanceof THREE.Vector3)) {
throw new Error("输入的坐标不是 Three.js 的 Vector3 对象");
}
const [x, y, z] = vector3;
const latitude = Math.asin(y / radius) * (180 / Math.PI);
const longitude = Math.atan2(z, x) * (180 / Math.PI);
return {
latitude,
longitude,
};
}
const radius = 6371; // 地球的半径,单位为公里
const vector3 = new THREE.Vector3(1000, 2000, 3000); // 世界坐标
const latLon = worldToLatLon(vector3, radius);
console.log(`纬度: ${latLon.latitude}, 经度: ${latLon.longitude}`);
在 Three.js 中,将世界坐标(通常是 x, y, z 的三维空间坐标)转换为经纬度并不是直接的过程,因为 Three.js 本身并不直接处理地理坐标。但是,如果你有一个从地理坐标(经纬度)到 Three.js 世界坐标的映射关系,你可以尝试逆向这个过程来估算 hover 点的经纬度。
请注意,以下代码是伪代码,并不直接适用于 Three.js,但它展示了如何估算 hover 点的经纬度:
// 假设 origin 是由经纬度转换而来的原点(Three.js 坐标)
// hoverPoint 是 hover 点的 Three.js 坐标
// 计算方向向量
let directionVector = new THREE.Vector3().subVectors(hoverPoint, origin);
// 计算纬度(简化示例)
let latitudeRadians = Math.acos(directionVector.y / directionVector.length());
let latitudeDegrees = THREE.MathUtils.radToDeg(latitudeRadians);
// 计算经度(简化示例)
let longitudeRadians = Math.atan2(directionVector.z, directionVector.x);
let longitudeDegrees = THREE.MathUtils.radToDeg(longitudeRadians);
// 输出估算的经纬度
console.log(`Estimated latitude: ${latitudeDegrees.toFixed(2)}°`);
console.log(`Estimated longitude: ${longitudeDegrees.toFixed(2)}°`);
通过前两节课的学习,想必你已经对Threejs的层级模型有了一定认识,那么本节课就在层级模型概念的基础上,继续给家讲解两个新的概念,即本地坐标系和世界坐标系。 如果你对本地坐标系和世界坐标系已经有了一定概念,那么可以直接访问模型的位置属性.position获得模型在本地坐标系或者说模型坐标系下的三维坐标,通过模型的.getWorldPosition()方法获得该模型在世界坐标下的三维坐标。 .ge
问题内容: 我正在尝试将经纬度对转换为像素坐标。我发现了这种墨卡托投影,但我不理解代码。x_adj,y_adj变量是什么因素?当我在没有这些常量的情况下运行代码时,我的经/纬对就不在地图上,并且x和y像素坐标也不是我想要的。 问题答案: 这些变量从何而来 选择这些变量以使计算出的坐标与地图的背景图像匹配。如果知道地图的投影参数,则可以计算它们。但是我相信,它们很可能是通过反复试验而获得的。 如何计
问题内容: 我具有纽约市纽约市的纬度/经度值;40.7560540,-73.9869510和地球的平面图像,即1000px×446px。 我希望能够使用Javascript将纬度/经度转换为X,Y坐标,该点将反映该位置。 因此,图像左上角的X,Y坐标将是;289、111 注意事项: 不用担心要使用哪种投影的问题,可以自己做假设,也可以按照自己知道的可行的方法进行操作 X,Y可以形成图像的任意一角
我的表有两个浮动列,分别表示纬度和经度坐标。 我想使用PostGIS的ST_DWithin查找距离给定点一定距离内的所有记录。 的签名期望前两个参数是几何体或地理数据类型,因此我非常确定解决方案是将纬度/液化天然气坐标转换为地理坐标,但我无法让它工作。 以下是不起作用的: 我得到这个错误: 错误:函数st_geogfromtext(未知)不存在 第1行:从ST_DWithin(ST_GeogFro
问题内容: 我有一个类型为(com.vividsolutions.jts.geom.Geometry)的几何对象。它目前是经度,纬度形式,我想翻转坐标,使其经度为纬度,这样我就可以将其以GeoJSON格式用于mongodb。 我看到的约束是:a)我想翻转坐标的输入是Geometry对象。b)几何对象将是多边形类型或多多边形。c)我想在将类型强制转换为Polygon / multipolygon之前
问题内容: 我有一个类型为(com.vividsolutions.jts.geom.Geometry)的几何对象。它目前是经度,纬度形式,我想翻转坐标,使其经度为纬度,这样我就可以将其以GeoJSON格式用于mongodb。 我看到的约束是:a)我想翻转坐标的输入是Geometry对象。b)几何对象将是多边形类型或多多边形。c)我想在将类型强制转换为Polygon / multipolygon之前