В 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. И если бы это значение учитывало текущую позицию локатора, следующий левый переход мог бы отличаться по размеру от правого.
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}}}]
Мы будем благодарны за любые предложения!