2015-11-03 2 views
0

Я смотрел на некотором коде в питона skimage инструментарии относительно представляющей аффинных преобразований в 2D и есть AffineTransform класса, который определяется как:Стрижки в 2D аффинных преобразований

Parameters 
---------- 
matrix : (3, 3) array, optional 
    Homogeneous transformation matrix. 
scale : (sx, sy) as array, list or tuple, optional 
    Scale factors. 
rotation : float, optional 
    Rotation angle in counter-clockwise direction as radians. 
shear : float, optional 
    Shear angle in counter-clockwise direction as radians. 
translation : (tx, ty) as array, list or tuple, optional 
    Translation parameters. 

Я заметил, что стрижка принимает только один параметр (угол сдвига в направлении против часовой стрелки). Однако почему это не должно быть два параметра? Я могу сдвинуть в x И в направлении y. Почему эти две операции отображаются в один свободный параметр в 2D?

ответ

1

В настоящее время в коде мы имеем для матрицы преобразования:

  [sx * math.cos(rotation), -sy * math.sin(rotation + shear), 0], 
      [sx * math.sin(rotation), sy * math.cos(rotation + shear), 0], 
      [      0,        0, 1] 

Интересно, если это действительно самый интуитивный способ задания сдвига. Я открыл вопрос: https://github.com/scikit-image/scikit-image/issues/1779

+0

Спасибо. Мне было интересно, если бы вы были достаточно любезны, чтобы объяснить алгебру за ней. – Luca

+0

Я согласен, что это не самый распространенный способ выражения сдвига. Не стесняйтесь открывать проблему. В то же время вы можете использовать более общий ProjectiveTransform. –

Смежные вопросы