Классы геометрии. Точка

   
На этом шаге рассмотрим классы QPoint и QPointF.

   
Группа классов геометрии ничего не отображает на экране. Основное их назначение состоит в задании расположения, размеров и в описании формы объектов.

   
Для задания точек в двумерной системе координат служат два класса: QPoint и QPointF. В двумерной системе координат точка обозначается парой чисел X и Y, где X — горизонтальная, а Y — вертикальная координаты.

   
В отличие от обычного расположения координатных осей, при задании координат точки в Qt обычно подразумевается, что ось Y смотрит вниз (рис. 1).

   
Класс QPoint описывает точку с целочисленными координатами, а QPointF — с вещественными. Интерфейс обоих классов одинаков, в него входят методы, позволяющие проводить различные операции с координатами, например сложение и вычитание с координатами другой точки. При сложении/вычитании точек выполняется попарное сложение/вычитание их координат X и Y. Пример, показанный на рис. 1, складывает две точки: pt1 и pt2.


Рис.1. Создание и сложение точек

QPoint pt1(4, 2);
QPoint pt2(3, 4);
QPoint pt3; //(0, 0)
pt3 = pt1 + pt2; //(7, 6)

   
Объекты точек можно умножать (рис. 2)


Рис.2. Умножение объекта точки на 2
и делить (рис. 3) на числа.


Рис.3. Деление объекта точки на 2
Например:

QPoint pt1(4, 2);
QPoint pt4 = pt1;
pt4 *= 2; // pt4 = (8, 4)

QPoint pt2(3, 4);
QPoint pt5 = pt2;
pt5 /= 2; // pt5 = (1.5, 2)

   
Для получения координат точки (X, Y) реализованы методы x() и y() соответственно. Изменяются координаты точки с помощью методов setX() и setY().

   
Можно получать ссылки на координаты точки, для того чтобы изменять их значения (рис. 4).


Рис.4. Изменение значений координат точки
Например:

QPoint pt1(4, 2);
pt1.rx() -= 2;
pt1.ry() +=2; // pt1 = (2, 4)

   
Объекты точек можно сравнивать друг с другом при помощи операторов == (равно) и != (не равно). Например:

QPoint pt1(10, 20);
QPoint pt2(10, 20);
bool b = (pt1 == pt2); // b = true

   
Если необходимо проверить, равны ли координаты X и Y нулю, то вызывается метод isNull(). Например:

QPoint pt; // (0, 0)
bool b = pt.isNull(); // b = true

   
Метод manhattanLength() возвращает сумму абсолютных значений координат X и Y. Например:

QPoint pt(10, 20);
int n = pt.manhattanLength(); // n = 10 + 20 = 30

   
Возвращаемое значение является грубым приближением к

. Этот метод был назван в честь улиц Манхэттена, расположенных перпендикулярно друг к другу.

   
Файлы приложения, иллюстрирующего работу с объектами классов QPoint и QPointF, можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий