Original Post
Ok, before someone yells at me for asking a simple question, I know how to use sign/cos (in theory) for point rotation. :-p Here's my problem: I've got a java game I'm working on whose core (as many 2d game's cores are) based on 2d points. I've got my "MyPoint" object which has the following method: //x and y are both doubles public void rotate(MyPoint center, double phi) { double angle = Math.atan2(x-center.getX(),y-center.getY()); double dist = Math.sqrt((x-center.getX()) * (x-center.getX()) + (y-center.getY()) * (y-center.getY())); x = Math.sin(angle + phi) * dist + center.getX(); y = Math.cos(angle + phi) * dist + center.getY(); } It's supposed to rotate this point around the point center by phi degrees. My test to see if this works is to rotate a point around a fixed point by 1 degree 360 times (as follows): public static void main(String[] args) { MyPoint p = new MyPoint (100,150); p.print(); System.out.println(); for(int i = 0; i < 360; i++) { p.rotate(new MyPoint(100,100),Math.toRadians(1)); p.print(); System.out.println(); } } however, the output ends up like this: 100,150 . . . 99, 150 The x value of 99 is throwing off everything in my game. Does anyone know why this is happening?