ofRectangle doesn't rotate properly when translating the coordinate system at every frame

Hi everyone, I’m experimenting with OfxOpenNI + Nite.
The context is as follows: I want to rotate a simple 2D rectangle with the body movement: ie, if the person moves to the right then a 90º clock wise rotation happens. The movement is driven by the y_cm body center of mass. Thus: y_rect = f(y_cm).

I’ve been reading similar topics to this one but no one gave me some light to my problem.

I had to did some tricks to enlarge the x coordinates gap difference between two frames to avoid an excessive responsiveness.
I considered more than one frame to get the previous and actual x coordinate by acumulating the time between frames by using ofGetLastFrameTime(). If the sum of the time is greater than certain threshold then I check the differences between the previous and the actual coordinate.
I don’t know if this approach is the best, it could be improved by far, I am open to your suggestions.


void testApp::update()

    if (y_rec > y_tope)
        y_rec = 15;
        w = 40;
        h = 82;

    if (t < 1.0)
        t += ofGetLastFrameTime();
        t = 0;
        x_ant = x;

x_ant is the previous x coordinate

x1 and x2 are the physical boundaries to avoid the easy responsiveness of every body movement.

void testApp::draw()
    ofSetColor(255, 128, 0);

    if (((x <= x2) || ((x - x1) > 15)) && (t >= 1.0))// mueve hacia la derecha de x1
        if ((x - x_ant) > 27)
            ofRect(-w/2,-h/2,w,h); // para que escriba en torno a 0,0
//            if (w == 40)   **USING THE COMMENTED LINES WORKS FINE**
//            {
//                h = 40;
//                w = 82;
//            }
//            else
//            {
//                h = 82;
//                w = 40;
//            }
//        }


The rectangle rotates but it go back inmediately to the original position when it sould remain until the next body movement instead.
If I do it without using the ofRotateZ or ofRotate(90, 0,0,1) and ofTranslatio but with the code commented, it works fine.
What’s wrong in this approach? I guess it has to do with the coordinate translations at every frame.