Встроенная функция
Функция 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.