見出し画像

自己肯定感の重要性

自己肯定感って大事ですよね。

特に研究する中ではとても大事です。研究してるとたまに、

「データを守れ」

ということを耳にします。

データを取ってきた人以外は、基本的にそのデータを「間違ってんじゃないの?」というスタンスで攻撃してきます。そんなとき、自信なさげに「間違ってるのかも」と思ってしまうと終わりです。世紀の発見の可能性を秘めてるかもしれないデータは日の目を浴びず、パソコンの奥深くにお蔵入りです。誰も肯定してくれないんですもの。

だから、自信をもって、自己肯定感を高く保って「データを守る」というのは研究活動においてとても意味のあることなんですね。


前回の予告通りボール増やしてみました。わちゃわちゃしてカラフルでいいですね。増やし方は簡単で、配列に行を付け足しただけです。さすがIgorといったところか、ボールは100個とかあってもヌルヌル動いてくれます。いつかprocessingと対決させたいですね。

画像1

今回のコードはこんな感じです。

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座標としました。

次はボールどうしの反射を付けたいですね。散乱断面積とか求めてみたいな。


やった〜三日坊主は免れた〜〜〜

この記事が気に入ったらサポートをしてみませんか?