takashi42332007-05-18

今日はControl->LogicalOperatorsについてです.
Logical Operatorsとは,"and"や"or"などの論理演算子の事です.この論理演算子を用いた単純な関係状態を組み合わせることによって,より複雑な論理式を表現する事が出来ます.また"not"オペレーションは,boolean状態を否定するときに使います.
一般的な言語と同様に "and"は&&と,"or"は||と記します.

if (i >= 35){
  if (i <= 100){
    .....
  }
}

と書かないで,

if ((i >= 35) && (i <= 100)){
  .....
}

と書きましょうという事ですね.Processingにはboolean型もちゃんと用意されていて,

boolean op = false;

といったように定義する事ができます.


それでは,コードを読んでいきます.このコードは,画面に水平線を5メモリ刻みで引いていく物です.その際に,35より上で100未満であれば,その水平線上のx座標が5から95までの間に線を引きます.逆に,35以下で100以上であれば,その水平線上のx座標が105から195までの間に線を引きます.ここまでが前半部分.

さらに線を引くときに記録しておいたopがtureであれば,水平線上の真ん中に黒い点を打ちます.逆にopがfalseであれば,水平線上の50(width = 200 / 4)の位置に白い点を打ちます.

という事をしています.

size(200, 200);
background(126);

毎度おなじみの前処理,ウィンドウのsizeを指定して,背景色を決める.

boolean op = false;

boolean変数opをfalseで初期化して定義.

for(int i=5; i<=195; i+=5) { //y座標を5から5間隔で195まで順次処理して行きます.
  stroke(0);         //枠なし設定
  if((i > 35) && (i < 100)) {  // AND演算子の使用例
    line(5, i, 95, i);          //もし条件(iが35未満で100より上)に合えば,
                  //その位置にx座標が5から95までの水平線を引く
    op = false;                 //そして,opはfalseにしておく
  }
  

  stroke(76);           //ふちの色はgrayscaleで76に設定
  if((i <= 35) || (i >= 100)) { //OR演算子の使用例,もしiが35以上で,10以下であれば
    line(105, i, 195, i);        //その位置に,x座標が105から195までの水平線を引く
    op = true;                   //そしてopはtrueにしておく
  }

ここまでで,そのぞれの行の右側か左側に水平線が引かれたことになります.


ところで,Processingの座標系は,一般的なそれと同様に,画面左上を(0,0)とし,右に進めば,(1,0),(2,0)と,下に進めば(0,1),(0,2)といった形になっているようです.それでは,続きを読みましょう.

  if(op) {                   //opがtrueであれば.(if(op)とif(op == true)は同じ意味です.)
    stroke(0);               //枠の色は黒にして 
    point(width/2, i);       //現在処理中のy座標の水平線の真ん中に点を打ちます
  }
    
  if(!op) {                   //opがfalseであれは,(if(!op)とif(op == false)は同じ意味です. )
    stroke(255);              //枠の色を白にして
    point(width/4, i);        //現在処理中のy座標の水平線のx座標50(width / 4)の場所に点を打ちます.
  }
}

以上です.これでControlもおしまい.次は何にどれにしようかな...ちょっとダイナミックなのがいいなぁ〜とおもいつつ....