回転変換は、forループ処理では動作しません

Phani Rithvij:

これは私が描くつもり私が書いたコードであるn1点から始まる行を。それぞれが角度によって分離しました2*PI / n

int n;

void setup(){
  size(displayWidth, displayHeight);
  n = 7;
}
void draw(){
    background(0);
    push();
    translate(displayWidth/2, displayHeight/2);
    strokeWeight(4);

    for (int i=0; i < n; i++){
      stroke(random(255), random(255), random(255));
      //println(i);
      //println("theta is", i*(2*PI/n));
      //println("theta in deg is", i*(2*PI/n)*180/PI);
      rotate(i*(2*PI/n));
      line(0, 0, 400, 0);
    }
    //noLoop();
    pop();
}

void keyPressed(){
  if (key == '='){
    n++;
  } else if (key == '-'){
    n--;
    if (n <= 0) n = 1;
  } 
}

それが動作しないよう何らかの理由でそれの間違いましたn=3,5,6,7,9,10..

nがある場合にのみ働いている1,2,4,8,16,32...すなわちにのみ2倍。

私が何か間違ったことしなければなりません。すべてのヘルプは大歓迎しました。

それが働いているのに対し、私は通常の三角法を行う場合。

置換することにより、すなわち

      rotate(i*(2*PI/n));
      line(0, 0, 400, 0);

沿って

      line(0, 0, 400 * cos(i*(2*PI/n)), 400 * sin(i*(2*PI/n)));

使用して、-, =キーのスパイク数を変更します。

YOUSFIモハメド・ワリド:

押すだけでループのためのあなたの内部の回転を囲むと、あなたがローテーションに各反復をリセットするこの方法をポップ、私はそれを試してみましたが、そのここで働くことは結果のコードです

   int n;

void setup(){
  size(displayWidth, displayHeight);
  n = 7;
}
void draw(){
    background(0);
    push();
    translate(displayWidth/2, displayHeight/2);
    strokeWeight(4);

    for (int i=0; i < n; i++){
      stroke(random(255), random(255), random(255));
      //println(i);
      //println("theta is", i*(2*PI/n));
      //println("theta in deg is", i*(2*PI/n)*180/PI);
      push();
      rotate(i*(2.0*PI)/n);
      line(0, 0, 400, 0);
      pop();
    }
    pop();

}

void keyPressed(){
  if (key == '='){
    n++;
  } else if (key == '-'){
    n--;
    if (n <= 0) n = 1;
  } 
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=316633&siteId=1
おすすめ