Poursuite du projet I previously described Je suis en train de créer une animation montrant le mouvement entre une liste de villes. Mon code actuel affiche une liste de villes et crée un ensemble de grands arcs de cercle reliant les villes. La liste des villes fait partie d'une chronologie, donc après avoir visité une ville, l'animation passera pour être centrée sur la suivante. À mon avis, cela signifie que le ViewVector devrait être ajusté pour montrer les points entre une ville de départ et une ville de départ. Le résultat ressemblerait probablement à une carte en vol pour un vol long-courrier accéléré considérablement. pourrait ressembler à ce qui suit produit manuellement une seule image fixe:Transition ViewVector entre deux coordonnées sphériques sur un globe
Je comprends maintenant comment positionner le ViewVector au-dessus de la dernière ville, mais je suis tout à fait incertain sur la façon de déplacer la caméra en douceur entre deux coordonnées sphériques points. Mon code actuel est ci-dessous:
SC[{lat_, lon_}] := {Cos[lon \[Degree]] Cos[lat \[Degree]],
Sin[lon \[Degree]] Cos[lat \[Degree]], Sin[lat \[Degree]]};
GreatCircleArc[{lat1_, lon1_}, {lat2_, lon2_}] :=
Module[{u = SC[{lat1, lon1}], v = SC[{lat2, lon2}], a},
a = VectorAngle[u, v];
Table[Evaluate[RotationTransform[\[Theta], {u, v}][u]], {\[Theta],
0, a, a/Ceiling[10 a]}]]
CityGraphic[name_] := {Opacity[0.85], Black, PointSize[Medium], White,
PointSize[0.045], Point[1.01 SC[CityData[name, "Coordinates"]]]}
CityGraph[places_, age_] :=
Graphics3D[{
Opacity[0.75],
Sphere[{0, 0, 0}, 0.99 ],
Map[Line[
Map[SC,
CountryData[#, "SchematicCoordinates"], {-2}]] &,
CountryData["Countries"]],
Map[CityGraphic, places],
Text[Style[age, FontFamily -> "Helvetica"],
1.02 SC[CityData[First[places], "Coordinates"]]],
White, Line
[Apply[GreatCircleArc,
Partition[Map[CityData[#, "Coordinates"] &, places], 2, 1], {1}]]
},
ViewVector -> {
4 SC[CityData[First[places], "Coordinates"]], {0, 0, 0}},
Boxed -> False,
SphericalRegion -> True,
ImageSize -> {640, 480}
];
CityGraph[{"Tokyo", "Dublin", "Cape Town", "Seattle", "Denver"}, "04"]
+1. Intéressant, jamais pensé à ça. Pour un point sur une sphère, cela doit être lié à l'homomorphisme de 'SU (2)' à 'SO (3)'. –