Как транспонировать каирский контекст или изменить ориентацию оси?

Мне нужно визуализировать игровое поле для игры с роботами. К сожалению, в игре используется правосторонняя система координат с осью Y, направленной вверх.

Есть ли способ настроить каирский контекст области рисования, чтобы он соответствовал этой системе координат?

Я могу масштабировать, переводить и вращать, но я не могу найти способ переключения ориентации оси Y, который был бы более удобным по сравнению с преобразованием всех координат по отдельности.

Спасибо за любой вклад!


person Daniel    schedule 16.02.2013    source источник


Ответы (1)


Вам разрешено определять каждое поле в cairo_matrix_t:

cairo_matrix_t flip_y;
cairo_matrix_init(&flip_y, 1, 0, 0, -1, 0, 0);
cairo_set_matrix(cr, &flip_y);

Просто помните, как применяется трансформация:

x_new = xx * x + xy * y + x0;
y_new = yx * x + yy * y + y0;
person ntd    schedule 17.02.2013
comment
Что-нибудь попроще с тем же эффектом: cairo_scale(cr, 1, -1); - person Uli Schlachter; 17.02.2013