自己肯定感の重要性
自己肯定感って大事ですよね。
特に研究する中ではとても大事です。研究してるとたまに、
「データを守れ」
ということを耳にします。
データを取ってきた人以外は、基本的にそのデータを「間違ってんじゃないの?」というスタンスで攻撃してきます。そんなとき、自信なさげに「間違ってるのかも」と思ってしまうと終わりです。世紀の発見の可能性を秘めてるかもしれないデータは日の目を浴びず、パソコンの奥深くにお蔵入りです。誰も肯定してくれないんですもの。
だから、自信をもって、自己肯定感を高く保って「データを守る」というのは研究活動においてとても意味のあることなんですね。
前回の予告通りボール増やしてみました。わちゃわちゃしてカラフルでいいですね。増やし方は簡単で、配列に行を付け足しただけです。さすがIgorといったところか、ボールは100個とかあってもヌルヌル動いてくれます。いつかprocessingと対決させたいですね。
今回のコードはこんな感じです。
Function Main()
Newmovie/O/F=30/Z //動画の開始
Setup()
Initialize_Variables(30,100) //(ボールの数,時間)
closemovie
end
//_構造体
Structure myVariable
double MovieTime
variable vector_x[100],vector_y[100] //各ボールに速度を与えるため配列にした
double BallNumber //ボールの数
Wave w_x,w_y
endstructure
Function Initialize_Variables(variable BallNumber,variable MovieTime)
STRUCT myVariable mv //構造体の導入
variable i
string BallName
mv.MovieTime = MovieTime
mv.BallNumber = BallNumber
make/O/N=(BallNumber) Pos_X,Pos_Y //ボールの生成
//___ボールを画面へ追加
for(i=0;i<BallNumber;i++)
Pos_X[i] = enoise(1)
Pos_Y[i] = enoise(1)
BallName = "ball_"+num2str(i) //ボールの名前
AppendtoGraph/W=PosDisplay/C=(abs(enoise(65535)),abs(enoise(65535)),abs(enoise(65535))) Pos_Y[i,i]/TN=$BallName vs Pos_X[i,i]
endfor
ModifyGraph mode=3,marker=19,msize=10
move(mv) //move()に構造体を代入
end
//___画面の生成
Function Setup()
make/O/N=1 dummy
dowindow/K PosDisplay
dowindow/F PosDisplay
Display/W=(30,30,430,430)/N=PosDisplay dummy
ModifyGraph hideTrace(dummy)=1,tick=3,mirror=1,noLabel=1,margin=28
Setaxis Left -10,10
Setaxis bottom -10,10
End
Function move(mv)
STRUCT myVariable &mv //構造体の解放
variable t,i
Wave Pos_X,Pos_Y
for(t=0;t<mv.MovieTime;t++)
for(i=0;i<mv.BallNumber;i++)
//___各ボールの初期速度
if(t == 0)
mv.vector_x[i] = enoise(1)
mv.vector_y[i] = enoise(1)
endif
//____各ボールの位置更新
Pos_X[i] += mv.vector_x[i]
Pos_Y[i] += mv.vector_y[i]
if(Pos_X[i] > 10 || Pos_X[i] < -10)
mv.vector_x[i] = mv.vector_x[i]*-1
elseif(Pos_Y[i] > 10 || Pos_Y[i] < -10)
mv.vector_y[i] = mv.vector_y[i]*-1
endif
endfor
doupdate/W=PosDisplay/E=1 //画面の更新
AddMovieframe //動画フレームの追加
endfor
end
move()にて、前回まではPos_X[0]となっていたのがPos_X[i]となっているのが分かりますかね?Pos_Xという配列に行を追加して、あるi行目の数字をボールiのx座標としました。
次はボールどうしの反射を付けたいですね。散乱断面積とか求めてみたいな。
やった〜三日坊主は免れた〜〜〜