MATLAB代码实现射线追踪的快速方法

MATLAB代码实现射线追踪的快速方法

        if zFS(i1)==zJS(i2)
            if mod(zFS(i1),dz) == 0
                if zFS(i1) == ymax
                    dr(n,nx*floor(abs(zFS(i1)-1e-6)/dz)+1:nx*(ceil(abs(zFS(i1)-1e-6)/dz)))=delta/nx;
                else
                    dr(n,nx*floor(abs(zFS(i1)+1e-6)/dz)+1:nx*(ceil(abs(zFS(i1)+1e-6)/dz)))=delta/nx;
                end
            else
                dr(n,nx*floor(abs(zFS(i1))/dz)+1:nx*(ceil(abs(zFS(i1))/dz))) = delta/nx;
            end
        else
        clear fx fy fyh fyv dr0 fxm fym fymz fxmz fiexy
        fyh = ceil(min(zFS(i1),zJS(i2))/dz)*dz:dz:floor(max(zFS(i1),zJS(i2))/dz)*dz;
        fyv = min(zFS(i1),zJS(i2)):abs(zFS(i1)-zJS(i2))/nx:max(zFS(i1),zJS(i2));
        fy = [fyh,fyv];
        fy = unique(fy);  
        fx = (fy-b)/k;     
        dr0 = sqrt( (fy(1:end-1)-fy(2:end)).^2 +...
            (fx(1:end-1)-fx(2:end)).^2 );      
        fxm = 0.5*( fx(1:end-1) + fx(2:end) );
        fym = 0.5*( fy(1:end-1) + fy(2:end) );
        fymz = ceil(abs(fym)/dz);
        fxmz = floor(abs(fxm)/dx);
        fiexy = nz*fxmz + fymz;
        dr(n,fiexy) = dr0;
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商功贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值