package aa;
public class T3 {
public static void main(String[] args) {
int[][] a={
{1,3},{7,3},{1,5}//,{7,5}
};
System.out.println("结果:"+isB(a,2,4));
}
public static boolean isB(int[][] a,int x,int y)
{
//循环各点进行判断--判断点是否在二线之间
for(int i=0;i<a.length;i++)
{
boolean f=isA(a,i,x,y);
System.out.println(i+" "+f);
if(!f)
return false;
}
return true;
}
public static boolean isA(int[][] a,int n,int x,int y)
{
System.out.print("["+a[n][0]+","+a[n][1]+"]");//基准点
double[] k=new double[a.length];//每一轮斜率
for(int i=1;i<a.length;i++)//循环次数比点少1
{
int m=n+i;//比较点
if(m>=a.length)
m-=a.length;
k[i-1]=(a[m][1]-a[n][1]-0.0)/(a[m][0]-a[n][0]);//基准点与比较点的斜率
System.out.print(k[i-1]+",");
}
System.out.println("-----");
double k0=(y-a[n][1]-0.0)/(x-a[n][0]);//判断点与基准点的斜率
System.out.println("k0="+k0);
//求斜率的最大值和最小值
double min=k[0],max=k[0];
for(int i=1;i<a.length;i++)
{
if(k[i]<min)
min=k[i];
if(k[i]>max)
max=k[i];
}
//判断点是否在二线之间
if(k0>=min&&k0<=max)
return true;
return false;
}
}