2011-10-04 12 views
5

Como un pequeño proyecto, he estado pensando en crear una pequeña animación similar a Google Earth. Quiero reproducir una línea de tiempo mientras gano el globo para centrarme en varias ciudades. En este momento puedo usar la configuración de vista predeterminada para renderizar un globo terráqueo con las ciudades indicadas por puntos.Viendo las coordenadas de una ciudad desde arriba

enter image description here

Cuando trato de orientar la cámara con un vector vista mirando hacia abajo en una ciudad (por ejemplo, de Denver), termino con lo siguiente:

enter image description here

Las necesidades ViewVector para ser calculado para un punto en el espacio sobre el globo. Sin embargo, mi prueba y error no ha llegado en ningún tipo de punto de vista coherente con la mayoría de los que parecen estar "dentro" del globo.

Lo que necesito ayuda es una función que, dada la latitud y la longitud de una ciudad, elige un ViewVector que coloca la ciudad en el "centro" de la vista de la cámara. El código que produjo el "interior del globo" vista sigue:

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"]]} 
] 
+1

Me recuerda a un vídeo de un colega hizo: http : //www.youtube.com/watch? v = U-4y0e1Jdcs –

Respuesta

10

Al utilizar ViewVector en forma ViewVector->{v1, v2}, la cámara está sentado en el punto v1 y apunta en la dirección de v2. Entonces, en su ejemplo, la cámara estaría ubicada en el origen y apuntando en la dirección de Denver, que produce la vista del "globo interior". Para que la cámara mire hacia abajo, en Denver, la cámara debe estar ubicada en un punto directamente sobre la ciudad, p. en 2 SC[CityData["Denver", "Coordinates"] y ser señalado en el origen, por lo ViewVector sería algo así como

ViewVector -> {2 SC[CityData["Denver", "Coordinates"]], {0, 0, 0}} 

Con esta configuración para ViewVector la vista se convierte en algo así como

enter image description here

Cuestiones relacionadas