When you calculate point1.y
you use already translated point1.x
. Fix your code like code below:
angle = angle * M_PI / 180;
CGPoint result = CGPointZero;
result.x = (point1.x) * cos(angle) - (point1.y) * sin(angle);
result.y = (point1.x) * sin(angle) + (point1.y) * cos(angle);
And use result
point in your future calculations.