// 计算线上两点之间的方向
private double calculateDirectionBetweenRoutePoints(double p1x, double p1y,
double p2x, double p2y) {
double dx, dy;
dx = p2x - p1x;
dy = p2y - p1y;
if (Math.abs(dx) <= 0.0001 && Math.abs(dy) <= 0.0001)
return 0;
if (Math.abs(dx) <= 0.0001) {
if (dy < 0)
return 180;
else
return 0;
}
if (Math.abs(dy) <= 0.0001) {
if (dx < 0) {
return 270;
} else
return 90;
}
// System.out.println("dx: " + dx + ", dy: " + dy);
double cta = arad(Math.atan(dx / dy));
if (dx < 0 && dy <= 0) {
cta = 180 + cta;
} else if (dy < 0) {
cta = 180 + cta;
} else if (dx < 0) {
cta = 360 + cta;
}
// System.out.println(cta);
return cta;
}
private double arad(double rad) {
return rad * 180 / Math.PI;
}
private double rad(double degree) {
return degree * Math.PI / 180;
}
// 计算线上两点之间的距离
private double calculateDistanceBetweenRoutePoints(double p1x, double p1y,
double p2x, double p2y) {
return lineSpace(p1x, p1y, p2x, p2y);
}
// 计算两点之间的距离
private double lineSpace(double x1, double y1, double x2, double y2) {
double lineLength = 0;
lineLength = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
return lineLength;
}
09-18