有三個點,計算出角平分線。首先要算出兩個點之間的方位角,根據方位角算出夾角。下面以角平分線長度是20示例計算。
double dStartAngle = Math.atan2(mdE1 - mdE2, mdN1 - mdN2);
double dEndAngle = Math.atan2(mdE3 - mdE2, mdN3 - mdN2);
double dWAngle = dEndAngle - dStartAngle;//外角角度
if (dWAngle < 0) {
dWAngle += 2 * Math.PI;
} else if (dWAngle > (2 * Math.PI)) {
dWAngle -= 2 * Math.PI;
}
double dNAngle = 2 * Math.PI - dWAngle;//夾角 這個角度是比較小的
/// 這裏算出來角度都是弧度單位的
double temp = dWAngle / 2 + dStartAngle;
///外角平分線的點
double N = 20 * Math.cos(temp) + mdN2;
double E = 20 * Math.sin(temp) + mdE2;
///夾角(內角)平分線的點
N = 2 * mdN2 - N;
E = 2 * mdE2 - E;
計算方位角:
//計算兩點方位角
public double getAzimuth(double dN1, double dE1, double dN2, double dE2) {
double dAzimuth = 0;
dAzimuth = Math.atan2(dE2 - dE1, dN2 - dN1) * 180 / Math.PI;
if (dAzimuth < 0)
dAzimuth += 360;
return dAzimuth;
}