测绘中常用到坐标反算问题,因为有固定的思路故可以用程序表示
#include<iostream>
#include<cmath>
using namespace std;
int main() {const double pi = 3.1415926;
double MinusX = 0, MinusY = 0;
double azimuth = 0;
long double x1, x2, y1, y2;
cout<<"请输入已知两点的坐标:";
cin >> x1 >> x2 >> y1 >> y2;//输入已知两点的坐标
double a = 0;
MinusX = x2 - x1;
MinusY = y2 - y1;
a = atan(MinusY / MinusX)*(pi/180);
if (MinusX == 0) {
if (MinusY > 0)azimuth = pi/2;
else if (MinusY < 0)azimuth = 3*pi/4;
}
else if (MinusX < 0)azimuth = a + pi;
else if (MinusX > 0) {
if (MinusY > 0)azimuth = a;
if (MinusY < 0)azimuth = 2*pi + a;
}
cout << a<<" "<<azimuth;
}