从mathematica中的两个表格中制作有序对

时间:2016-12-08 01:09:33

标签: wolfram-mathematica

我不得不重新创建一个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}]

1 个答案:

答案 0 :(得分:0)

你有一个范围问题,动画迭代器tt中的全局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]