Title should read: 2D Object Rotation makes my object smaller, why?
The problem is that the triangle become smaller and smaller after each rotation for some reason and i dont understand why, im using a formula ive found for the rotation, and its the same on many sites, so i dont know why this is happening. Heres the function that does the rotation.
public void rotate(double x) { double tempX[]=new double[OBJECT_COMPLEXITY]; //points for drawing objects double tempY[]=new double[OBJECT_COMPLEXITY]; double cosF=Math.cos(x); //x is Math.toRadians(10), negated when going right double sinF=Math.sin(x); for(int j=0; j<obj[0].GetPts(); j++) //loop that goes through all the points { tempX[j]=obj[0].GetXArray()[j]; //grab the points by value from the array tempY[j]=obj[0].GetYArray()[j]; System.out.println("#" + j + " Old X: " + tempX[j] + " Old Y: " + tempY[j]); tempX[j]=tempX[j]*cosF-tempY[j]*sinF; //using online formula tempY[j]=tempY[j]*cosF+tempX[j]*sinF; System.out.println("#" + j + " New X: " + tempX[j] + " New Y: " + tempY[j]); } System.out.println(); obj[0].SetArrays(tempX, tempY); //send the arrays back to the object }
Now what i did is turn the triangle 10 degrees to the left, then 10 degrees to the right (yes i converted to radians)
The original array of points::
xObjArr[0]=0;
xObjArr[1]=20;
xObjArr[2]=-20;
yObjArr[0]=-20;
yObjArr[1]=0;
yObjArr[2]=0;
(This is just a triangle)
And now here is the report generated by the rotations, here is the report after rotating to the left:
#0 Old X: 0.0 Old Y: -20.0
#0 New X: -3.4729635533386065 New Y: -19.093081268103244
#1 Old X: 20.0 Old Y: 0.0
#1 New X: 19.69615506024416 New Y: -3.4202014332566866
#2 Old X: -20.0 Old Y: 0.0
#2 New X: -19.69615506024416 New Y: 3.4202014332566866
Here it is when rotating back to the right (it should be noted the size still decreases when turning constantly only in one direction)
#0 Old X: -3.4729635533386065 Old Y: -19.093081268103244
#0 New X: -0.10472266500395477 New Y: -18.821199361658596
#1 Old X: 19.69615506024416 Old Y: -3.4202014332566866
#1 New X: 19.99083795399793 New Y: 0.1031316924119956
#2 Old X: -19.69615506024416 Old Y: 3.4202014332566866
#2 New X: -19.99083795399793 New Y: -0.1031316924119956
Obviously something is wrong, i would be okay with minor imprecisions but this is not even close to the original points.
Can anyone see anything wrong with this, is perhaps the formula wrong???


LinkBack URL
About LinkBacks
Reply With Quote