边界矩形是指包围一个二维平面上一系列点的矩形,如图 10-24d所示。编 写一个方法,为二维平面上一系列点返回一个边界矩形,如下所示:
public static MyRectangle2D getRectangle(double□口 points) Rectangle2D类在编程练习题丨0.13 中定义。编写一个测试程序,提示用户输人 5 个点, 然后显示边界矩形的中心、宽度以及髙度。下面是一个运行示例
__
——————方法块:由于此题跟上题一样,请移步到:https://blog.csdn.net/IFHHH/article/details/105581205 得到方法
————————主函数块:
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
public class Exercise10_15 {
public static void main(String[] args) {
System.out.print("Enter five points:");
Scanner input = new Scanner(System.in);
double[][] points=new double[5][2];
for (int i = 0;i <points.length;i++ ){
for (int k = 0;k<points[i].length;k++){
points[i][k]=input.nextDouble();
}
}
MyRectangle2D r1=getRectangle(points);
System.out.print("The bounding rectangle's center ( "+r1.getX()+" , "+r1.getY()+" ), width "+r1.getWidth() +", height "+r1.getHeight());
input.close();
}
public static MyRectangle2D getRectangle(double[][] points){
double[] x=new double[points.length];
double[] y=new double[points.length];
//将二维数组的点分开x,y并放入不同数组,方便计算width和height
for (int i=0;i<points.length;i++){
x[i]=points[i][0];
y[i]=points[i][1];
}
Arrays.sort(x);
Arrays.sort(y);
//将x,y排序,此排序结果为:从小到大;
MyRectangle2D r1=new MyRectangle2D();
r1.setX((x[4]+x[0])/2);
r1.setY((y[4]+y[0])/2);
r1.setWidth(x[4]-x[0]);
r1.setHeight(y[4]-y[0]);
//中心点的x,y为最大的点与最小的点的和的1/2;宽高为:最大的点与最小的点之差:可自行画图验证
return r1;
}
}