1、(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); %给图形下半部分设置成水的颜色 t
2、ext(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
3、,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); %显示图形窗口 运行程序,得到运动的图形,即入射角改变,折射光和反射光的变化。得到截图如下: