公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+1 投票
5.3k 浏览

就是类似这样的效果

或者是类似马鞍面的生成动画(双曲线平移得到)

分类:绘图 | 用户: WMN7 (606 分)
说白了就是一笔一划的画出来。就像怎么写汉字,先写一横,再写一竖,再写一撇,再....。

3 个回答

+3 投票
 
已采纳

我画最简单的一个来抛砖引玉一下吧

pics = Table[
   Show[Graphics[{Circle[], Line[{{0, 0}, pst = {Cos[t], Sin[t]}}], 
      Arrow[{pst, {2, Last[pst]}}]}, ImageSize -> {Automatic, 200}], 
    Plot[Sin[4 (x - 2 + t/4)], {x, 2, 2 + Pi/2}]], {t, 0, 2 Pi, .05}];
Export["test.gif", pics]

用户: Lozmlve*永 (1.2k 分)
采纳于 用户:WMN7
想问一下,旁边对应的Sin函数是怎么确定的
本来应该是Sin的,但2Pi太长了,为了好看,所以缩了4倍
我的意思是要是变成了两个圆,怎么知道生成的函数是什么,两个圆旋转速度不一样生成的函数也是不一样的
我抛的是砖而已,你问的是玉 :)
oo,我自己再去看看,主要现在是我可以让两个圆动,但是不知道对应的函数是什么
+1 投票

http://blog.csdn.net/WinsenJiansbomber/article/details/50769511

Module[{x, y, t, s}, t = 0; s = 1.2;
 Column[{Slider[Dynamic[s], {1, 2}];
   Dynamic[Graphics[{
      {LightBlue, 
       Rectangle[{-Dynamic[s], -Dynamic[s]}, {Dynamic[s], 
         Dynamic[s]}]},
      Point[{1.2, y}], 
      Text[Style["by Jimbowhy", 18], { 2.6, -1}],
      Text[Style["(x,y) Sin(θ)=y/r", 18], {1.1 x, 1.1 y}], 
      Text[Style["r", 18], { 2 x/5, y/2}],
      Text[Style["θ", 18], {Cos[t/2]/4, Sin[t/2]/4}],
      Circle[{0, 0}, 0.3, {0, t}],
      {Thin, Dashed, Line[{{x, y}, {1.2, y}}]},
      Plot[Sin[-2 (z - 1.2) + t], {z, 1.2, 2 π + 1.2}][[1]],
      {Thin, Arrowheads[0.05], Arrow[{{0, 0}, {x, y}}]},
      {Thin, Dashed, Line[{{0, y}, {x, y}}]}, {Thin, Dashed, 
       Line[{{x, 0}, {x, y}}]},
      {Thin, Line[{{-1, 0}, {3.8, 0}}]}, {Thin, 
       Line[{{0, 1}, {0, -1}}]},
      Circle[{x = Cos[t], y = Sin[t = If[t >= 2 π, 0, t + 0.02]]},
        0.0]
      }, PlotRange -> {{-1.2, 4}, {-1.2, 1.2}}, 
     ImageSize -> {480, 220}]]
   }]]

 

用户: mma-2-2-2 (1.3k 分)
0 投票
n = 5;
colors = RandomColor[n];
calAngle[p_] := ArcCos[p.{1, 0}] Sign[Cross[p].(p - {1, 0})];
DynamicModule[{p = {1, 0}},
 LocatorPane[Dynamic[p, (p = Normalize@#) &], 
  Dynamic[r[n_][p_] := 
    1/(2 n - 1) {Cos[(2 n - 1) calAngle@p], Sin[(2 n - 1) calAngle@p]};
   positions = Accumulate[r[#][p] & /@ Range[n + 1]];
   arrowseries = Partition[positions, 2, 1];
   pointseries = Accumulate[r[#][p] & /@ Range[n]];
   radios = 1/(2 # + 1) & /@ Range[n];
   Show[
    Graphics[{Red, PointSize[0.015], Point[Last@positions]}],
    Graphics[{Arrow[{{0, 0}, p}], Circle[{0, 0}, 1]}],
     Graphics[{Arrowheads[0.025], Arrow /@ arrowseries}],
    Graphics[MapThread[Circle][{pointseries, radios}]]]
   ]]]

n = 10;
calAngle[p_] := ArcCos[p.{1, 0}] Sign[Cross[p].(p - {1, 0})];
DynamicModule[{p = {1, 0}}, 
 LocatorPane[Dynamic[p, (p = Normalize@#) &], 
  Dynamic[r[n_][p_] := 
    1/(2 n - 1) {Cos[(2 n - 1) calAngle@p], Sin[(2 n - 1) calAngle@p]};
   f[n_][\[Theta]_] := 1/(2 n - 1) Sin[(2 n - 1) \[Theta]];
   positions = Accumulate[r[#][p] & /@ Range[n + 1]];
   arrowseries = Partition[positions, 2, 1];
   pointseries = Accumulate[r[#][p] & /@ Range[n]];
   radios = 1/(2 # + 1) & /@ Range[n];
   fun[\[Theta]_] := Total[f[#][\[Theta]] & /@ Range[n + 1]];
   Show[Graphics[{Red, 
      Line[{Last@positions, {3, Last@Last@positions}}]}], 
    Plot[fun[\[Theta] + calAngle[p] - 3], {\[Theta], 3, 10}, 
     PerformanceGoal -> "Quality"], 
    Graphics[{Red, PointSize[0.015], Point[Last@positions]}], 
    Graphics[{Arrow[{{0, 0}, p}], Circle[{0, 0}, 1]}], 
    Graphics[{Arrowheads[0.015], Arrow /@ arrowseries}], 
    Graphics[MapThread[Circle][{pointseries, radios}]], 
    ImageSize -> Full]]]]

用户: cvgmt (276 分)
修改于 用户:cvgmt
...