Я хочу, чтобы формула давала n-вектор (перпендикулярный к глобусу) от широты и долготы в сцене three.js. Мой код в настоящее время следующие, на основе списка городов (в таблице под названием «WUP»):Формула n-вектора из широты и долготы с объектами three.js
var conegeometry = new THREE.CylinderGeometry(0, 10, 10, 500, false);
var earthRadius = 6371; // kilometres
var réduc = 0.02;
for (var iter=1;iter<1693;iter++){
var cone = new THREE.Mesh(conegeometry, conematerial);
var lat = wup[iter].Latitude*Math.PI/180;
var lon = wup[iter].Longitude*Math.PI/180;
cone.position.set (
earthRadius * réduc * Math.cos(lat) * Math.cos(lon),
earthRadius * réduc * Math.cos(lat) * Math.sin(lon),
earthRadius * réduc * Math.sin(lat));
cone.rotation.set (
Math.sin(lat),
Math.cos(lat) * Math.sin(lon),
-Math.cos(lat) * Math.cos(lon));
scene.add(cone);
}
Формулы приходят из this article, p 402.
Моя цель состоит в том, чтобы все города были представлены в виде конусов с верхом в положении лат/лон, а остальные ниже поверхности земли и перпендикулярно поверхности земли (упрощенной как сфера). Широта и долгота поступают из набора данных городов ООН, кажутся очень чистыми и классическими по степеням.
Santiago Del Estero -27,79511 -64,26149
Yerevan 40,181998 44,514619
Adelaide -34,92866 138,59863
Но что-то не так в формулах вращения, и я не могу найти правильную настройку. Есть идеи?
Я попробовал инструкцию нашел [здесь] (http://www.smartjava.org/content/render-open-data-3d-world-globe-threejs), 'cone.lookAt (новый THREE.Vector3 (0,0,0)); который должен означать центр земного шара, но он не работает, конусы не выглядят в правильном направлении, они показывают свою сторону в центр земного шара :( –