从上方查看城市的坐标

spe*_*ool 5 wolfram-mathematica

作为一个小项目,我一直在考虑创建一个类似Google Earth的动画.我希望在将地球旋转到各个城市的中心时播放时间轴.目前,我可以使用默认视图设置来渲染具有由点指示的城市的地球.

在此输入图像描述

当我尝试使用俯视城市的视图向量(例如丹佛)来定位摄像机时,我最终得到以下信息:

在此输入图像描述

需要针对地球上空的某些点计算ViewVector.然而,我的试验并没有达到任何形式的连贯观点,而大多数人看起来都像是在"全球"内部.

我需要帮助的是一个功能,给定城市的纬度和经度选择ViewVector将城市放置在摄像机视图的"中心".产生"全球内部"视图的代码如下:

SC[{lat_, lon_}] := {Cos[lon \[Degree]] Cos[lat \[Degree]], 
   Sin[lon  \[Degree]] Cos[lat  \[Degree]], Sin[lat \[Degree]]};

Graphics3D[{
  Opacity[0.75],
  Sphere[{0, 0, 0}, 0.99 ],
  Map[Line[
 Map[SC,
  CountryData[#, "SchematicCoordinates"], {-2}]] &,
   CountryData["Countries"]], {Yellow, PointSize[Medium],
   Point[SC[CityData["Denver", "Coordinates"]]]
   }
  },
 Boxed -> False,
 SphericalRegion -> True,
 ViewVector -> {{0, 0, 0}, SC[CityData["Denver", "Coordinates"]]}
 ]
Run Code Online (Sandbox Code Playgroud)

Hei*_*ike 10

ViewVector在表格中使用时ViewVector->{v1, v2},相机坐在点上v1并指向方向v2.因此,在您的示例中,相机将位于原点并指向丹佛的方向,从而产生"内部地球"视图.为了让相机俯视丹佛,相机应该坐在城市正上方的一个点上,例如在2 SC[CityData["Denver", "Coordinates"] 并指向原点,所以ViewVector会像

ViewVector -> {2 SC[CityData["Denver", "Coordinates"]], {0, 0, 0}}
Run Code Online (Sandbox Code Playgroud)

有了这个设置,ViewVector视图变得类似

在此输入图像描述