/**
* 两点间坐标的生成
* @param x1
* @param y1
* @param x2
* @param y2
*/
public static void cal(BigDecimal x1, BigDecimal y1, BigDecimal x2, BigDecimal y2){
//坐标的标准增量
BigDecimal _100 = new BigDecimal(0.000100);
//坐标的推算方法(加或减)
boolean xAddTrue = true;
boolean yAddTrue = true;
if(x1.compareTo(x2) > 0){
xAddTrue = false;
}
if(y1.compareTo(y2) > 0){
yAddTrue = false;
}
//经度增量的绝对值
BigDecimal xAbs = x1.subtract(x2).abs().setScale(6, BigDecimal.ROUND_HALF_UP);
//维度增量的绝对值
BigDecimal yAbs = y1.subtract(y2).abs().setScale(6, BigDecimal.ROUND_HALF_UP);
BigDecimal abs = ((xAbs.compareTo(yAbs) > 0)?xAbs:yAbs).setScale(6, BigDecimal.ROUND_HALF_UP);
//标准增量下的循环次数
BigDecimal degree = abs.divide(_100, 0, BigDecimal.ROUND_DOWN);
//经度实际增量
BigDecimal xIncrement = xAbs.divide(degree, 6, BigDecimal.ROUND_DOWN);
//维度实际增量
BigDecimal yIncrement = yAbs.divide(degree, 6, BigDecimal.ROUND_DOWN);
for(int i=0;i<degree.intValue();i++){
if(xAddTrue){
x1 = x1.add(xIncrement);
}else{
x1 = x1.subtract(xIncrement);
}
if(yAddTrue){
y1 = y1.add(yIncrement);
}else{
y1 = y1.subtract(yIncrement);
}
System.out.println("x:"+x1.setScale(6, BigDecimal.ROUND_HALF_UP)+" ,y:"+y1.setScale(6, BigDecimal.ROUND_HALF_UP));
}
}