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

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;

你可能感兴趣的:(射线追踪,matlab,开发语言)