(3).我们首先假设光从空气进入水中,此时 n=1。5。用一次函数图像来表示光的传播路线,通过改变光的入射点来改变光的入射角和入射方向,并根据反射光、折射光与入射光的斜率关系来控制反射角、折射角与入射角关系,设计程序如下:function ZHEFAN; % 光的折射 光的反射set(gcf,'doublebuffer','on'); %设置图片属性,双缓存防止图闪耀axis([-2,2,-1,1]);hold on; %设置坐标轴范围(x 轴-2 到 2,y 轴-1 到 1)rectangle('Position’,[-2,—1,4,1],。。。 'FaceColor’,[0。1,0。6,0。6]); %给图形下半部分设置成水的颜色 text(1.4,0.4,'air','color’,'r’,'fontsize',14) text(1.4,—0。4,'water','color','r','fontsize’,14) %注明空气和水,并且设置字体n=1.5;t=0; %设置折射率text(0.7,0。6,['n= ',num2str(n)],'fontsize',14); %在图形上标明折射率HL=rectangle('Position',[-0.02,0。4,0.04,0。2],。.. 'FaceColor',[ 0.3,0.8,0.4]); %在图形上画出光源Hi=plot([0,0],[0,0。4],’b'); %设置入射光Ho=plot([0,0],[0,—1]); %设置折射光Hr=plot([0,0],[0,1],'r’); %设置反射光xlabel('请按空格停止’,。.。 ’fontsize’,14,'color’,'r'); %设置结束提示k=1;dt=0。1; %初始化 k 方便循环,设置入射光变化量while k %循环体 pause(0。5); % 设置每次图形变换间隔为 0.5 秒 s=get(gcf,’currentkey’); if strcmp(s,'space'); clc;k=0; end %输入空格终止演示,是图形停止 if abs(t)〉0。3*pi dt=-dt; end %设置入射光变化的范围 t=t+dt; A=t; Xi=0.4*tan(A); set(Hi,'xdata’,[Xi,0]); %入射光发生改变 Ao=asin(sin(A)/n); Xo=Xi+tan(Ao); set(Ho,’xdata',[Xi,Xo]); %绘制最后折射光 Xr=Xi+tan(A); set(Hr,’xdata’,[Xi,Xr]); %绘制最后反射光 set(HL,’Facecolor’,rand(1,3)) end figure(gcf); %显示图形窗口 运行程序,得到运动的图形,即入射角改变,折射光和反射光的变化。得到截图如下: