En Mathematica, localizadores puede ser limitado a ciertas regiones de la pantalla a través de los parámetros de LocatorPane
(Ver LocatorPane documentación.)¿Cómo puedo restringir los localizadores a un conjunto de posiciones limitado (pero no regular)?
una lista de tres pares ordenados {{{minX, minY}, {maxX, maxY}, {dX, dY}}}
es generalmente la clave para determinar el comportamiento de los localizadores. {minX, minY}
y {maxX, maxY}
establecen la región. {dX, dY}
establece el tamaño de salto: cero para desenfrenado, cualquier otro número positivo para el tamaño de cada salto.
En el código siguiente, {{{-.9, 0}, {1, 0}, {0, 0}}}
establece la región y salta para el localizador pts
. Los primeros dos pares ordenados limitan los localizadores al intervalo [-9, 1] en la recta numérica. El par ordenado {0, 0}
no impone restricciones adicionales en ninguno de los localizadores. Sin embargo, debido a que los valores y solo pueden ser cero, debido a la región definida por los dos primeros elementos, ninguno de los localizadores puede abandonar el eje x.
Me gustaría limitar cada localizador a x-values en myTicks
. (En el programa completo, myTicks cambiará con el tiempo dependiendo de las decisiones tomadas por el usuario). Debido a que los tics no están uniformemente espaciados a lo largo de x, el problema no puede resolverse estableciendo un valor constante para el salto x. Y si el valor tuviera en cuenta la posición actual del localizador, el siguiente salto a la izquierda podría tener un tamaño diferente al del salto derecho.
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}}}]
Cualquier sugerencia sería apreciado!
Por cierto, utilicé la etiqueta 'mouseevent' porque sospecho que hay algunas sutilezas sobre el comportamiento del mouse que pueden estar involucradas aquí. – DavidC