Настройка размера шага с помощью локатора и манипуляции в Mathematica

Учитывая этот код Mathematica,

Manipulate[Graphics[Line[{{0, 0}, p}], PlotRange -> 2], {{p, {1, 1}}, Locator}]

Как мне установить шаг шага на локаторе? И если возможно, сдерживать их?

2 ответа

Решение

Вы могли бы сделать что-то вроде

Manipulate[
 Graphics[Line[{{0, 0}, p}], 
  PlotRange -> 2], {{p, {1, 1}}, {-1, -1}, {1, 1}, {0.4, 0.5}, Locator}]

который ограничил бы локатор прямоугольной решеткой с горизонтальным интервалом 0,4 и вертикальным интервалом 0,5. Диапазон координат для локатора определяется как {xmin,ymin} = {-1,-1} а также {xmax, ymax} = {1,1},


Если вам нужна большая гибкость, например, вы хотите ограничить положение локатора непрямоугольной решеткой или более общим набором координат, вы можете сделать что-то вроде

Manipulate[
 With[{tab = RandomReal[{-1, 1}, {40, 2}]}, 
  LocatorPane[Dynamic[p, (p = Nearest[tab, #][[1]]) &], 
   Graphics[{Line[{{0, 0}, Dynamic[p]}], {Red, Point /@ tab}}, PlotRange -> 2]]],
 {{p, {1, 1}}, ControlType -> None}]

В документации говорится:

Manipulate[expr, {u, umin, umax, du}]

позволяет изменять значение u между umin и umax с шагом du.

а также

Manipulate[expr, {u, {u1, u2, u3,...}}]

позволяет вам принимать дискретные значения.

Один из этих подходов должен работать для вас.

Другие вопросы по тегам