Guest User

conic section

a guest
Apr 11th, 2020
1,881
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. c = 1.;
  2. a = 3.5;
  3. freq = .2;
  4. v = 1.4;
  5. n = 20;
  6. maxT = 30.;
  7. \[Alpha]Iso = 0.615479708;
  8.  
  9. smoothstep[t_] :=
  10. If[t < 0, 0, If[t > 1, 1, 6 t^5 - 15 t^4 + 10 t^3]];
  11. t0 = 20.;
  12. t1 = 40.;
  13. t2 = 45.;
  14. t3 = 55.;
  15. \[Alpha][t_] :=
  16. Pi/2 (1 - smoothstep[(t - t0)/(t1 - t0)]) +
  17. smoothstep[(t - t0)/(t1 - t0)] \[Alpha]Iso;
  18. \[Beta][t_] := -smoothstep[(t - t0)/(t1 - t0)] N[Pi/6] -
  19. Pi smoothstep[(t - t2)/(t3 - t2)]/2;
  20. \[Gamma][t_] := 0;
  21. z[t_] := 0.5 (1 - smoothstep[(t - t0)/(t1 - t0)]) +
  22. 0.2 smoothstep[(t - t0)/(t1 - t0)];
  23. offset[t_] := (
  24. {0, -15,
  25. 0} (smoothstep[(t - t0)/(t1 - t0)] -
  26. smoothstep[(t - t2)/(t3 - t2)]) +
  27. {15, 0, 0} smoothstep[(t - t2)/(t3 - t2)]
  28. );
  29. proj[p_, t_] :=
  30. With[{\[Alpha] = \[Alpha][t], \[Beta] = \[Beta][
  31. t], \[Gamma] = \[Gamma][t], z = z[t]},
  32. ({{Cos[\[Beta]] Cos[\[Gamma]] -
  33. Sin[\[Beta]] Sin[\[Gamma]], -Cos[\[Gamma]] Sin[\[Beta]] -
  34. Cos[\[Beta]] Sin[\[Gamma]],
  35. 0}, {Cos[\[Alpha]] Cos[\[Gamma]] Sin[\[Beta]] +
  36. Cos[\[Alpha]] Cos[\[Beta]] Sin[\[Gamma]],
  37. Cos[\[Alpha]] Cos[\[Beta]] -
  38. Cos[\[Alpha]] Sin[\[Beta]] Sin[\[Gamma]], -Sin[\[Alpha]]}, \
  39. {Cos[\[Gamma]] Sin[\[Alpha]] Sin[\[Beta]] +
  40. Cos[\[Beta]] Sin[\[Alpha]] Sin[\[Gamma]],
  41. Cos[\[Beta]] Cos[\[Gamma]] Sin[\[Alpha]] -
  42. Sin[\[Alpha]] Sin[\[Beta]] Sin[\[Gamma]],
  43. Cos[\[Alpha]]}}.(p - offset[t]))[[{1, 3}]]*z
  44. ];
  45. d\[Theta] = 2 Pi / 32;
  46. w = 60;
  47. nGrid = 7;
  48. frame[t_] := (Show[
  49. Graphics[{
  50. White,
  51. PointSize[Large],
  52. Point[proj[{a, 0, 0}, t]],
  53. {
  54. GrayLevel[0.4],
  55. Thickness[0.002],
  56. Opacity[smoothstep[(t - t0)/(t1 - t0)]],
  57. Table[
  58. Line[{proj[{x, -w, -maxT v}, t], proj[{x, w, -maxT v}, t]}],
  59. {x, -w, w, w/nGrid}
  60. ],
  61. Table[
  62. Line[{proj[{-w, y, -maxT v}, t], proj[{w, y, -maxT v}, t]}],
  63. {y, -w, w, w/nGrid}
  64. ]
  65. },
  66. If[c t > a,
  67. {
  68. Opacity[0.6 smoothstep[(t - t0)/(t1 - t0)]],
  69. FaceForm[White],
  70. Polygon[Join[
  71. Table[
  72. proj[{tt , Sqrt[4 a tt], -v (tt + a)/c}, t]
  73. , {tt, 0, c Min[ t, maxT] - a, 0.01}],
  74. Reverse@Table[
  75. proj[{tt , -Sqrt[4 a tt], -v (tt + a)/c}, t]
  76. , {tt, 0, c Min[ t, maxT] - a, 0.01}]
  77. ]
  78. ]
  79. },
  80. {}],
  81. Table[
  82. {
  83. Opacity[0.5 smoothstep[(t - t0)/(t1 - t0)]],
  84. ColorData["StarryNightColors"][0.5 + 0.5 Cos[\[Theta]]],
  85. Polygon[{
  86. proj[{a, 0, 0}, t],
  87.  
  88. proj[{a, 0, -v maxT} +
  89. c maxT {Sin[\[Theta]], Cos[\[Theta]], 0}, t],
  90.  
  91. proj[{a, 0, -v maxT} +
  92. c maxT {Sin[\[Theta] + d\[Theta]],
  93. Cos[\[Theta] + d\[Theta]], 0}, t]
  94. }]
  95. },
  96. {\[Theta], 0, 2 Pi - d\[Theta], d\[Theta]}
  97. ],
  98. If[c t > a,
  99. {
  100. Thickness[0.006], RGBColor[0.98, 0., 0.],
  101. Line[Table[
  102. proj[{tt , Sqrt[4 a tt], -v (tt + a)/c}, t]
  103. , {tt, 0, c Min[ t, maxT] - a, 0.01}]],
  104. Line[Table[
  105. proj[{tt , -Sqrt[4 a tt], -v (tt + a)/c}, t]
  106. , {tt, 0, c Min[ t, maxT] - a, 0.01}]
  107. ]
  108. },
  109. {}],
  110. Table[
  111. Module[{tt = Min[maxT, t - i / freq]},
  112. {
  113. Opacity[1 - smoothstep[(t - t2)/(t3 - t2)]],
  114. {
  115.  
  116. EdgeForm[
  117. Directive[Opacity[1 - smoothstep[(t - t2)/(t3 - t2)]],
  118. White]], FaceForm[],
  119. If[c tt > 0,
  120.  
  121. Polygon[
  122. Table[proj[{a, 0, -v tt} +
  123. c tt {Sin[\[Theta]], Cos[\[Theta]], 0}, t], {\[Theta],
  124. 0, 2 Pi - 0.1, 0.1}]],
  125. {}
  126. ]
  127. },
  128. Line[{proj[{-a + c tt, -20, -v tt}, t],
  129. proj[{-a + c tt, 20, - v tt}, t]}],
  130. If[c tt > a,
  131. {
  132. White,
  133. Point[proj[{c tt - a , -Sqrt[4 a (c tt - a)], -v tt}, t]],
  134. Point[proj[{c tt - a , Sqrt[4 a (c tt - a)], - v tt}, t]]
  135. }
  136. ]
  137. }
  138. ],
  139. {i, 0, n - 1}
  140. ]
  141. },
  142. PlotRange -> 10, Background -> Black, ImageSize -> 500
  143. ]
  144. ]
  145. );
  146. Manipulate[
  147. frame[t],
  148. {{t, 55}, 0, 55}]
Advertisement
Add Comment
Please, Sign In to add comment