matlab模拟光线,关于MATLAB模拟光线多次反射

本文作者分享了一个MATLAB程序,用于模拟光线的反射过程。然而,在运行代码时发现光线在第三次反射后没有继续反射。作者请求帮助找出代码中的问题,并提供了包含光源位置、反射体定义和反射次数的详细代码。
摘要由CSDN通过智能技术生成

本帖最后由 matlabwhite 于 2017-8-25 13:13 编辑

写了个程序模拟光线反射,但是为啥反射到第三次就没有继续反射了...有没有大神帮忙看一下问题出在哪里了?代码如下

function []=test()

body{1}=[275,250;300,400;300,250;275,250];

body{2}=[250,400;275,250;250,250;250,400];

%顺时针连起来的反射体边缘

range=[200,500;350,500;350,150;200,150;200,500];

%定义最大范围的边框

nbody=length(body); %反射体数目

lightsource=cell(1,5);

for ii=1:5

lightsource{ii}=[250,400,-45-3*ii+3];%光源位置和光线方向与x轴正方向夹角

end

nls=length(lightsource); %光源数目

num=6;%反射次数

lightline=countline(lightsource,body,range,num);%计算光线轨迹

figure(1);

clf;

plot(range(:,1),range(:,2),'k','linewidth',2);%画最外面方框

hold on;

for ii=1:nbody

fill(body{ii}(:,1),body{ii}(:,2),'k','edgecolor','k');%填充反射体

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值