В Mathematica локаторы могут быть ограничены определенными областями экрана с помощью параметров LocatorPane
(см. Документацию LocatorPane .)
Список из трех упорядоченных пар {{{minX, minY}, {maxX, maxY}, {dX, dY}}}
обычно является ключом к определению поведения локаторов. {minX, minY}
и {maxX, maxY}
установить регион. {dX, dY}
устанавливает размер прыжка: ноль для неограниченного, любое другое положительное число для размера каждого прыжка.
В приведенном ниже коде {{{-.9, 0}, {1, 0}, {0, 0}}}
устанавливает регион и переходы для локатора pts
. Первые две упорядоченные пары ограничивают локаторы интервалом [-9, 1] в числовой строке. Упорядоченная пара {0, 0}
не накладывает дополнительных ограничений ни на один из локаторов. Однако, поскольку значения y могут быть только нулевыми, из-за области, определенной первыми двумя элементами, ни один локатор не может покинуть ось X.
Я бы хотел ограничить каждый локатор значениями x в myTicks
. (В полной программе myTicks будет меняться со временем в зависимости от решений, принятых пользователем.) Поскольку отметки не распределены равномерно вдоль x, проблему нельзя решить, установив постоянное значение для x-jump. И если бы значение учитывало текущую позицию локатора, следующий левый прыжок мог бы иметь размер, отличный от правого прыжка.
myTicks = {-.9, 0, .1, .2, .45, .79, 1};
pts = {{.25, 0}, {.75, 0}};
LocatorPane[Dynamic[pts],
Graphics[{},
Axes -> {True, False},
PlotLabel -> Row[{"locators at: " , Dynamic[pts[[1, 1]]], " and ",
Dynamic[pts[[2, 1]]]}],
Ticks -> {myTicks, Automatic}],
{{{-.9, 0}, {1, 0}, {0, 0}}}]
Будем благодарны за любые предложения!