Иллюстрированный самоучитель по Java



              

Класс AffineTransform


Аффинное преобразование координат задается двумя основными конструкторами класса AffineTransform:

AffineTransform(double a, double b, double с,

  double d, double e, double f) 

AffineTransform (float a, float b, float c, float d, float e, float f)

При этом точка с координатами (х, у) в пространстве пользователя перейдет в точку с координатами

(а*х+с*у+е, b*x+d*y+f)

в пространстве графического устройства.

Такое преобразование не искривляет плоскость — прямые линии переходят в прямые, углы между линиями сохраняются. Примерами аффинных преобразований служат повороты вокруг любой точки на любой угол, параллельные сдвиги, отражения от осей, сжатия и растяжения по осям.

Следующие два конструктора используют в качестве аргумента массив (а, ь, с, d, e, f} или

(а, ь, с,

d}, если e = f = о, составленный из таких же коэффициентов в том же порядке:

AffineTransform(double[] arr) 

AffineTransform(float[] arr)

Пятый конструктор создает новый объект по другому, уже имеющемуся, объекту:

AffineTransform(AffineTransform at)

Шестой конструктор — конструктор по умолчанию — создает тождественное преобразование:

Af fineTransform ()

Эти конструкторы математически точны, но неудобны при задании конкретных преобразований. Попробуйте рассчитать коэффициенты поворота на 57° вокруг точки с координатами (20, 40) или сообразить, как будет преобразовано пространство пользователя после выполнения методов:

AffineTransform at =

new AffineTransform(-1.5, 4.45, -0.56, 34.7, 2.68, 0.01); 

g.setTransform(at);

Во многих случаях удобнее создать преобразование статическими методами, возвращающими объект класса AffineTransform.

getRotatelnstance (double angle) — возвращает поворот на угол angle, заданный в радианах, вокруг начала координат. Положительное направление поворота таково, что точки оси Ох поворачиваются в направлении к оси Оу. Если оси координат пользователя не менялись преобразованием отражения, то положительное значение angle задает поворот по часовой стрелке.




Содержание  Назад  Вперед