Главная » 2025 » Ноябрь » 23 » Класс UPointF: координаты точки (тип float)
19:29
Класс UPointF: координаты точки (тип float)

Класс UPointF: координаты точки (тип float)

Класс UPointF описывает вещественные координаты точки в двумерном пространстве. Инструкция импорта:

from unicross_image.uhelper import UPointF

Форматы конструктора класса:

UPointF()
UPointF(x, y)
UPointF( (x, y) )
UPointF(upointf)

Первый конструктор создает объект с нулевыми координатами:

p = UPointF()
print(p)        # UPointF(x=0.0, y=0.0)
print(repr(p))  # (0.0, 0.0)

Вместо этого конструктора можно использовать статический метод ZERO():

p = UPointF.ZERO()
print(p)        # UPointF(x=0.0, y=0.0)
print(repr(p))  # (0.0, 0.0)

Во втором конструкторе указываются две координаты через запятую. Если значения не могут быть приведены к вещественному числу, то будет сгенерировано исключение. Пример:

p = UPointF(10.0, 20.0)
print(p)        # UPointF(x=10.0, y=20.0)
print(repr(p))  # (10.0, 20.0)

В третьем конструкторе координаты указываются в виде кортежа или списка. Если значения не могут быть приведены к вещественному числу, то будет сгенерировано исключение. Пример:

p = UPointF( (10.0, 20.0) )
print(p)        # UPointF(x=10.0, y=20.0)
p = UPointF( [30.0, 40.0] )
print(p)        # UPointF(x=30.0, y=40.0)

Четвертый конструктор создает объект на основе другого объекта класса UPointF:

p1 = UPointF(10.0, 20.0)
p2 = UPointF(p1)
print(p2)        # UPointF(x=10.0, y=20.0)

Сравнить два объекта UPointF можно с помощью операторов == и !=:

p1 = UPointF(10.0, 20.0)
p2 = UPointF(10.0, 20.0)
p3 = UPointF(30.0, 40.0)
print(p1 == p2)  # True
print(p1 == p3)  # False

print(p1 != p2)  # False
print(p1 != p3)  # True

Класс UPointF поддерживает итерации, поэтому объект можно преобразовать в кортеж или список, а также перебрать поэлементно с помощью циклов:

p = UPointF(1.0, 2.0)
print(tuple(p))    # (1.0, 2.0)
print(list(p))     # [1.0, 2.0]
for i in p:
    print(i, end=", ")
# 1.0, 2.0,

Пример распаковки объекта:

p = UPointF(10.0, 20.0)
x, y = p
print(x, y) # 10.0 20.0

Перечислим методы класса UPointF:

  • get_x() и get_y() — возвращают координаты по осям X и Y соответственно. Пример:
p = UPointF(10.0, 20.0)
print(p.get_x())  # 10.0
print(p.get_y())  # 20.0
  • get_point() — возвращает координаты в виде кортежа. Пример:
p = UPointF(10.0, 20.0)
print(p.get_point())  # (10.0, 20.0)

Можно также преобразовать объект в кортеж с помощью функции tuple() или выполнить распаковку:

p = UPointF(10.0, 20.0)
print(tuple(p))    # (10.0, 20.0)
x, y = p
print(x, y)        # 10.0 20.0
  • get_upointf() — создает копию объекта. Пример:
p = UPointF(10.0, 20.0)
print(p.get_upointf())  # UPointF(x=10.0, y=20.0)
  • get_upoint() — создает объект UPoint с целочисленными координатами на основе текущего объекта. Пример:
p = UPointF(10.0, 20.0)
print(p.get_upoint())  # UPoint(x=10, y=20)
  • add(upointf) — сложение векторов. Пример:
p1 = UPointF(30.0, 40.0)
p2 = UPointF(10.0, 20.0)
print(p1.add(p2))  # UPointF(x=40.0, y=60.0)

Можно также воспользоваться оператором +:

