📄 search.java
字号:
public class search
{ public static void main(String[] args)
{ boolean [][] number=new boolean[6][6];
double x[]={0,150,85,150,145,130};
double y[]={0,140,85,155,50,150};
double h[]={Math.PI*52/180,Math.PI*243/180,Math.PI*236/180,Math.PI*220.5/180,Math.PI*159/180,Math.PI*230/180};
double v=800;
double [] t=new double[6];
double [][] T=new double[6][6];
double a,b,c;
double [][] d=new double[6][6];
double range=Math.PI*30/180;
double step=Math.PI*1/180;
double g[]={Math.PI*52/180,Math.PI*243/180,Math.PI*236/180,Math.PI*220.5/180,Math.PI*159/180,Math.PI*230/180};
double f[]={Math.PI*52/180,Math.PI*243/180,Math.PI*236/180,Math.PI*220.5/180,Math.PI*159/180,Math.PI*230/180};
double e[]={Math.PI*52/180,Math.PI*243/180,Math.PI*236/180,Math.PI*220.5/180,Math.PI*159/180,Math.PI*230/180};
double tempMinJ=0,MinJ=Math.PI*30/180;
int i1=1,i2=2,i3=4,i4=5,i5=3,i6=0;
int count1=0,count2=0,count3=0,count4=0,count5=0,count6=0;
boolean flag=true;
/* while (Math.abs(g[i1]-h[i1])<=range)
{h[i2]=g[i2];
count2=0;
while (Math.abs(g[i2]-h[i2])<=range)
{h[i3]=g[i3];
count3=0;
while (Math.abs(g[i3]-h[i3])<=range)
{h[i4]=g[i4];
count4=0; */
while (Math.abs(g[i4]-h[i4])<=range)
{h[i5]=g[i5];
count5=0;
while (Math.abs(g[i5]-h[i5])<=range)
{h[i6]=g[i6];
count6=0;
while (Math.abs(g[i6]-h[i6])<=range)
{
for(int i=0;i<=5;i++)
{if ((h[i]>=0)&(h[i]<=Math.PI/2))
t[i]=Math.min((160-x[i])/(v*Math.cos(h[i])),(160-y[i])/(v*Math.sin(h[i])));
if((h[i]>Math.PI/2)&(h[i]<=Math.PI))
t[i]=Math.min((-1)*x[i]/(v*Math.cos(h[i])),(160-y[i])/(v*Math.sin(h[i])));
if((h[i]>Math.PI)&(h[i]<=Math.PI*3/2))
t[i]=Math.min((-1)*x[i]/(v*Math.cos(h[i])),(-1)*y[i]/(v*Math.sin(h[i])));
if((h[i]>Math.PI*3/2)&(h[i]<=Math.PI*2))
t[i]=Math.min((160-x[i])/(v*Math.cos(h[i])),(-1)*y[i]/(v*Math.sin(h[i])));
}
for (int i=0;i<=4;i++)
for (int j=i+1;j<=5;j++)
T[i][j]=Math.min(t[i],t[j]);
for(int i=0;i<=4;i++)
for(int j=i+1;j<=5;j++)
{a=Math.pow(v,2)*(Math.pow(Math.cos(h[i])-Math.cos(h[j]),2)+Math.pow(Math.sin(h[i])-Math.sin(h[j]),2));
b=v*((x[i]-x[j])*(Math.cos(h[i])-Math.cos(h[j]))+(y[i]-y[j])*(Math.sin(h[i])-Math.sin(h[j])));
c=Math.pow(x[i]-x[j],2)+Math.pow(y[i]-y[j],2);
if(b>=0)
d[i][j]=c;
if(b<0&b>(-1)*a*T[i][j])
d[i][j]=c-Math.pow(b,2)/a;
if (b<=(-1)*a*T[i][j])
d[i][j]=a*Math.pow(T[i][j],2)+2*b*T[i][j]+c;}
flag=true;
outerfor:
for(int i=0;i<=4;i++)
for(int j=i+1;j<=5;j++)
if (d[i][j]<=64)
{flag=false;
break outerfor;
}
if (flag==true)
{ for(int i=0;i<=5;i++)
tempMinJ=tempMinJ+Math.abs(h[i]-e[i]);
if(tempMinJ<MinJ)
{MinJ=tempMinJ;
for(int i=0;i<=5;i++)
f[i]=h[i];
}
tempMinJ=0;
}
count6++;
if(count6%2==0)
h[i6]=g[i6]-count6/2*step;
else
h[i6]=g[i6]+(count6+1)/2*step; }
count5++;
if(count5%2==0)
h[i5]=g[i5]-count5/2*step;
else
h[i5]=g[i5]+(count5+1)/2*step; }
count4++;
if(count4%2==0)
h[i4]=g[i4]-count4/2*step;
else
h[i4]=g[i4]+(count4+1)/2*step; }
/* count3++;
if(count3%2==0)
h[i3]=g[i3]-count3/2*step;
else
h[i3]=g[i3]+(count3+1)/2*step; }
count2++;
if(count2%2==0)
h[i2]=g[i2]-count2/2*step;
else
h[i2]=g[i2]+(count2+1)/2*step; }
count1++;
if(count1%2==0)
h[i1]=g[i1]-count1/2*step;
else
h[i1]=g[i1]+(count1+1)/2*step; }*/
if(MinJ<Math.PI*30/180)
{System.out.println("MinJ="+MinJ*180/Math.PI);
for(int i=0;i<=5;i++)
System.out.println("f["+i+"]="+f[i]*180/Math.PI);
}
else
System.out.println("search false");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -