Как я могу ограничить локаторы ограниченным (но не обычным) набором позиций?

В 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}}}]

Mathematica graphics

Мы будем благодарны за любые предложения!

5
задан Sjoerd C. de Vries 3 January 2012 в 21:51
поделиться