最近做课程设计需要进行内定向的编程实现,好多小伙伴不知道该咋写,所以我把我自己写的代码拿出来跟大家分享一下,话不多说直接上代码:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
//读取文件到数组
int i, j;
int data[6][2] = { 0,0 };
ifstream infile;//定义文件流对象
infile.open("C:\\Users\\ASUS\\Desktop\\5_NeiDingXiang\\1036_correct.txt");//打开文档
int *ptr = &data[0][0];
while (!infile.eof())
{
infile >> *ptr;//这是把文档里面的数对应放在ptr位置上的数值上
ptr++;
}
infile.close();
//影像内定向
double pixel = 0.006;//mm
double width = 11310;//unit pixel
double height = 17310;//unit pixel
double x_offset = (width*pixel) / 2;
double y_offset = -(height*pixel) / 2;
/*for (int i = 0; i < 6; i++)
{
data[i][0] = data[i][0] * pixel - x_offset;
data[i][1] = -data[i][1] * pixel - y_offset;
data[i][2] = data[i][2] * pixel - x_offset;
data[i][3] = -data[i][3] * pixel - y_offset;
}*/
double result[6][2] = { 0,0 };
int m, n;
for (i = 0; i < 6; i++)
{
for (j = 0; j < 2; j++)
/*cout << array[i][j] << " ";
if (j % 2 == 0)
cout << '\n';*/
result[i][0]= data[i][0] * pixel - x_offset;
result[i][1] = -data[i][1] * pixel - y_offset;
}
ofstream fout("C:\\Users\\ASUS\\Desktop\\5_NeiDingXiang\\1036_result_correct.txt", ios_base::app);
for (m = 0; m < 6; m++)
{
for (n = 0; n < 2; n++)
/* cout << result[m][n] << " ";
if (n % 2 == 0)
cout << '\n' << endl;*/
fout << result[m][n] << " ";
if (n % 2 == 0)
fout << '\n' << endl;
}
system("pause");
return 0;
}
内定向原理: