Я нашел ответ от Марка Бута неправильным (поверните (0,1,0) на 0 градусов, и вы получите (0, -1,0) с его формулой), и я получил:
double cs = cos_deg(new_degrees);
double sn = sin_deg(new_degrees);
double translated_x = x - x_origin;
double translated_y = y - y_origin;
double result_x = translated_x * cs - translated_y * sn;
double result_y = translated_x * sn + translated_y * cs;
result_x += x_origin;
result_y += y_origin;
Конечно, это можно еще упростить, но я хочу сделать это как можно проще.