Koordinaten Transformationen: Ein Raumschiff wird um die eigene Achse rotiert

Aus DDSWiki
Wechseln zu: Navigation, Suche

Der Code zum selbst Ausprobieren

Raumschiff schiff = new Raumschiff(150,150, 15);
Raumschiff schiff2 = new Raumschiff(150,250, 15);
Raumschiff schiff3 = new Raumschiff(50,250, 15);


int winkel = 0;

void setup() {
  size(400,400);
  background(120);
}

void draw() {
  background(120);
  schiff.setRotation(winkel++);
  schiff.display();
  schiff2.setRotation(45+winkel++);
  schiff2.display();  
  schiff3.setRotation(45+winkel++);
  schiff3.setScale(1.2);
  schiff3.display();   
  delay(5);
}



class Raumschiff {
  int x, y;
  int hoeheSchiff;
  int rotation; // 0....360 Grad
  float scale_ = 1;
  
  Raumschiff(int x_, int y_, int h) {
    x = x_;
    y = y_;
    hoeheSchiff = h;
  }
  
  void setRotation(int r) {
    rotation = r;
  }
  
  void setScale(float s) {
    scale_ = s;
  }
  
  void display() {
    pushMatrix();
    translate(x, y);
    scale(scale_);
    rotate(radians(rotation));
    translate(-x, -y);
    triangle(x-hoeheSchiff, y-hoeheSchiff, x+hoeheSchiff, y-hoeheSchiff, x, y+hoeheSchiff);
    popMatrix();
  }
   
}