Próbuję stworzyć prosty interfejs do wykreślania wielomianów Lagrange'a. Do tego potrzebne są tylko 3 punkty (z każdą własną współrzędną x, y, z), które następnie interpoluje się za pomocą wielomianów Lagrange'a kwadratowego.Jak zrobić interaktywny dział MATLAB?
Łatwo jest utworzyć wersję statyczną lub nawet taką, która pozwala użytkownikowi wprowadzić 3 punkty przed wykreśleniem krzywej. Ale użytkownik powinien także móc przeciągnąć istniejący punkt w oknie wykresu do innej pozycji, a następnie ponownie narysować krzywą automatycznie, używając nowej pozycji tego punktu!
Tak w skrócie, użytkownik powinien być w stanie przeciągnąć te czarne kropki do innej lokalizacji. Następnie (lub podczas przeciągania) należy zaktualizować krzywą.
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);
myślę, że albo trzeba użyć funkcji jak WindowButtonDownFcn, WindowButtonUpFcn i WindowButtonMotionFcn, lub ImPoint z obrazka Processing Toolbox. Ale jak?
[Edytuj] Powinien również działać w 3D, ponieważ chciałbym uogólnić tę koncepcję na tensor powierzchni produktu.
Czy kiedykolwiek próbowałeś rozwiązać ten problem z linkdata? –