Skip to content

Логические манипуляции над множествами

Notifications You must be signed in to change notification settings

gl-ser/Multitude

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multitude

Библиотека логических манипуляций над множествами

Используется функционал кватернионно-векторно-матричной библиотеки QuatVectMatr

Построена на библиотеке Clipper автора Angus Johnson

Множества интерпретируются как контуры на поверхности Земли (в геодезических координатах)


TMultitude

Публичные методы

  1. AMinusB из множества A вычитает несколько множеств B (A\B)

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot AMinusB(TSpot A, TArraySpot B)
  1. APlusB к множеству A прибавляет несколько множеств B (AuB)

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot APlusB(TSpot A, TArraySpot B)
  1. AIntersectionB возвращает пересечение множества A с хотя бы одним множеством из B (AпB)

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot AIntersectionB(TSpot A, TArraySpot B)
  1. AXorB объединяет множества A и B, затем из результата вычитает пересечение множества A с хотя бы одним множеством из B ((AuB) \ (AпB))

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot AXorB(TSpot A, TArraySpot B)
  1. AHoldB отвечает на вопрос: "Множество B полностью входит во множество A?"

Ограничение по использованию метода: каждое из множеств A и B не должно иметь самопересечений (песочные часы не допускаются).

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Возвращаемые значения:

  • 0 - B целиком лежит вне множества A;
  • 1 - B входит в A целиком;
  • 2 - B пересекает множество A (часть B лежит внутри A, часть B лежит вне множества A).

Синтаксис:

int AHoldB(TSpot A, TSpot B)
  1. MiddleL виртуально "делит" множество A по долготе пополам и возвращает эту долготу

Само множество A не меняется.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

double MiddleL(TSpot A)
  1. DivideA делит множество A по указанной пользователем долготе на части (производит разрезание множества)

Если долгота разреза указана неверно, тогда разрезания не производится, а возвращается исходное множество.

В результате успешного разрезания могут получиться два и более множеств.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot DivideA(double L, TSpot A)
  1. AMinusBSimpleResult из множества A вычитает множество B, при этом результирующие множества являются простыми полигонами (не имеют дырок и каждый состоит из одного контура)

Задача применяется для изменения площадного объекта наблюдения в процессе покрытия его сканами.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot AMinusBSimpleResult(TSpot A, TSpot B)
  1. AMinusBSimpleResult из нескольких никак не связанных друг с другом множеств A вычитает множество B, при этом результирующие множества являются простыми полигонами (не имеют дырок и каждый состоит из одного контура)

Задача применяется для изменения площадного объекта наблюдения в процессе покрытия его сканами.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot AMinusBSimpleResult(TArraySpot A, TSpot B)
  1. AMinusBSimpleResult из множества A вычитает несколько множеств B, при этом результирующие множества являются простыми полигонами (не имеют дырок и каждый состоит из одного контура)

Задача применяется для изменения площадного объекта наблюдения в процессе покрытия его сканами.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot AMinusBSimpleResult(TSpot A, TArraySpot B)
  1. AMinusBSimpleResult из нескольких никак не связанных друг с другом множеств A вычитает несколько множеств B, при этом результирующие множества являются простыми полигонами (не имеют дырок и каждый состоит из одного контура)

Задача применяется для изменения площадного объекта наблюдения в процессе покрытия его сканами.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot AMinusBSimpleResult(TArraySpot A, TArraySpot B)
  1. APlusBSimpleResult к множеству A прибавляет множество B, при этом результирующие множества являются простыми полигонами (не имеют дырок и каждый состоит из одного контура)

Задача применяется для изменения площадного объекта наблюдения в процессе покрытия его сканами.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot APlusBSimpleResult(TSpot A, TSpot B)
  1. APlusASimpleResult складывает (прибавляет одно к другому) множества A, при этом результирующие множества являются простыми полигонами (не имеют дырок и каждый состоит из одного контура)

Задача применяется для изменения площадного объекта наблюдения в процессе покрытия его сканами.

Широта и долгота подаются на вход в радианах.

Диапазон изменения подаваемой на вход широты [-pi/2; +pi/2].

Диапазон изменения подаваемой на вход долготы может быть либо [0; +2pi), либо [-pi; +pi].

Результат возвращается также в радианах, но долгота возвращается только в пределах [0; +2pi).

Синтаксис:

TArraySpot APlusASimpleResult(TArraySpot A)