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