Я не знаком с gdi +, но в принципе вы можете сделать это без обратного триггера или инверсии оператора.(Я говорю «инверсия оператора» вместо «инверсия матрицы», потому что это Matrix
не выглядит для меня матрицей.)
Во-первых, вы должны быть в состоянии избежать инверсии матрицы, изменив способВы определяете оператора.Вот слепой удар:
Matrix m;
m.Rotate(-rotation);
m.Translate(-pA.X, -pA.Y);
Теперь для самого вращения обычный способ сделать это с помощью матрицы, которая выглядит следующим образом:
cos(theta) -sin(theta)
sin(theta) cos(theta)
и вывычисление тета с использованием atan (y / x).Но если вам нужны грех и cos, вы можете просто нормализовать x и y и использовать их напрямую:
x -y
y x
Нет необходимости в atan. На самом деле триггера вообще нет!