p1 = UPointF(30.0, 40.0)
p2 = UPointF(10.0, 20.0)
print(p1 + p2)     # UPointF(x=40.0, y=60.0)
  • subtract(upointf) — вычитание векторов. Пример:
p1 = UPointF(30.0, 40.0)
p2 = UPointF(10.0, 20.0)
print(p1.subtract(p2))  # UPointF(x=20.0, y=20.0)

Можно также воспользоваться оператором -:

p1 = UPointF(30.0, 40.0)
p2 = UPointF(10.0, 20.0)
print(p1 - p2)  # UPointF(x=20.0, y=20.0)
  • multiply(factor) — умножение вектора на скаляр. Пример:
p = UPointF(10.0, 20.0)
print(p.multiply(5))  # UPointF(x=50.0, y=100.0)

Можно также воспользоваться оператором *:

p = UPointF(10.0, 20.0)
print(p * 5)          # UPointF(x=50.0, y=100.0)
  • division(factor) — деление вектора на скаляр. Пример:
p = UPointF(10.0, 20.0)
print(p.division(5))  # UPointF(x=2.0, y=4.0)

Если значение параметра равно 0.0,то возвращается значение None:

p = UPointF(10.0, 20.0)
print(p.division(0.0))  # None

Можно также воспользоваться оператором /:

p = UPointF(10.0, 20.0)
print(p / 5.0)   # UPointF(x=2.0, y=4.0)
print(p / 0.0)   # None
  • magnitude() — возвращает длину вектора. Пример:
import math
p = UPointF(10.0, 20.0)
print(p.magnitude())                    # 22.360679774997898
print(math.sqrt(10.0 ** 2 + 20.0 ** 2)) # 22.360679774997898
  • distance(upointf) — возвращает расстояние между двумя точками. Пример:
p1 = UPointF(10.0, 20.0)
p2 = UPointF(50.0, 20.0)
p3 = UPointF(10.0, 20.0)
print(p1.distance(p2)) # 40.0
print(p1.distance(p3)) # 0.0
  • rotate(deg) — поворот против часовой стрелки на deg градусов. Положительная ось Y направлена вверх, как в традиционной математике. Возвращается новый объект UPointF. Пример:
p = UPointF(10.0, 20.0)
print(p.rotate(180)) # UPointF(x=-10.000000000000002, y=-20.0)
  • rotate_about(upointf, deg) — поворот против часовой стрелки на deg градусов относительно точки upointf. Положительная ось Y направлена вверх, как в традиционной математике. Возвращается новый объект UPointF. Пример:
p = UPointF(10.0, 20.0)
p2 = UPointF(0.0, 0.0)
print(p.rotate_about(p2, 180))
# UPointF(x=-10.000000000000002, y=-20.0)
  • midpoint(upointf) — возвращает координаты точки, расположенной посередине между двумя точками. Пример:
p1 = UPointF(10.0, 20.0)
p2 = UPointF(10.0, 80.0)
print(p1.midpoint(p2)) # UPointF(x=10.0, y=50.0)
  • normalize() — производит нормализацию вектора. Нормализованным называется вектор с длиной равной единице. Пример:
p = UPointF(3.0, 4.0)
print(p.normalize()) # UPointF(x=0.6, y=0.8)

Действительно ли длина вектора равна единице? Давайте проверим:

p = UPointF(0.6, 0.8)
print(p.magnitude()) # 1.0
  • dot_product(upointf) — скалярное произведение векторов. Пример:
p1 = UPointF(3.0, 2.0)
p2 = UPointF(1.0, 4.0)
print(p1.dot_product(p2))    # 11.0
print(3.0 * 1.0 + 2.0 * 4.0) # 11.0

Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage

Категория: UImage | Просмотров: 4 | Добавил: unicross | Теги: UPointF, UImage | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [10]
Списки слов и словари
OCR [4]
Оптическое распознавание символов
UImage [18]
Графическая библиотека для Python
Программы [4]
Полезные программы
Прочее [3]
Другие темы
Календарь
«  Ноябрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
     12
3456789
10111213141516
17181920212223
24252627282930
Архив записей