2016-12-08 9 views
0

私は、8点が直線で動いているが、エッジを丸く回転させているYouTubeビデオを作り直さなければならなかった。私は最終的にプログラムを作ったが、私はそれを一般化しようとしているので、別の形で作ることができる。私が以前に持っていたコードを使用しましたが、コードで動作する順序付きペアを作るのに問題があります。私がコンパイルするたびに、ポイントをペアにしなければならないというエラーが出ますが、2つのテーブルをペアにする方法を理解することはできません。あなたはスコープの問題を抱えているmathematicaの2つのテーブルから順序付けられたペアを作る

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

、アニメーションイテレータtx1t,y1tのグローバルtと同じではありません。これは動作します:

Animate[Show[pcircle, 
    Graphics[{PointSize[Large], Black, 
    Point[Dynamic[{Flatten[{x1t,y1t}/. t -> ta, {2}]}]]}]], {ta, 0, 2 \[Pi], 
    AppearanceElements -> None}] 

あなたもどこでもx1t[t]を使用して、その後t

x1t[t_] = ... 

x1t明示的に機能させることにより、この問題を解決することができます。

関連する問題