matlab模拟光的反射问题,matlab模拟光的反射折射.doc

(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); %显示图形窗口

运行程序,得到运动的图形,即入射角改变,折射光和反射光的变化。得到截图如下:

展开阅读全文

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值