没有合适的资源?快使用搜索试试~ 我知道了~
(完整word版)matlab模拟光的反射折射.doc
需积分: 15 0 下载量 63 浏览量
2022-11-15
02:19:08
上传
评论
收藏 107KB DOC 举报
温馨提示
试读
2页
(完整word版)matlab模拟光的反射折射.doc
资源推荐
资源详情
资源评论
(完整 word 版)matlab 模拟光的反射折射
(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); %显示图形窗口
运行程序,得到运动的图形,即入射角改变,折射光和反射光的变化。得到截图如下:
资源评论
xinkai1688
- 粉丝: 335
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功