|
本帖最后由 CK345 于 2016-6-24 17:16 编辑
X0 = input('请输入起点横坐标 X\n X0 = ');
Y0 = input('请输入起点纵坐标 Y\n Y0 = ');
Xe = input('请输入终点横坐标 X\n Xe = ');
Ye = input('请输入终点纵坐标 Y\n Ye = ');
h = input('输入步长\n h = ');
x=[X0,Xe];
y=[Y0,Ye];
plot(x,y);
hold on;
Xe=Xe-X0;
Ye=Ye-Y0;
NXY= (abs(Xe)+abs(Ye))/h;
step=0;
Fm=0;
Xm=X0;
Ym=Y0;
if(Xe>0&Ye>=0) XOY=1;
end
if(Xe<=0&Ye>0) XOY=2;
end
if(Xe<0&Ye<=0) XOY=3;
end
if(Xe>=0&Ye<0) XOY=4;
end
while (step<NXY)
switch XOY
case 1
if(Fm>=0)
x1=[Xm,Xm+h];
y1=[Ym,Ym];
else
x1=[Xm,Xm];
y1=[Ym,Ym+h];
end
case 2
if(Fm<0)
x1=[Xm,Xm-h];
y1=[Ym,Ym];
else
x1=[Xm,Xm];
y1=[Ym,Ym+h];
end
case 3
if(Fm>=0)
x1=[Xm,Xm-h];
y1=[Ym,Ym];
else
x1=[Xm,Xm];
y1=[Ym,Ym-h];
end
case 4
if(Fm<0)
x1=[Xm,Xm+h];
y1=[Ym,Ym];
else
x1=[Xm,Xm];
y1=[Ym,Ym-h];
end
end
step=step+1;
plot(x1,y1,'r-'); %由此点和前一点坐标组成的2个向量画直线
Xm=x1(2); %保存此点坐标供下次作图和比较时使用
Ym=y1(2);
Fm=(Ym-Y0)*Xe-(Xm-X0)*Ye;
hold on;
text((x1(1)+x1(2))/2,(y1(1)+y1(2))/2,[num2str(step)])
pause(0.5); %延时程序形参为每走一步所用时间
end
xlabel('X')
ylabel('Y')
title(['四象限直线插补'])
hold off;
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|