Я пытаюсь масштабировать свою геометрию, чтобы соответствовать реальному миру, масштабируемому на моей 3D-сцене.
Я получаю верхний левый угол моей карты и правый верхний угол моей карты.
Затем я конвертирую их в точки с помощью проекции карт Google, а затем вычитаю эти точки друг от друга, чтобы получить дельту карты.
Затем я использую это число и делю его по моей ограничительной рамке геометрии deltaX.
Проблема в том, что код не дает правильного масштабирования.
Чем больше я масштабирую карту, тем меньше масштабируется, и чем больше я уменьшаю масштаб, тем больше масштабируется. Это должно быть наоборот.
Я также не знаю, действительно ли это правильно масштабирует его, как это было бы в реальной жизни.Масштаб геометрии в реальном мире
Прямо сейчас я делаю это:
var bounds = MAP3D.map.getBounds();
var projection = MAP3D.map.getProjection();
var x1Length = projection.fromLatLngToPoint(new google.maps.LatLng(
bounds.getNorthEast().lat(),
bounds.getSouthWest().lng()
));
var x2Length = projection.fromLatLngToPoint(new google.maps.LatLng(
bounds.getNorthEast().lat(),
bounds.getNorthEast().lng()
));
var ThreeUnitsX = Math.abs(x2Length.x - x1Length.x);
if (
MAP3D.ObjectManager.WellList[i].LOD.objects[0]
.object.geometry.boundingBox == null
) {
MAP3D.ObjectManager.WellList[i].LOD.objects[0]
.object.geometry.computeBoundingBox();
}
var boundingBox = MAP3D.ObjectManager.WellList[i].LOD.objects[0]
.object.geometry.boundingBox;
var deltaX = boundingBox.max.x - boundingBox.min.x;
var scaleX = ThreeUnitsX/deltaX;
me.WellList[i].LOD.scale.set(scaleX, scaleX, scaleX);
Я хочу поблагодарить chandlerp
от #THREE.JS
ИРЦ за помощь мне много.