import java.io.*;
class laganRayTracing{
private float pi = 3.141592653f;
private int nx,nz,nshot,nray,ngrid;
private float dx,dz,s,dangle,fangle;
private float[] v0;
private String raypath;
laganRayTracing(){
nx = nz = 301;
dx = dz = 5f;
s = 0.5f;
fangle = 0f;
dangle = 4f;
nray = 2;
ngrid = nx * nz;
raypath = "raypath.txt";
v0 = new float [ngrid];
for(int i=0;i<ngrid;i++){
v0[i] = 2000.0f;
if(i>150*nz)v0[i] = 3000f;
}
}
public void makeRay()throws java.io.IOException{
float p_x,p_z,n_x,n_z,l_x,l_z;
float p_xend,p_zend;
float n_xnew,n_znew;
float p_x0, p_z0, dip;
int ip_lux,ip_ldx,ip_rux,ip_rdx;
int ip_luz,ip_ldz,ip_ruz,ip_rdz;
int irayon,ishot;
float angle,time,v;
p_x0 = (nx-1)*dx / 3;
p_z0 = (nz-1)*dz / 2;
p_x = p_x0;
p_z = p_z0;
Writer rayfp = new FileWriter(raypath);
for(int iray = 0; iray < nray; iray++){
p_x = p_x0;
p_z = p_z0;
angle = fangle + iray*dangle;
angle = angle*pi/180.0f;
//System.out.println(angle);
n_x = (float)Math.cos(angle);
n_z = (float)Math.sin(angle);
time = 0.0f;
do{
/* cal_gridpoint */
ip_lux = (int)(p_x/dx);
ip_luz = (int)(p_z/dz);
ip_ldx = ip_lux;
ip_ldz = ip_luz+1;
ip_rux = ip_lux+1;
ip_ruz = ip_luz;
ip_rdx = ip_lux+1;
ip_rdz = ip_luz+1;
/* cal_gridvel */
float l_x1 = (v0[ip_rux*nz + ip_ruz]-v0[ip_lux*nz + ip_luz])/dx;
float l_x2 = (v0[ip_rdx*nz + ip_rdz]-v0[ip_ldx*nz + ip_ldz])/dx;
l_x = ( l_x1+l_x2 ) / 2.0f;
float l_z1=(v0[ip_ldx*nz + ip_ldz]-v0[ip_lux*nz + ip_luz])/dz;
float l_z2=(v0[ip_rdx*nz + ip_rdz]-v0[ip_rux*nz + ip_ruz])/dz;
l_z=(l_z1+l_z2)/2.0f;
v=v0[ip_rux*nz + ip_ruz]+v0[ip_lux*nz + ip_luz]+v0[ip_rdx*nz + ip_rdz]
+v0[ip_ldx*nz + ip_ldz];
v=v/4.0f;
//System.out.println(v);
/* cal_path */
float dotmult_ln=l_x*n_x+l_z*n_z;
float dotmult_ll=l_x*l_x+l_z*l_z;
p_xend=p_x+n_x*s*(1f+dotmult_ln*0.5f*s/v)-0.5f*l_x*s*s/v
-n_x*s*s*s*(dotmult_ll-dotmult_ln*dotmult_ln)/(6.0f*v*v);
p_zend=p_z+n_z*s*(1f+dotmult_ln*0.5f*s/v)-0.5f*l_z*s*s/v
-n_z*s*s*s*(dotmult_ll-dotmult_ln*dotmult_ln)/(6.0f*v*v);
n_xnew=n_x*(1f+dotmult_ln*s/v)-l_x*s/v
-n_x*s*s*(dotmult_ll-dotmult_ln*dotmult_ln)/(2.0f*v*v);
n_znew=n_z*(1f+dotmult_ln*s/v)-l_z*s/v
-n_z*s*s*(dotmult_ll-dotmult_ln*dotmult_ln)/(2.0f*v*v);
time+=s/v*(1f+s*s*(dotmult_ll+dotmult_ln*dotmult_ln)
/(6f*v*v)-dotmult_ln*s/(2f*v));
/* buffer */
p_x = p_xend;
p_z = p_zend;
n_x = n_xnew;
n_z = n_znew;
rayfp.write(p_x+" "+p_z+" \n");
//System.out.println(p_x+" "+p_z+" ");
}while((p_xend>=0.0f)&&(p_xend<((nx-1f)*dx))&&(p_zend>=0.0f)&&(p_zend<(nz-1f)*dz));
rayfp.write("-999999.9 -999999.9 \n");
}
rayfp.close();
}
public static void main(String[]args)throws java.io.IOException{
laganRayTracing l = new laganRayTracing();
l.makeRay();
}
}1. Tracert(跟踪路由)用于确定 IP数据包访问目标所采取的路径。 Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP错误消息来确定从一个Host到网络上其他主机的Router tracert命令能够显示你的数据包在网络上进行传输时经历的一个个大大小小的ISP的路由器。 2. PING (Packet Internet Groper),即因特网包...
1.主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件 2.构建工程 3.构建ZipkinServer工程 4.改造EurekaClients 5.改造EurekaClientApplication,代码示例如下: 6.启动工程,演示追踪 7.参考文档...
1、Debug追踪 Debug调试程序: 可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug。 使用方式: 在行号的右边,鼠标左键单击,添加断点(初学可以添加到每个方法的第一行,熟练之后哪里有bug添加到哪里) 右键,选择Debug执行程序,程序就会停留在添加的第一个断点处 执行程序: F8:逐行执行程序 F7:进入到方法中 shift + F8:跳出方法 F9:跳到下一个断点,如果没...
说明:使用bytebuddy框架来实现 RestTemplate链路追踪,并且将日志id追加到头部,借鉴 skywalking 中增强技术;直接上代码。 maven依赖 1. 入口类 2. 插件读取器 3. agent-plugin.def文件定义 4. 插件持有器 5. 插件定义的顶级接口类 6. 抽象插件类 7. 增强方法的顶级接口 8. 环绕方法的拦截器 9. 方法执行的包装方法 10. 实...
看到网络上大量重复的博客,书写类似的代码。但英文解释并不清晰,希望通过此博客给出详尽解释。...
Java实现牛顿法和弦截法 写个数值分析作业用计算器算起来太麻烦咯,还是写些代码自动化一下 输出结果: ---------------------牛顿迭代法------------------------ x1=0.5663110031972182 x2=0.5671431650348623 x3=0.5671432904097811 x4=0.567143290409784 x5=0.56714...
引子 在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话: “Debug一下吧。” “线上机器,没开Debug端口。” “看日志,看看请求值和返回值分别是什么?” “那段代码没打印日志。” “改代码,加日志,重新发布一...
会话追踪: Cookie: Session:...
快速排序法又叫二分法排序: ...
1 贝塞尔曲线 贝塞尔曲线(The Bézier Curves),是一种在计算机图形学中相当重要的参数曲线(三维空间中称为贝塞尔曲面). 贝塞尔曲线由法国工程师皮埃尔·贝塞尔(Pierre Bézier)于1962年发表,他运用贝塞尔曲线来为汽车的主体进行设计. 接下来将从一次贝塞尔曲线开始(以下简称一次曲线. 类似的,N次贝塞尔曲线称为N次曲线),研究贝...