Помощь - Поиск - Пользователи - Календарь
Полная версия: Зеркальное отражение матриц
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
TBVlad
Хотелось бы поточнее разобраться в алгоритме зеркального переворота матриц относительно побочной диагонали и вертикальной оси симметрии.
Если уже разбиралось, ткните носом, плиз...
klem4
Главная.
Побочная по аналогии


const
n = 4;
type
TMx = array [1..n,1..n] of integer;

// ...

procedure Mirror(var mx : TMx);
var
i,j : byte;
T : integer;
begin
for i := 2 to n do
for j := 1 to i - 1 do begin
T := mx[i,j];
mx[i,j] := mx[j,i];
mx[j,i] := T;
end;
end;
TBVlad
То есть, то чтобы повернуть матрицу вокруг побочной диагонали, нужно обменом через временную переменную переместить все элементы, кроме тех, что (i+j-1=N)?

----
Я так понял, что вертикальная ось симметрии (R как фиксированная срединная точка в ряду j) - это вот что:
If (N mod 2)=0 then
R:=(j div 2)
else
R:=((j div 2)+1);

И, таким образом, сама ось - это arr[i,r]. Если это правильно, то как производится поворот матрицы вокруг неё?
volvo
Цитата(TBVlad @ 22.01.2006 19:42)
Я так понял, что вертикальная ось симметрии (R как фиксированная срединная точка в ряду j) - это вот что:
If (N mod 2)=0 then R:=(j div 2)
else R:=((j div 2)+1);

Все проще гораздо. Чтобы "отразить" матрицу относительно оси вертикальной симметрии, делаем так:
  for i := 1 to n do begin { по строкам }
for j := 1 to n div 2 do begin { по столбцам }
T := arr[i, j];
arr[i, j] := arr[i, n - j + 1];
arr[i, n - j + 1] := T;
end;
end;
Дож
Цитата

Хотелось бы поточнее разобраться в алгоритме зеркального переворота матриц относительно побочной диагонали и вертикальной оси симметрии.

А что такое отражение матрицы относительно диагонали? Что такое поворот относительно главной диагонали понятно, а вот чем оно отличается от отражения по побочной диагонали?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.