
[code]

    int leftCenterX = 150;
    int orbitRad = 100;
    int satelliteDia = 30;
    int X = leftCenterX, Y = 240;
    int angle = 0;
    int speed = 1;
    
    void draw(){
      background(255);
      fill(255, 255, 255);
      stroke(0);
      ellipse(leftCenterX, Y, orbitRad * 2, orbitRad * 2);
      ellipse(leftCenterX + orbitRad * 2, Y,orbitRad * 2, orbitRad * 2);
      fill(0, 0, 255);
      noStroke();
      if(angle >= 360){
        println("left_to_right");
        speed = -speed;
        angle = 180;
        X = leftCenterX + orbitRad * 2;
      }
      if(angle <= -180){
        println("right_to_left");
        speed = -speed;
        angle = 0;
        X = leftCenterX;
      }
    
      ellipse(cos(radians(angle)) * orbitRad + X,
              sin(radians(angle)) * orbitRad + Y,
              satelliteDia, satelliteDia);
      angle = angle + speed;
    }
    
[/code]

このコードの単語の意味はわかるのですが、総合的に見た時にどことどこがリンクしているのかがわからないです。これをプレビューした時に２つの円の上を青い点が動くのですが、なぜこの２つの円の上を通っているのかがわかりません。  
どなたかよろしくお願いします。


CC BY-SA 3.0
2016-06-09T06:46:09.310
26579
2016-06-09T10:23:52.700
2016-06-09T10:03:09.867
15185
16803
question
objective-c iphone
コードが分かりません


質問のポイントが分からない、実行環境が分からない、ので動かすことができませんでしたが、コードをみた感じで少し挙動を説明します。

おそらく実行すると白い円が左右に２つ、その円周にそって青い円が描画されると思います。青い円は左側の白い円に沿って動き、一周すると次は右の白い円に沿って動く、というのを繰り返すのではないでしょうか。

白い円は固定位置で毎回描画、青い円は、白い円の周りに沿うように座標を計算して描画してるだけです。

この処理のひとつの軸になるのが「angle」で、まず 0
から始まり360まで1ずつ増加します。この間は、左側の白い円に沿って移動します。360を超えると、angleには180がセットされ、今度は
180から−180まで 1ずつ減っていきます。この間は、右側の円周に沿って移動します。同じく一周すると angleは
0にリセットされ、最初の状態に戻ります。（また左の円周に沿って移動し始める）

２つの「if」文で、１周したか判定して、次の円に移る（ように見える）処理をしています。「円周に沿って移動」の座標計算は sin/cos
を使っています。右の円／左の円の切り替えは「X」変数によって変わっています。


CC BY-SA 3.0
2016-06-09T10:23:52.700
26586
2016-06-09T10:23:52.700
2079
26579
answer