SHOW:
|
|
- or go back to the newest paste.
1 | loxodrome[\[Lambda]_, m_, \[Lambda]0_] := {Cos[\[Lambda]]/ | |
2 | Cosh[m (\[Lambda] - \[Lambda]0)], Sin[\[Lambda]]/ | |
3 | Cosh[m (\[Lambda] - \[Lambda]0)], Tanh[m (\[Lambda] - \[Lambda]0)]}; | |
4 | proj[{x_, y_, z_}] := {x/(1 - z), y/(1 - z)}; | |
5 | frame[\[Theta]_] := Rasterize@Module[{m, pp, umax, pr}, | |
6 | m = 0.45; | |
7 | pp = 30; | |
8 | umax = 0.8; | |
9 | range = 2.8; | |
10 | pr = {{-range, range}, {-range, range}, {-1.1, 1.1}}; | |
11 | texture = ParametricPlot[ | |
12 | proj[ | |
13 | RotationMatrix[\[Theta] + 0.5, {1, 0, 0}].RotationMatrix[ | |
14 | u, {0, 0, 1}].loxodrome[\[Lambda], m, 0]] | |
15 | , {u, 0, umax}, {\[Lambda], -10, 10}, PlotRange -> 3, | |
16 | Mesh -> False, | |
17 | PlotStyle -> Directive[RGBColor[0.15, 0.18, 0.5], Opacity[0.5]], | |
18 | BoundaryStyle -> None, Frame -> None, Axes -> None, | |
19 | PlotPoints -> pp, Background -> RGBColor[0.8, 0.8, 0.9]]; | |
20 | Show[ | |
21 | Graphics3D[{RGBColor[0.1, 0.6, 0.7], Opacity[0.2], Sphere[], | |
22 | {Opacity[1.0], Texture[texture], | |
23 | Polygon[{{-3, -3, -1}, {3, -3, -1}, {3, 3, -1}, {-3, 3, -1}}, | |
24 | VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]} | |
25 | }, Lighting -> "Neutral", PlotRange -> pr, Boxed -> False], | |
26 | ParametricPlot3D[ | |
27 | { | |
28 | RotationMatrix[\[Theta] + 0.5, {1, 0, 0}].RotationMatrix[ | |
29 | u, {0, 0, 1}].loxodrome[\[Lambda], m, 0] | |
30 | } | |
31 | , {\[Lambda], -10, 10}, {u, 0, umax}, PlotRange -> pr, | |
32 | PlotPoints -> pp, Mesh -> False, PlotStyle -> Darker@Red, | |
33 | BoundaryStyle -> None], ImageSize -> 300] | |
34 | ]; | |
35 | frame[1.07] |