版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、using system;using system.collections.generic;using system.linq;using system.text;namespace 单像空间后方交会 class program static void main(string args) int x0, y0, i, j; double f, m; console.write(请输入像片比例尺:); m = double.parse(console.readline(); console.write(请输入像片的内方位元素x0:);/均以毫米为单位 x0 = int.parse(console
2、.readline(); console.write(请输入像片的内方位元素y0:); y0 = int.parse(console.readline(); console.write(请输入摄影机主距f:); f = double.parse(console.readline(); console.writeline(); /输入坐标数据 double, zuobiao = new double4, 5; for (i = 0; i 4; i+) for (j = 0; j 5; j+) if (j 3) console.write(请输入第0个点的第1个地面坐标:, i + 1, j +
3、1); zuobiaoi, j = double.parse(console.readline(); else console.write(请输入第0个点的第1个像点坐标:, i + 1, j - 2); zuobiaoi, j = double.parse(console.readline(); console.writeline(); /归算像点坐标 for (i = 0; i 4; i+) for (j = 3; j 5; j+) if (j = 3) zuobiaoi, j = zuobiaoi, j - x0; else zuobiaoi, j = zuobiaoi, j - y0;
4、 /计算和确定初值 double zs0 = m * f, xs0 = 0, ys0 = 0; for (i = 0; i 4; i+) xs0 = xs0 + zuobiaoi, 0; ys0 = ys0 + zuobiaoi, 1; xs0 = xs0 / 4; ys0 = ys0 / 4; /逐点计算误差方程系数 double, xishu = new double8, 6; for (i = 0; i 8; i += 2) double x, y; x = zuobiaoi / 2, 3; y = zuobiaoi / 2, 4; xishui, 0 = xishui + 1, 1 =
5、 -1 / m; xishui, 1 = xishui + 1, 0 = 0; xishui, 2 = -x / (m * f); xishui, 3 = -f * (1 + x * x / (f * f); xishui, 4 = xishui + 1, 3 = -x * y / f; xishui, 5 = y; xishui + 1, 2 = -y / (m * f); xishui + 1, 4 = -f * (1 + y * y / (f * f); xishui + 1, 5 = -x; /计算逆阵 double, dmatrix =matrixche(matrixtrans(xi
6、shu), xishu); double, dreturn = reversematrix(dmatrix, 6); console.writeline(逆矩阵为:); if (dreturn != null) matrixout(dreturn); /求解过程 double phi0 = 0, omega0 = 0, kappa0 = 0; int q = 0; double, r = new double3, 3; double, jinsi = new double4, 2; double chazhi = new double8; double jieguo = new double6
7、; double, zhong = matrixche(dreturn, matrixtrans(xishu); do /计算旋转矩阵r r0, 0 = math.cos(phi0) * math.cos(kappa0) - math.sin(phi0) * math.sin(omega0) * math.sin(kappa0); r0, 1 = -math.cos(phi0) * math.sin(kappa0) - math.sin(phi0) * math.sin(omega0) * math.cos(kappa0); r0, 2 = -math.sin(phi0) * math.cos
8、(omega0); r1, 0 = math.cos(omega0) * math.sin(kappa0); r1, 1 = math.cos(omega0) * math.cos(kappa0); r1, 2 = -math.sin(omega0); r2, 0 = math.sin(phi0) * math.cos(kappa0) + math.cos(phi0) * math.sin(omega0) * math.sin(kappa0); r2, 1 = -math.sin(phi0) * math.sin(kappa0) + math.cos(phi0) * math.sin(omeg
9、a0) * math.cos(kappa0); r2, 2 = math.cos(phi0) * math.cos(omega0); /计算x,y的近似值 for (i = 0; i 4; i+) jinsii, 0 = -f * (r0, 0 * (zuobiaoi, 0 - xs0) + r1, 0 * (zuobiaoi, 1 - ys0) + r2, 0 * (zuobiaoi, 2 - zs0) / (r0, 2 * (zuobiaoi, 0 - xs0) + r1, 2 * (zuobiaoi, 1 - ys0) + r2, 2 * (zuobiaoi, 2 - zs0); jin
10、sii, 1 = -f * (r0, 1 * (zuobiaoi, 0 - xs0) + r1, 1 * (zuobiaoi, 1 - ys0) + r2, 1 * (zuobiaoi, 2 - zs0) / (r0, 2 * (zuobiaoi, 0 - xs0) + r1, 2 * (zuobiaoi, 1 - ys0) + r2, 2 * (zuobiaoi, 2 - zs0); for (i = 0; i 8; i += 2) chazhii = zuobiaoi / 2, 3 - jinsii / 2, 0; chazhii + 1 = zuobiaoi / 2, 4 - jinsi
11、i / 2, 1; for (i = 0; i zhong.getlength(0); i+) double k = 0; for (j = 0; j 1000) break; while (math.abs(jieguo0) 0.020 | math.abs(jieguo1) 0.020) | math.abs(jieguo2) 0.020); console.writeline(共进行了0次运算, q); console.writeline(旋转矩阵为); matrixout(r); for (i = 0; i jieguo.getlength(0); i+) console.write(
12、第0个外方位元素为:1, i + 1, jieguoi); /矩阵转置 public static double, matrixtrans(double, x) double, a = x; double, c = new doublea.getlength(1), a.getlength(0); for (int i = 0; i a.getlength(1); i+) for (int j = 0; j a.getlength(0); j+) ci, j = aj, i; return c; /矩阵输出 public static void matrixout(double, x) dou
13、ble, c = x; for (int i = 0; i c.getlength(0); i+) for (int j = 0; j c.getlength(1); j+) console.write( 0, ci, j); console.write(n); /二维矩阵相乘 public static double, matrixche(double, x, double, y) int i, j, n; double m; double, c = x; double, d = y; double, e = new doublec.getlength(0), c.getlength(0);
14、 for (i = 0; i c.getlength(0); i+) for (n = 0; n c.getlength(0); n+) m = 0; for (j = 0; j c.getlength(1); j+) m = m + ci, j * dj, n; ei, n = m; return e; /计算行列式的值 public static double matrixvalue(double, matrixlist, int level) double, dmatrix = new doublelevel, level; for (int i = 0; i level; i+) fo
15、r (int j = 0; j level; j+) dmatrixi, j = matrixlisti, j; double c, x; int k = 1; for (int i = 0, j = 0; i level & j level; i+, j+) if (dmatrixi, j = 0) int m = i; for (; dmatrixm, j = 0; m+) ; if (m = level) return 0; else for (int n = j; n i; s-) x = dmatrixs, j; for (int t = j; t level; t+) dmatri
16、xs, t -= dmatrixi, t * (x / dmatrixi, j); double sn = 1; for (int i = 0; i level; i+) if (dmatrixi, i != 0) sn *= dmatrixi, i; else return 0; return k * sn; /计算逆阵 public static double, reversematrix(double, dmatrix, int level) double dmatrixvalue = matrixvalue(dmatrix, level); if (dmatrixvalue = 0)
17、return null; double, dreversematrix = new doublelevel, 2 * level; double x, c; for (int i = 0; i level; i+) for (int j = 0; j 2 * level; j+) if (j level) dreversematrixi, j = dmatrixi, j; else dreversematrixi, j = 0; dreversematrixi, level + i = 1; for (int i = 0, j = 0; i level & j level; i+, j+) i
18、f (dreversematrixi, j = 0) int m = i; for (; dmatrixm, j = 0; m+) ; if (m = level) return null; else for (int n = j; n 2 * level; n+) dreversematrixi, n += dreversematrixm, n; x = dreversematrixi, j; if (x != 1) for (int n = j; n i; s-) x = dreversematrixs, j; for (int t = j; t = 0; i-) for (int j = i + 1; j level; j+) if (dre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 污水处理厂设备选型与安装方案
- 2026年河南机电职业学院单招职业适应性测试题库有答案详细解析
- 2026年炎黄职业技术学院单招综合素质考试题库及答案详细解析
- 2026年湖南城建职业技术学院单招综合素质考试题库有答案详细解析
- 2026年长江师范学院单招职业适应性测试题库及答案详细解析
- 2026江苏宿迁市沭阳县教师发展中心择优比选研训员6人备考题库重点附答案详解
- 2026广东佛山市顺德区大良外国语学校招聘校医1人备考题库审定版附答案详解
- 2026年空手道培训协议
- 2025-2026学年四步舞教学设计素描
- 2026年金华东阳市教育系统公开招聘事业编制教师39人考试备考题库及答案解析
- 维克多高中英语3500词汇
- 水稻幼穗发育
- 皮肤科常见疾病康复
- GB/T 4925-2008渔网合成纤维网片强力与断裂伸长率试验方法
- GB/T 39363-2020金银花空气源热泵干燥通用技术要求
- 复工复产安全检查表
- 第三章表面活性剂的功能与应用
- 心理学主要理论流派课件讲义
- 延1024井马五层酸化压裂设计
- 部编版六年级下册道德与法治全册优秀课件
- 中国经典广告案例评析之公益广告课件
评论
0/150
提交评论