Polygon is rotating too fast

Posted by Manderin87 on Game Development See other posts from Game Development or by Manderin87
Published on 2012-11-29T03:27:11Z Indexed on 2012/11/29 5:22 UTC
Read the original article Hit count: 220

Filed under:
|
|
|

I am going to be using a polygon collision detection method to test when objects collide. I am attempting to rotate a polygon to match the sprites rotation. However, the polygon is rotating too fast, much faster than the sprite is. I feel its a timing issue, but the sprite rotates like it is supposed to. Can anyone look at my code and tell me what could be causing this issue?

public void rotate(float x0, float y0, double angle) {
  for(Point point : mPoints) {
    float x = (float) (x0 + (point.x - x0) 
     * Math.cos(Utilities.toRadians(angle)) - (point.y - y0) 
     * Math.sin(Utilities.toRadians(angle)));
    float y = (float) (y0 + (point.x - x0) 
     * Math.sin(Utilities.toRadians(angle)) + (point.y - y0) 
     * Math.cos(Utilities.toRadians(angle)));

        point.x = x;
        point.y = y;
    }

}

This algorithm works when done singly, but once I plug it into the update method the rotation is too fast.

The Points used are:

P1 608, 368
P2 640, 464
P3 672, 400

Origin x0 is:

640
400

The angle goes from 0 to 360 as the sprite rotates. When the codes executes the triangle looks like a star because its moving so fast.

The rotation is done in the sprites update method. The rotation method just increases the sprites degree by .5 when it executes.

public void update() {
    if(isActive()) {
        rotate();
        mBounding.rotate(mPosition.x, mPosition.y, mDegree);
    }
}

© Game Development or respective owner

Related posts about math

Related posts about sprites