Самый простой способ сделать все это - убедиться, что ваша центральная точка (то есть точка, где встречаются разные цвета) расположена в [0,0]
. Затем вращение фигуры (кратное 90 °) сводится к изменению знака значений x
и / или y
вашего контура.
Если вам нужно, чтобы фигура находилась в точке, отличной от [0 0]
, просто добавьте эти координаты после вращения.
Итак, начиная с вашего кода, вы можете сделать это:
x = [1 4 1 4 1 6.5 7 7]-7;
y = [3 4 5.5 5 8 7 8 3]-3;
c = [5 6];
col = [0 0 0;
rand(2,3);
1 1 1];
fill( x+c(1), y+c(2),col(1,:)); hold on;
fill(-x+c(1), y+c(2),col(2,:));
fill( x+c(1),-y+c(2),col(3,:));
fill(-x+c(1),-y+c(2),col(4,:)); hold off;
edit: Уточнение для переменных col
и c
.
Переменная col
содержит цвета, которые будут использоваться в стиле rgb, где каждая строка является цветом. rand
генерирует равномерно случайные числа в диапазоне [0,1]
, где также ожидаются значения цветов. В приведенном выше коде генерируется 2x3
случайная матрица, что означает 2 случайных цвета, которые идеально вписываются в матрицу col
.
Переменная c
содержит центр вашей фигуры. Если вы посмотрите на график, центр будет в [5 6]
(то есть 5 вдоль оси x и 6 вдоль оси y). Вместо этого вы могли бы использовать две переменные, но я думаю, что проще хранить обе вместе в переменной. Лично я бы сделал то же самое для ваших переменных x
и y
, поскольку это позволило бы вам проще использовать матрицы вращения , но это просто вопрос выбора.