【发布时间】:2012-03-10 11:45:12
【问题描述】:
我正在尝试创建一个简单的界面来绘制二次拉格朗日多项式。为此,您只需要 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,因为我想将此概念推广到张量积表面。
【问题讨论】:
-
你有没有试过用 linkdata 解决这个问题?
标签: matlab