Your problem is that you are calling translate(), but then trying to draw at the mouse positions on top of that. So essentially you're drawing the image at the coordinates of mouseX and mouseY, but then you're moving the image width/2 and height/2 pixels away from that position.
So if you want your image to draw at the coordinates of your translation, you have to tell image() to draw at coordinates 0, 0. That way your image is drawn at the origin, then translated to the desired location. Since you want to draw the image at the mouse location, you'll want to call translate(mouseX, mouseY);
So the simple fix to all of this is:
Code:
PImage img3;
float rot=0;
void setup()
{
size(500,500);
img3 = loadImage("innenkreis2.png");
}
void draw()
{
background(1.5);
//translate(width/2, height/2); <--- YOUR OLD CALL TO translate()
translate(mouseX, mouseY); // CORRECT CALL TO translate()
rotate(rot);
//image(img3,mouseX,mouseY); <--- YOUR OLD CALL TO image()
image(img3, 0, 0); // CORRECT CALL TO image()
rot+=PI/100;
}
Make sense?