hello, I’m new at this. can a rotating shape be moved with mouseX and mouseY?
Hello @Janoer,
Yes!
Look into the references for:
- translate()
 - pushMatrix()
 - rotate()
 - popMatrix()
 
Tutorial:
https://processing.org/tutorials/transform2d
Additional examples:
http://learningprocessing.com/examples/ See Chapter on transformations
:)
Thank you for helping me out! what if the shape rotate but when moved by mousex and mouse y, the shape doesn’t change? like this. and where should I put the mousex and mousey if i want like that

Hey, welcome to the forum!
It’s best when you post your code first
The general idea is
rectMode(CENTER);
translate (300,300);
rotate (mouseX); 
rect(0,0,60,20);
Example
void setup() {
  size(900, 900);
  rectMode(CENTER);
  background(0);
}
void draw() {
  background(0);
  push();
  translate (300, 300);
  rotate(map(mouseX,
    0, width,
    0, TWO_PI));
  rect(0, 0, 60, 20);
  pop();
}
            Thank you so much for helping me!
when you want to change both, pos and angle,
use left and right mouse button.
Of course you can change this, for example,
- click center of rect = change pos
 - click circle at the top = change angle
 - click corner = change size
 - I haven’t done this, code would be similar, except for 
mousePressed() 
// Demo for combining pos and angle of a rect, input by mouse drag.
// Use left and right mouse button and drag.
boolean holdLeft, holdRight;
float posx=300, posy=300, angle;
void setup() {
  size(900, 900);
  rectMode(CENTER);
  background(0);
}
void draw() {
  background(0);
  // Help Text
  text("Left mouse = drag pos, right mouse = drag angle",
    17, 17);
  // display rect
  push();
  translate (posx, posy);
  rotate(angle);
  rect(0, 0, 60, 20);
  pop();
  // dragging
  if (holdLeft) {
    // POS
    posx=mouseX;
    posy=mouseY;
  } else if (holdRight) {
    // angle
    angle=
      map(mouseX,
      0, width,
      0, TWO_PI);
  }
}
// ----------------------------------------------------------------------
void mousePressed() {
  // start dragging (pos OR angle)
  if (mouseButton == LEFT) {
    holdLeft=true;
    holdRight=false;
  } else if (mouseButton == RIGHT) {
    holdLeft=false;
    holdRight=true;
  }//else if
}//func
void mouseReleased() {
  // stop
  holdLeft=false;
  holdRight=false;
}
            I really thank you for helping me. May i ask again? How this sun has trails without having to move the background to void setup?
void setup() {
size (700,700);
}
void draw() {
  background(255);
stroke(0);
strokeWeight(3);
//sun
stroke(0);
fill(255,255,0);
ellipse(mouseX+150,mouseY-200,100,100);
            Thank you for the explanation! I have tried it, but there is an error. Here is the code
ArrayList<Ellipse> listFootprints = new ArrayList();
void setup() {
size (700,700);
smooth();
}
void draw() {
  background(255);
  // draw FootPrints
  drawFootPrints();
  // show size of the list (for testing)
  text(listFootprints.size(), 17, 17);
  //Draw Sun
  drawSun(mouseX, mouseY);
}
// ---------------------------------------------------------------------------------
void drawSun(float x, float y) {
  // draw Sun
  // store formatting
  push();
stroke(0);
strokeWeight(3);
//sun
stroke(0);
fill(255,255,0);
ellipse(mouseX+150,mouseY-200,100,100);
  // store footprints (from legs position)
  if (mouseX>0 && mouseY>0) {   // if mouse is there
    storeFootprints(x, y);
  }
  // restore formatting
  pop();
}
void storeFootprints( float x, float y ) {
  // first time we store the foot print
  if (listFootprints.size()==0) {
    listFootprints.add(new PVector(x+150, y-200));
 
    return; // leave
  }
  // After the first time we check if the last position was the same,
  // we store the foot print only when it's new:
  // last position:
 if (listFootprints.get(listFootprints.size()-2).x != x+150 || listFootprints.get(listFootprints.size()-2).y != y-200)
void drawFootPrints(){
  for (PVector pv : listFootprints) {
    noFill();
    ellipse(pv.x, pv.y, 2, 2);
    //ellipse(pv.x+3, pv.y+3, 2, 2);
    //ellipse(pv.x+3, pv.y-3, 2, 2);
  }
}
            [Mod edit: please avoid sharing full code solutions]
I’m much obliged for your help all this time!