问题描述:
欧几里德、毕达哥拉斯、帕斯卡和蒙特打算去公园玩,公园是N行,M列。帕斯卡、欧几里德和蒙特站在三个不同位置。毕达哥拉斯最后一个到达,并决定站在一个位置并使四个点组成平行四边形。已知欧几里德和蒙特位置是平行四边形的对角线。编程,求毕达哥拉斯的位置。
输入七个参数:
行数N clos
列数M rows
positionPark 公园矩阵坐标
endInx 欧几里德x坐标
endIny 欧几里德y坐标
montx 蒙特X坐标
moteY 蒙特Y坐标
输出:毕达哥拉斯组成平行四边形的x和y坐标。
分析:首先需要确定帕斯卡的坐标位置。已知三点,并且确定其中两点为对角线。求出对角线的中点E,根据点E距离C点横纵坐标的距离,与点D距离点E横纵坐标的距离相等,求出点D的坐标。
代码如下:
public static void main(String[] args) {
/* char [][]positionInpark={
{'-','-','-','-','-','-','-','-'},
{'-','+','-','-','-','-','-','-'},
{'-','-','-','-','-','-','-','-'},
{'-','+','-','-','-','-','+','-'},
};*/
char [][]positionInpark={
{'-','-','-','-'},
{'-','+','-','-'},
{'+','-','-','-'},
{'-','-','-','-'},
{'-','-','+','-'},
};
int a[]= toCompleteParrelogrom(5,4,positionInpark,2,2,5,3);
System.out.println(a);
}
public static int [] toCompleteParrelogrom(int rows,int clos,char [][]positionInpark,int endInx,int endIny,int moteX,int moteY){
int pax=0,pay=0;
for(int i=0;i<rows;i++){
for(int j=0;j<clos;j++){
if(positionInpark[i][j]=='+'){
if(endIny==j+1&&endInx==i+1||moteY==j+1&&moteX==i+1){
}else
{
pax=i+1;//确定位置
pay=j+1;
}
}
}
}
double x=((double)endInx+moteX)/2;
double y=((double)endIny+moteY)/2;
double xcha=x-pax;
double ycha=y-pay;
double resultx=(xcha+x);
double resulty=(ycha+y);
int a[]=new int[]{(int)resultx,(int)resulty};
return a;
}