Sto provando a creare un'interfaccia semplice per tracciare i polinomi di Lagrange quadratici. Per questo, sono necessari solo 3 punti (con le loro coordinate x, y, z), che vengono poi interpolati usando i polinomi di Lagrange quadratici.Come rendere interattivo un grafico MATLAB?
È facile creare una versione statica o anche una che consente all'utente di inserire i 3 punti prima di tracciare la curva. Ma dovrebbe anche essere possibile per l'utente trascinare un punto esistente nella finestra della trama in un'altra posizione, e quindi ri-tracciare la curva automaticamente usando la nuova posizione di questo punto!
Così, in breve, l'utente dovrebbe essere in grado di trascinare questi puntini neri in un'altra posizione. Dopo di ciò (o durante il trascinamento), la curva dovrebbe essere aggiornata.
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);
penso sia dovuto usare funzioni come WindowButtonDownFcn, WindowButtonUpFcn e WindowButtonMotionFcn, o il ImPoint dalla Image Processing Toolbox. Ma come?
[Modifica] Dovrebbe funzionare anche in 3D, poiché mi piacerebbe generalizzare questo concetto alle superfici del prodotto tensoriale.
hai mai provato a risolvere questo problema con linkdata? –