試行錯誤の末、ようやく数学が正しく理解できたと思います。最初は、複雑なリストのセットとしてこれを開始しましたが、必要なものには配列関数の方が適していることがわかりました。
配列を確立したので、次の新しいエラーが発生します。
編集:
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
File "backandforth3.py", line 118, in (module)
frames.insert((x+f), (archstartred[x]))
TypeError: list index out of range
すべてのデータがすでに整数になっているとイライラしながらコンピューターに怒鳴りつけたので、コンピューターのモニターを惜しまず、ここで試してみようと思いました。これまでのところ、ここでのサポートはすべて素晴らしいものでした。
配列と配列のデータを生成する方法は次のとおりです。 編集: 非整数値を生成しているように見えるため、プログラム コードにリスト ジェネレーターを追加しました。
#List Generator
archstartred = []
archstartgrn = []
archstartblu = []
##Red List
for x in range (0, cursorsize):
if len(archstartred) < cursorsize:archstartred.insert(0,cursred)
for x in range (0, (archnodes-cursorsize)):
if len(archstartred) < archnodes:archstartred.append(backred)
##Green List
for x in range (0, cursorsize):
if len(archstartgrn) < cursorsize:archstartgrn.insert(0,cursgrn)
for x in range (0, (archnodes-cursorsize)):
if len(archstartgrn) < archnodes:archstartgrn.append(backgrn)
##Blue List
for x in range (0, cursorsize):
if len(archstartblu) < cursorsize:archstartblu.insert(0,cursblu)
for x in range (0, (archnodes-cursorsize)):
if len(archstartblu) < archnodes:archstartblu.append(backblu)
archstartred = [int(value) for value in archstartred]
archstartgrn = [int(value) for value in archstartgrn]
archstartblu = [int(value) for value in archstartblu]
#Frame Creation
from array import *
frames=array('i', (0 for i in range (0,workingframes*archnodes*3)))
#Frame Population
for f in range (0, workingframes):
if f<=(workingframes/2):
for x in range (0, (archnodes*3)):
frames.pop(x+f)
frames.insert((x+f), (archstartred[x]))
frames.pop((x+f)+workingframes)
frames.insert((x+f+workingframes), (archstartgrn[x]))
frames.pop((x+f)+workingframes*2)
frames.insert((x+f+workingframes*2), (archstartblu[x]))
for y in range (0, nodesperframe):
archstartred.pop()
archstartgrn.pop()
archstartblu.pop()
archstartred.insert(0, backred)
archstartgrn.insert(0, backgrn)
archstartblu.insert(0, backblu)
else:
for y in range (0, nodesperframe):
archstartred.pop(0)
archstartgrn.pop(0)
archstartblu.pop(0)
archstartred.append(backred)
archstartgrn.append(backgrn)
archstartblu.append(backblu)
for x in range (0, (archnodes*3)):
frames.pop(x+f)
frames.insert((x+f), (archstartred[x]))
frames.pop((x+f)+workingframes)
frames.insert((x+f+workingframes), (archstartgrn[x]))
frames.pop((x+f)+workingframes*2)
frames.insert((x+f+workingframes*2), (archstartblu[x]))
これは、他の投稿で扱ってきたのと同じプログラムです。基本的には、RGB 照明システムで使用するデータを生成することです。この「単純な」プログラムは、2 色を使用して前後の効果を生成します。その他の変数には、エフェクトにかかる時間の長さ、フレーム サイズ (「シーケンサー」を使用して表示を生成し、シーケンサーでフレーム サイズを変更できます)、「カーソル」サイズなどが含まれます。
もちろん、この効果が分かれば、数式に基づいてより複雑な効果を作成できるようになります。