arr3[i, i] = 1; }
double a1 = arr3[0, 0]; double a2 = arr3[0, 1]; double a3 = arr3[0, 2]; double b1 = arr3[1, 0]; double b2 = arr3[1, 1]; double b3 = arr3[1, 2]; double c1 = arr3[2, 0]; double c2 = arr3[2, 1]; double c3 = arr3[2, 2];
/*利用线元素的初始值和控制点的地面坐标,代入共线方程(3-5-2), * 逐点计算像点坐标的近似值*/ //1.定义存放像点近似值的数组
double[] arr4 = new double[2 * n];//----------近似值矩阵 //2.逐点像点坐标计算近似值 //a.计算像点的x坐标近似值(x) for (int i = 0; i < 2 * n; i += 2) {
for (int j = 0; j < n; j++) {
arr4[i] = -f * (a1 * (arr2[j, 0] - Xs0) + b1 * (arr2[j, 1] - Ys0) + c1 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); } }
//b.计算像点的y坐标近似值(y) for (int i = 1; i < 2 * n; i += 2) {
for (int j = 0; j < n; j++) {
arr4[i] = -f * (a2 * (arr2[j, 0] - Xs0) + b2 * (arr2[j, 1] - Ys0) + c2 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); } }
//逐点计算误差方程式的系数和常数项,组成误差方程:
double[,] arr5 = new double[2 * n, 6]; //------------系数矩阵(A) //1.计算dXs的系数
for (int i = 0; i < 2 * n; i += 2) {
arr5[i, 0] = -1 / m; //-f/H == -1/m }
//2.计算dYs的系数
for (int i = 1; i < 2 * n; i += 2) {
arr5[i, 1] = -1 / m; //-f/H == -1/m }
//3.a.计算误差方程式Vx中dZs的系数 for (int i = 0; i < 2 * n; i += 2)