# by 骁君

by：骁君

R = Sqrt[25^2 + 2.5^2]; data = Join[{2.5}, Table[Sqrt[R^2 - (i*2.5)^2] - Sqrt[R^2 - ((i + 1)*2.5)^2], {i, 9, 0, -1}]]; y = Accumulate[data]; x = Range[-25, 25, 2.5]; y = Join[y, Rest@Reverse[y]]; len = (120 - 2 y)/2; bianyuan = Join[#, {0}] & /@ Transpose[{x, y}]; temp2 = len - len[[1]]/2; f[\[Theta]_] := ( zhong = Join[#, {1/2 Cos[\[Theta]] len[[1]] + 2.5, 0.5*Sin[\[Theta]]*len[[1]]}] & /@ List /@ x; temp1 = MapThread[Norm[#1 - #2] &, {zhong, bianyuan}]; {duandian = bianyuan + MapThread[(#1 - #2)/Norm[#1 - #2] &, {zhong, bianyuan}]*len, zhong}); Animate[ Module[{h1, h2, duandian, zhong}, duandian = First[f[\[Theta]]]; zhong = Last[f[\[Theta]]]; h1 = Interpolation[ Transpose[{N@Range[0, 1, 1/(Length[duandian] - 1)], duandian}]]; h2 = Interpolation[ Transpose[{N@ Range[0, 1, 1/(Length[{#1, -#2, #3} & @@@ duandian] - 1)], {#1, -#2, #3} & @@@ duandian}]]; Show[Graphics3D[ Join[MapThread[ Line[{#1, #2}] &, {Join[#, {0}] & /@ Transpose[{x, y}], Join[#, {0}] & /@ Transpose[{x, -y}]}], MapThread[Line[{#1, #2}] &, {bianyuan, duandian}], MapThread[ Line[{#1, #2}] &, {{#1, -#2, #3} & @@@ bianyuan, {#1, -#2, #3} & @@@ duandian}], {Red, Point[duandian~Join~({#1, -#2, #3} & @@@ duandian)]}, {Red, Thick, Line[{First[zhong], Last[zhong]}]}, {Red, Thick, Line[{First[{#1, -#2, #3} & @@@ zhong], Last[{#1, -#2, #3} & @@@ zhong]}]}]], ParametricPlot3D[{h1[t], h2[t]}, {t, 0, 1}], PlotRange -> {{-70, 70}, {-70, 70}, {-3, 50}}, ViewPoint -> {2.85, -0.8, -1.6}, ViewVertical -> {0, 0, -1}]], {\[Theta], 0, 1.05}]

293 篇文章55 人订阅

0 条评论

291100

21650

73250

369110

19640

226100

2.2K20

37550

36670

31910