while developing simulator I found couple of small bugs in dyn4j library

1. Rectangle class in Geometry package

Code: Select all

`/**`

* Returns the rotation about the local center in radians.

* @return double the rotation in radians

* @since 3.0.1

*/

public double getRotation() {

// when the shape is created normals[1] will always be the positive x-axis

// we can get the rotation by comparing it to the positive x-axis

// since the normal vectors are rotated with the vertices when

// a shape is rotated

// return this.normals[1].getAngleBetween(Vector2.X_AXIS); //original

return -this.normals[1].getAngleBetween(Vector2.X_AXIS); //corrected

}

2. Polygon Class in Geometry package

Code: Select all

` @Override`

public void rotate(double theta, double x, double y) {

super.rotate(theta, x, y);

int size = this.vertices.length;

for (int i = 0; i < size; i++) {

this.vertices[i].rotate(theta, x, y);

// this.normals[i].rotate(theta, x,y);//original

this.normals[i].rotate(theta); //corrected==>normals are not supposed to be rotated about point

}

}

These bugs create problem in multi-fixture body with fixture as rectangle rotated by some angle. The angle of rotation is then calculated about wrongly transformed normals.

Anyway Dyn4j is one of the best thing I learnt so far.

Regards..