我不得不重新创建一个YouTube视频,该视频显示八个点以直线移动但是在边缘上滚动一个圆圈。我最终制定了这个程序,但是我试图将它概括为一般,所以我可以用不同的形状来制作它。我使用了以前的代码,但是我在编写一个可以使用代码的有序对时遇到了问题。每次我编译时都会收到一个错误,说这些点必须是有序对,但是我无法弄清楚如何使两个表成对排列。
p = 8; (*Number of points*)
\[Phi] = \[Pi]/p; (*Phase Shift*)
n = 1; \ (*Some integer*)
nump = 8; (* Number of points*)
total = nump - 1; (* Shift number of points by -1*)
w[t_] := t^n; (* Random angular frequency*)
\[Theta][q_] = \[Phi]*q;
A1[q_] := Cos[\[Theta][q]];
A2[q_] := Sin[\[Theta][q]];
x[t_] = A1[q]*Cos[w[t] + \[Theta][q]];
y[t_] = A2[q]*Cos[w[t] + \[Theta][q]];
x1t = Table[ A1[q]*Cos[w[t] + \[Theta][q]], {q, 0, total}];
y1t = Table[ A2[q]*Cos[w[t] + \[Theta][q]], {q, 0, total}];
(*mylist = Transpose[List[x1t,y1t]]*)
mylist = Flatten[{x1t, y1t}, {2}]
pcircle =
ParametricPlot[{Transpose[List[x1t, y1t]], {Cos[t], Sin[t]}}, {t, 0,
2 \[Pi]}, PlotLegends -> "Expressions"]
Animate[Show[pcircle,
Graphics[{PointSize[Large], Black,
Point[Dynamic[{Flatten[{x1t, y1t}, {2}]}]]}]], {t, 0, 2 \[Pi],
AppearanceElements -> None}]
答案 0 :(得分:0)
你有一个范围问题,动画迭代器t
与t
中的全局x1t,y1t
不同。这有效:
Animate[Show[pcircle,
Graphics[{PointSize[Large], Black,
Point[Dynamic[{Flatten[{x1t,y1t}/. t -> ta, {2}]}]]}]], {ta, 0, 2 \[Pi],
AppearanceElements -> None}]
您还可以通过明确x1t
t
来解决此问题
x1t[t_] = ...
然后到处使用x1t[t]
。