Transform
======================

.. currentmodule:: axioma.core.geometry

.. class:: Transform

	.. note:: Абстрактный

	Абстрактный интерфейсный класс преобразования геометрий

		.. method:: map(point_in, point_out)

			Преобразование координат точки

			:param point_in: входное значение
			:type point_in: :class:`~PyQt5.QtCore.QPointF`
			:param point_out: выходное значение
			:type point_out: :class:`~PyQt5.QtCore.QPointF`
			:return: успешность выполнения
			:rtype: :class:`bool`

		.. method:: map(rect_in, rect_out)

			Преобразование координат прямоугольника

			:param rect_in: входное значение
			:type rect_in: :class:`~PyQt5.QtCore.QRectF`
			:param rect_out: выходное значение
			:type rect_out: :class:`~PyQt5.QtCore.QRectF`
			:return: успешность выполнения
			:rtype: :class:`bool`

		.. method:: map(points_in, points_out)

			Преобразование координат списка точек

			:param points_in: входное значение
			:type points_in: :class:`list` [:class:`~PyQt5.QtCore.QPointF`]
			:param points_out: выходное значение
			:type points_out: :class:`list` [:class:`~PyQt5.QtCore.QPointF`]
			:return: успешность выполнения
			:rtype: :class:`bool`

		.. method:: resultCoordSys()

			Целевая координатная система

			:rtype: :class:`~axioma.cs.CoordSystem`

		.. method:: sourceCoordSystem()

			Исходная координатная система

			:rtype: :class:`~axioma.cs.CoordSystem`

		.. method:: isSimpleTransform()

			Является ли данная трансформация простым масштабированием со сдвигом

			:return: True, если является
			:rtype: :class:`bool`


TransformQt
======================

.. class:: TransformQt

	Класс-реализация интерфейсного класса Transform. Предназначен для геометрических 2D-преобразований координатной системы на основе класса QTransform

	Унаследован от: :class:`~axioma.core.geometry.Transform`

		.. method:: TransformQt(transform, coord_system=None)

			Конструктор класса

			:param transform: преобразование координатной системы
			:type transform: :class:`~PyQt5.QtGui.QTransform`
			:param coord_system: координатная система
			:type coord_system: :class:`~axioma.cs.CoordSystem`

		.. method:: isRevertOrdinate()

			Является ли данная трансформация с зеркалированием по ординате

			:return: True, если является
			:rtype: :class:`bool`


TransformCoordSys
======================

.. class:: TransformCoordSys

	Класс-реализация интерфейсного класса Transform. Предназначен для геометрических 2D-преобразований координатной системы на основе данных о координатных системах

	Унаследован от: :class:`~axioma.core.geometry.Transform`

		.. method:: TransformCoordSys(cs_from, cs_to)

			Конструктор класса

			:param cs_from: изначальная координатная система
			:type cs_from: :class:`~axioma.cs.CoordSystem`
			:param cs_to: конечная координатная система
			:type cs_to: :class:`~axioma.cs.CoordSystem`

		.. method:: TransformCoordSys(coord_transform)

			Конструктор класса

			:param coord_transform: преобразование координат из проекции в проекцию
			:type coord_transform: :class:`~axioma.cs.CoordTransform`


CombinedTransform
======================

.. class:: CombinedTransform

	Класс-реализация интерфейсного класса Transform. Предназначен последовательного преобразования посредством нескольких объектов трансформации Transform

	Унаследован от: :class:`~axioma.core.geometry.Transform`

		.. method:: CombinedTransform(transforms)

			Конструктор класса

			:param transforms: массив с последовательностью преобразования
			:type transforms: :class:`list` [ :class:`~axioma.core.geometry.Transform` ]


RoundTransform
======================

.. class:: RoundTransform

	Класс-реализация интерфейсного класса Transform. Предназначен для округления координат геометрических объектов

	Унаследован от: :class:`~axioma.core.geometry.Transform`

		.. method:: RoundTransform(digitsX, digitsY, coord_system=None)

			Конструктор класса

			:param digitsX: точность для значений по абсциссе
			:type digitsX: :class:`int`
			:param digitsY: точность для значений по ординате
			:type digitsY: :class:`int`
			:param coord_system: координатная система
			:type coord_system: :class:`~axioma.cs.CoordSystem`

		.. method:: RoundTransform(sizeScale, coord_system=None)

			Конструктор класса

			:param sizeScale: размер, по степени значений которого вычисляется точность (например, цена пикселя)
			:type sizeScale: :class:`~PyQt5.QtCore.QSizeF`
			:param coord_system: координатная система
			:type coord_system: :class:`~axioma.cs.CoordSystem`

		.. method:: setScale(sizeScale)

			Установка точности по степени значений размера (например, по цене пикселя)

			:param sizeScale: размер, по степени значений которого вычисляется точность (например, цена пикселя)
			:type sizeScale: :class:`~PyQt5.QtCore.QSizeF`
			:return: Ссылка на текущий экземпляр класса
			:rtype: :class:`~axioma.core.geometry.RoundTransform`

		.. method:: setScale(width, height)

			Установка точности по степени значений размера (например, по цене пикселя)

			:param width: ширина, по степени которой вычисляется точность по абсциссе
			:type width: :class:`float`
			:param height: высота, по степени которой вычисляется точность по ординате
			:type height: :class:`float`
			:return: Ссылка на текущий экземпляр класса
			:rtype: :class:`~axioma.core.geometry.RoundTransform`

		.. method:: setDigits(digitsX, digitsY)

			Установка точности

			:param digitsX: точность по абсциссе (число знаков после запятой, может быть отрицательным)
			:type digitsX: :class:`int`
			:param digitsY: точность по ординате (число знаков после запятой, может быть отрицательным)
			:type digitsY: :class:`int`
			:return: Ссылка на текущий экземпляр класса
			:rtype: :class:`~axioma.core.geometry.RoundTransform`

		.. method:: isCorrect()

			Признак корректного задания точности

			:return: True, если округление будет проводиться
			:rtype: :class:`bool`
