# Работа с мышкой в MATLAB

## 10. Пример 6 − сплайн с перемещаемыми узлами

Пусть задано несколько точек, соединённых кубическим сплайном. При позиционировании мышки над узловой точкой вид её указателя должен измениться, показывая, что точку можно захватить. Пользователь, захватив мышкой узловую точку, должен иметь возможность её переместить. При этом график сплайна должен постоянно перерисовываться.

Определимся с размерами фигуры и её дочерних объектов. Пусть значения аргументов x изменяются от 0 до 6 с шагом 1 (всего задано 7 точек). Чтобы график выглядел привлекательно, зададим диапазон возможных изменений y в пределах от 0 до 4. На обычных мониторах вполне достаточно задать по 100 пикселей на единицу масштаба осей. Таким образом, мы определили необходимые размеры осей: 600ґ400 пикселей. Фигура будет иметь с каждой стороны осей поля по 20 пикселей, т.е. её размер будет 640ґ440 пикселей.

Зададим расположение фигуры посередине экрана. Для этого узнаем размеры экрана монитора (монитор - это объект с дескриптором 0). По ним вычислим положение фигуры на экране. Нарисуем фигуру и оси на ней. Сохраним команды в файле DragSpline.m. Вот созданная нами сейчас фигура:

clear all % очистили рабочую область scrsz = get(0,'ScreenSize'); % размеры экрана монитора wscr = 640; % ширина окна hscr = 440; % высота окна waxe = wscr-40; % ширина осей haxe = hscr-40; % высота осей wgr = 6; % диапазон по x hgr = 4; % диапазон по y scw = waxe/wgr; % масштаб по x sch = haxe/hgr; % масштаб по y pl = (scrsz(3)-wscr)/2; % левый край фигуры pu = (scrsz(4)-hscr)/2; % верхний край фигуры hFig = figure('Position',[pl pu wscr hscr],... 'Resize','off','MenuBar','none',... 'NumberTitle','off',... 'Name','Spline Interpolation'); hAxes = axes('Units','pixels',... 'Position',[20 20 waxe haxe],... 'XLim',[0 wgr],'YLim',[0 hgr]);