I created a rectangle and rotated it. OF rotates the rectangle around its upper left corner. Is there something that would enable me to rotate the rectangle around its center?
ofSetRectMode(int mode);
where mode can be either OF_RECTMODE_CENTER or OF_RECTMODE_CORNER
hope this helps
regards
david
to add on to what david wrote –
note that ofRotate works around the 0,0 position, so the typical operation if you wanted to draw a rectangle at 400,300 for example
ofSetRectMode(OF_RECTMODE_CENTER);
ofPushMatrix();
ofTranslate(400,300);
ofRotateZ(ofGetElapsedTimef()*10);
ofRect(0,0,20,20);
ofPopMatrix();
note that the basic idea is:
a) push a copy of the current world (coordinate system)
b) translating to where you want to rotate around
c) rotating
d) drawing (as if you are at 0,0)
e) pop to return back to the copy.
for (d), if you set rectMode to center, then draw with x,y = 0,0. If not, then draw with x,y=(-w/2), (-h/2), ie:
ofRect(-10,-10,20,20);
so that the object is centered at 0,0.
hope that helps!
zach
3 Likes