C++Guns – RoboBlog

25.10.2013

digitaler Kreis

Filed under: Allgemein — Thomas @ 16:10

Wie mancht man aus einem kontinuierlichen Kreis einen stetigen?


int offset = 10;

void resetFont() {
    if (isatty (fileno (stdout)))
        std::cout << "\e[0m";
}

void setFontRed() {
    if (isatty (fileno (stdout)))
        std::cout << "\e[1;31m";
}

void setFontGreen() {
    if (isatty (fileno (stdout)))
        std::cout << "\e[32m";
}

void setFontYellow() {
    if (isatty (fileno (stdout)))
        std::cout << "\e[33m";
}

void setFontBlue() {
    if (isatty (fileno (stdout)))
        std::cout << "\e[34m";
}

void setFont() {
    if (isatty (fileno (stdout)))
        std::cout << "\e[35m";
}

void gotoxy(int x,int y)
{
  printf("%c[%d;%df",0x1B,y,x);
}

void makeCircle(int radius, char c) {
  if(radius == 0) {
    gotoxy(offset, offset);
      cout << c;
  }
  else {
    int num = (radius+1) * 4;
    for(int i=0; i < num; i++) {
      int x = round(radius * cos(double(i) / num * 2 * M_PI));
      int y = round(radius * sin(double(i) / num * 2 * M_PI));
      gotoxy(x+offset, y+offset);
      cout << c;

    }
  }
}

int main() {

  char c = '0';
  
  int radius = 0;
  setFontRed();
  makeCircle(radius, c + radius);

  radius = 1;
  setFontGreen();
  makeCircle(radius, c + radius);

  radius = 2;
  setFontYellow();
  makeCircle(radius, c + radius);

  radius = 3;
  setFontBlue();
  makeCircle(radius, c + radius);

  radius = 4;
  setFont();
  makeCircle(radius, c + radius);
  
  resetFont();
  for(int i = 0; i < 10; i++) cout << endl;

return 0;
}


digitalerkreis

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress