Axiom Справочник языка

Встроенная функция

Функция PMAP

Когда рисунок задан логической шкалой WINDOW, а вычислению нужны физические пиксели области VIEW, одну координату переводит функция PMAP. Она работает в обе стороны: и из логической системы в физическую, и обратно.

Когда нужны обе системы координат

Функция нужна вычислениям, которым требуются обе системы: например, чтобы сопоставить точку графика с её положением в пикселях. Для вызова требуется графический режим SCREEN 1..10.

Синтаксис

PMAP(<координата>, <селектор>)

Аргументы

АргументОписание
<координата>Передайте числовую координату, которую функция PMAP должна преобразовать. Передаваемое значение имеет тип DOUBLE.
<селектор>Передайте число, которое задаёт направление преобразования. Передаваемое значение имеет тип INTEGER.

Функция возвращает одну координату типа DOUBLE и сохраняет её дробную часть. Селектор определяет ось и направление преобразования; для точки из двух координат нужны два вызова.

Селекторы

СелекторПреобразование
0Преобразование логической координаты X в физическую координату графической области.
1Преобразование логической координаты Y в физическую координату графической области.
2Преобразование физической координаты X графической области в логическую координату.
3Преобразование физической координаты Y графической области в логическую координату.

Текущие настройки и отсутствие шкалы

Если логическая шкала WINDOW не настроена, функция возвращает исходную координату. После изменения VIEW или WINDOW та же исходная координата может получить другой результат: функция всегда использует текущие настройки.

Селектор должен лежать в 0..3, координата должна быть конечной; нарушение сообщает MB3007. При активном WINDOW слишком узкая область, не позволяющая выполнить преобразование, также сообщает MB3007.

Физическая координата результата относится к системе VIEW: при относительной области это координата внутри неё, при VIEW SCREEN — абсолютная координата экрана. Поэтому при относительной области начало области нужно прибавить отдельно, если требуется абсолютный пиксель.

Диагностика

  • MB3010: функция PMAP вызвана без активного графического режима SCREEN 1..10.
  • MB3007: селектор функции PMAP имеет недопустимое значение.

Пример

SCREEN 1
VIEW SCREEN (10, 10)-(20, 20)
WINDOW SCREEN (100, 200)-(110, 210)

PRINT PMAP(100, 0)
PRINT PMAP(200, 1)
PRINT PMAP(10, 2)
PRINT PMAP(10, 3)
SLEEP

Первые вызовы вычисляют физическое положение логической точки, последующие выполняют обратное преобразование. Результат зависит от текущих настроек области и шкалы, поэтому вызовы выполняются после VIEW и WINDOW.

См. также