Я пытаюсь создать простой интерфейс для построения квадратичных многочленов Лагранжа. Для этого вам нужно всего 3 балла (с каждой их координатами x, y, z), которые затем интерполируются с использованием квадратичных многочленов Лагранжа.
Легко сделать статическую версию или даже одну, которая позволяет пользователю вводить 3 точки перед построением кривой. Но также должно быть возможным, чтобы пользователь перетащил существующую точку в окне графика в другую позицию, а затем автоматически изменил график кривой, используя новое положение этой точки!
Короче говоря, пользователь должен иметь возможность перетаскивать эти черные точки в другое место. После этого (или при перетаскивании) кривую следует обновить.
function Interact()
% Interactive stuff here
figure();
hold on;
axis([0 7 0 5])
DrawLagrange([1,1; 3,4; 6,2])
function DrawLagrange(P)
plot(P(:,1), P(:,2), 'ko--', 'MarkerSize', 10, 'MarkerFaceColor', 'k')
t = 0:.1:2;
Lagrange = [.5*t.^2 - 1.5*t + 1; -t.^2 + 2*t; .5*t.^2 - .5*t];
CurveX = P(1,1)*Lagrange(1,:) + P(2,1)*Lagrange(2,:) + P(3,1)*Lagrange(3,:);
CurveY = P(1,2)*Lagrange(1,:) + P(2,2)*Lagrange(2,:) + P(3,2)*Lagrange(3,:);
plot(CurveX, CurveY);
Я думаю, что мне нужно либо использовать такие функции, как WindowButtonDownFcn, WindowButtonUpFcn и WindowButtonMotionFcn, или ImPoint Инструментарий обработки изображений. Но как?
[Изменить] Он также должен работать в 3D, так как я хотел бы обобщить это понятие на тензорные поверхности продукта.