Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将几何体缩放到真实世界_Javascript_Three.js - Fatal编程技术网

Javascript 将几何体缩放到真实世界

Javascript 将几何体缩放到真实世界,javascript,three.js,Javascript,Three.js,我正在尝试缩放我的几何体以适应真实世界缩放到我的3D场景。 我得到地图的左上角和右上角。 然后,我使用谷歌地图投影将这些点转换为点,然后将这些点相互减去,得到地图的增量。 然后我用这个数字除以我的几何体边界框deltaX。 问题是代码没有产生正确的缩放。 我越放大地图,缩放比例就越小,越缩小,缩放比例就越大。应该是相反的。 我也不知道这是否真的像在现实生活中那样正确地扩展它 现在我这样做: var-bounds=MAP3D.map.getBounds(); var projection=MAP3

我正在尝试缩放我的几何体以适应真实世界缩放到我的3D场景。
我得到地图的左上角和右上角。
然后,我使用谷歌地图投影将这些点转换为点,然后将这些点相互减去,得到地图的增量。
然后我用这个数字除以我的几何体边界框deltaX。
问题是代码没有产生正确的缩放。
我越放大地图,缩放比例就越小,越缩小,缩放比例就越大。应该是相反的。
我也不知道这是否真的像在现实生活中那样正确地扩展它

现在我这样做:

var-bounds=MAP3D.map.getBounds();
var projection=MAP3D.map.getProjection();
var x1Length=projection.fromLatLngToPoint(新的google.maps.LatLng(
bounds.getNorthEast().lat(),
bounds.getSouthWest().lng()
));
var x2Length=projection.fromLatLngToPoint(新的google.maps.LatLng(
bounds.getNorthEast().lat(),
bounds.getNorthEast().lng()
));
var ThreeUnitsX=Math.abs(x2Length.x-x1Length.x);
如果(
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=3Unitsx/deltaX;
me.WellList[i].LOD.scale.set(scaleX,scaleX,scaleX);
我要感谢
#THREE.JS
irc的
chandlerp
对我的帮助

应该是

var scaleX = deltaX / ThreeUnitsX ;
但只有当你的物体总是111公里长时,这才是正确的

var scaleX = deltaX / ThreeUnitsX ;