练习4闭合导线平差计算
double wir_cal1()
{
?? ?double pi = 3.1415926;
?? ?double xb, yb;
?? ?double x[20], y[20]; ? ? ? ? ? ? ? ? ? ??
?? ?double v_x[20] , v_y[20] ; ? ? ? ? ? ? ? ? ?//坐標(biāo)增量改正值
?? ?double oba[20] , v_oba[20]; ? ? ? ? ? ? ? ? //observation angle
?? ?double s[20]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 邊長s
?? ?double r[20]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //坐標(biāo)方位角 r
?? ?double ce_oba = 0, ce_x, ce_y;
?? ?double rba;
?? ?int j,p;
?? ?cout << setiosflags(ios::fixed) << setprecision(3);
?? ?cout << "輸入觀測角個(gè)數(shù)" << "j=" << endl;
?? ?cin >> j;
?? ?cout << "左角1右角-1" << endl;
?? ?cin >> p;
?? ?cout << "輸入起始坐標(biāo)B,A" << endl;
?? ?cin >> xb >> yb >> x[0] >> y[0];
?? ?cout << "rab=";
?? ?rba = bc_cal(xb, yb, x[0], y[0]);
?? ?//鍵入觀測角值
?? ?for (int i = 0; i < j; i++)
?? ?{
?? ??? ?cout << "請輸入觀測角值 " << i << endl;
?? ??? ?cin >> oba[i];
?? ?}
?? ?for (int i = 0; i < j-1; i++)
?? ?{
?? ??? ?cout << "輸入邊長 " << i << endl;
?? ? ? ?cin >> s[i];
?? ?}
?? ?//求觀測角閉合差
?? ?{
?? ??? ?for (int i = 0; i <j; i++)
?? ??? ?{
?? ??? ??? ?oba[i] = dfm2m(oba[i]);
?? ??? ??? ?cout << "oba[" << i << "]= " << oba[i] << endl;
?? ??? ?}
?? ??? ?int fg = sum(oba, 0, j);
?? ??? ?int fl = 180 * (j-1) * 3600;
?? ??? ?ce_oba = double(fg) - fl;
?? ??? ?cout << "理論值=" << fg << " 觀測值=" << fl << endl;
?? ??? ?cout << "觀測角閉合差" << ce_oba << endl;
?? ?}
?? ?//求坐觀測角改正值并分配
?? ?for (int i = 0; i < j; i++)
?? ?{
?? ??? ?v_oba[i] = -ce_oba / j;
?? ??? ?oba[i] += v_oba[i];
?? ?}
?? ?//觀測角化弧度值
?? ?for (int i = 0; i < j; i++)
?? ?{
?? ??? ?oba[i] = oba[i] / 3600 / 180 * pi;
?? ??? ?cout << oba[i] << endl;
?? ?}
?? ?//求坐標(biāo)方位角
?? ?for (int i = 0; i < j-1; i++)
?? ?{
?? ??? ?
?? ??? ?if (i == 0)
?? ??? ?{
?? ??? ??? ?r[0] = oba2pca(rba, oba[0],p);
?? ??? ?}
?? ??? ?else
?? ??? ??? ?r[i] = oba2pca(r[i - 1], oba[i],p);
?? ??? ?cout << "方位角R" << i << "=" << r[i] << endl;
?? ?}
?? ?//求坐標(biāo)增量x,y
?? ?double deta_x[20], deta_y[20];
?? ?for (int i = 0; i < j-1; i++)
?? ?{
?? ??? ?deta_xy(r[i], s[i], &deta_x[i], &deta_y[i]);
?? ?}
?? ?//計(jì)算坐標(biāo)增量閉合差、改正值并分配
?? ?{
?? ??? ?ce_x = sum(deta_x, 0, j-1);
?? ??? ?ce_y = sum(deta_y, 0, j-1);
?? ??? ?double S = sum(s, 0, j-1);
?? ??? ?for (int i = 0; i < j-1; i++)
?? ??? ?{
?? ??? ??? ?v_x[i] = -ce_x * s[i] / S;
?? ??? ??? ?v_y[i] = -ce_y * s[i] / S;
?? ??? ??? ?deta_x[i] += v_x[i];
?? ??? ??? ?deta_y[i] += v_y[i];
?? ??? ?}
?? ?}
?? ?//輸出坐標(biāo)x,y
?? ?for (int i = 1; i <j; i++)
?? ?{
?? ??? ?x[i] = x[i - 1] + deta_x[i-1];
?? ??? ?y[i] = y[i - 1] + deta_y[i-1];
?? ??? ?cout << "x" << i << "=" << x[i] << " y" << i << "=" << y[i] << endl;
?? ?}
?? ?return 0;
}
總結(jié)
以上是生活随笔為你收集整理的练习4闭合导线平差计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javaweb重定向——登录页面跳转到首
- 下一篇: 洛谷 P3369 【模板】普通平衡树