亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? relor.c

?? 攝影測量中的相對定向程序,供攝影測量初學者使用
?? C
?? 第 1 頁 / 共 2 頁
字號:


double FormNormals( double *norm, double *rhs, PhoParamType leftphoto, 
		PhoParamType rightphoto, PointType *points, int numpts )
{
	int		i, j, pt;
	double	lpart[3][7], lepsilon[3], rpart[3][7], repsilon[3],
			bdot[3][6], bdotdot[3][4], r, s, q, dx, dy, dz, sumres2=0;

	/* Zero out normal equations */
	for (i=1; i<=5+numpts*3; i++) {
		rhs[i] = 0;
		for (j=i; j<=5+numpts*3; j++) norm[INDUT(i,j)] = 0;
	}


	for (pt=0; pt<numpts; pt++) {
		/* Compute auxiliary variables for left photo */
		AuxVars( points[pt], leftphoto, &dx, &dy, &dz, &r, &s, &q);

		/* Compute partials with respect to unknowns for left photo */
		PartXLYLZL( lpart, leftphoto, r, s, q );

		/* Form epsilon (measured - computed), residuals, accumulate residuals-squared */
		sumres2 += EpsRes( lepsilon, points[pt].xleft, points[pt].yleft, 
				&(points[pt].xleft_res), &(points[pt].yleft_res), leftphoto.f, r, s, q );

		/* Compute auxiliary variables for right photo */
		AuxVars( points[pt], rightphoto, &dx, &dy, &dz, &r, &s, &q);

		/* Compute partials with respect to unknowns for right photo */
		PartXLYLZL( rpart, rightphoto, r, s, q );
		rpart[1][1] = (rightphoto.f/(q*q)) * 
			(r*(-rightphoto.m33*dy + rightphoto.m32*dz) - 
			 q*(-rightphoto.m13*dy + rightphoto.m12*dz));
		rpart[1][2] = (rightphoto.f/(q*q)) *
			(r*(rightphoto.cp*dx + rightphoto.so*rightphoto.sp*dy - 
			    rightphoto.co*rightphoto.sp*dz) -
			 q*(-rightphoto.sp*rightphoto.ck*dx + 
			    rightphoto.so*rightphoto.cp*rightphoto.ck*dy -
				rightphoto.co*rightphoto.cp*rightphoto.ck*dz));
		rpart[1][3] = -rightphoto.f * s / q;
		rpart[2][1] = (rightphoto.f/(q*q)) * 
			(s*(-rightphoto.m33*dy + rightphoto.m32*dz) - 
			 q*(-rightphoto.m23*dy + rightphoto.m22*dz));
		rpart[2][2] = (rightphoto.f/(q*q)) *
			(s*(rightphoto.cp*dx + rightphoto.so*rightphoto.sp*dy - 
			    rightphoto.co*rightphoto.sp*dz) -
			 q*(rightphoto.sp*rightphoto.sk*dx - 
			    rightphoto.so*rightphoto.cp*rightphoto.sk*dy +
				rightphoto.co*rightphoto.cp*rightphoto.sk*dz));
		rpart[2][3] = rightphoto.f * r/ q;

		/* Form epsilon (measured - computed), residuals, accumulate residuals-squared */
		sumres2 += EpsRes( repsilon, points[pt].xright, points[pt].yright, 
				&(points[pt].xright_res), &(points[pt].yright_res), 
				rightphoto.f, r, s, q );

		/* Add contribution of this point to normal equations */
		/* Left photo first */
		for (i=1; i<=2; i++)
			for (j=1; j<=3; j++) bdotdot[i][j] = -lpart[i][j+3];
		for (i=1; i<=3; i++) {
			for (j=i; j<=3; j++)
				norm[INDUT(5+pt*3+i, 5+pt*3+j)] +=  bdotdot[1][i]*bdotdot[1][j] +
													bdotdot[2][i]*bdotdot[2][j];
			rhs[5+pt*3+i] += bdotdot[1][i]*lepsilon[1] + bdotdot[2][i]*lepsilon[2];
		}
		/* Right photo second */
		for (i=1; i<=2; i++) {
			for (j=1; j<=3; j++) bdot[i][j] = rpart[i][j];
			for (j=4; j<=5; j++) bdot[i][j] = rpart[i][j+1];
			for (j=1; j<=3; j++) bdotdot[i][j] = -rpart[i][j+3];
		}
		for (i=1; i<=5; i++) {
			for (j=i; j<=5; j++)
				norm[INDUT(i,j)] += bdot[1][i]*bdot[1][j] + bdot[2][i]*bdot[2][j];
			rhs[i] += bdot[1][i]*repsilon[1] + bdot[2][i]*repsilon[2];
			for (j=1; j<=3; j++)
				norm[INDUT(i,5+pt*3+j)] +=  bdot[1][i]*bdotdot[1][j] +
											bdot[2][i]*bdotdot[2][j];
		}
		for (i=1; i<=3; i++) {
			for (j=i; j<=3; j++)
				norm[INDUT(5+pt*3+i, 5+pt*3+j)] +=  bdotdot[1][i]*bdotdot[1][j] +
													bdotdot[2][i]*bdotdot[2][j];
			rhs[5+pt*3+i] += bdotdot[1][i]*repsilon[1] + bdotdot[2][i]*repsilon[2];
		}
	}

	/* Compute and return standard error of unit weight */
	if (numpts>5) return sqrt(sumres2/(numpts-5));
	else return 1.0e30; /* Zero degrees of freedom, s0 = infinity */
}





void AuxVars( PointType point, PhoParamType photo, double *Pdx, double *Pdy,
			 double *Pdz, double *Pr, double *Ps, double *Pq )
{
	*Pdx = point.X - photo.xl;
	*Pdy = point.Y - photo.yl;
	*Pdz = point.Z - photo.zl;
	*Pr = photo.m11*(*Pdx) + photo.m12*(*Pdy) + photo.m13*(*Pdz);
	*Ps = photo.m21*(*Pdx) + photo.m22*(*Pdy) + photo.m23*(*Pdz);
	*Pq = photo.m31*(*Pdx) + photo.m32*(*Pdy) + photo.m33*(*Pdz);
}




void PartXLYLZL( double part[3][7], PhoParamType photo, double r, double s, double q )
{
	part[1][4] = -photo.f * (r*photo.m31 - q*photo.m11) / (q*q);
	part[1][5] = -photo.f * (r*photo.m32 - q*photo.m12) / (q*q);
	part[1][6] = -photo.f * (r*photo.m33 - q*photo.m13) / (q*q);
	part[2][4] = -photo.f * (s*photo.m31 - q*photo.m21) / (q*q);
	part[2][5] = -photo.f * (s*photo.m32 - q*photo.m22) / (q*q);
	part[2][6] = -photo.f * (s*photo.m33 - q*photo.m23) / (q*q);
}




double EpsRes( double *epsilon, double x, double y, double *Pxres, double *Pyres,
			  double f, double r, double s, double q)
{
	/* Form epsilon (measured - computed) */
	epsilon[1] = x + f * r / q;
	epsilon[2] = y + f * s / q;

	/* Save residuals */
	*Pxres = -epsilon[1];
	*Pyres = -epsilon[2];

	/* Return sum of residuals-squared */
	return (epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]);
}




void AddCorrections( PhoParamType *Prightphoto, PointType *points, double *rhs, 
					int numpts, int iter, double s0, FILE *itfile )
{
	int	pt;

	fprintf(itfile, "ITERATION: %d      S0 estimate: %6.5lf\n\n\n", iter, s0);
	Prightphoto->omega += rhs[1];
	Prightphoto->phi += rhs[2];
	Prightphoto->kappa += rhs[3];
	Prightphoto->yl += rhs[4];
	Prightphoto->zl += rhs[5];
	fprintf(itfile, "Right photo exterior orientation parameters:\n\n"
		"%5s  %10s  %10s\n", "Param", "Correction", "New Approx");
	fprintf(itfile, "%5s  %10.5lf  %10.5lf  (degrees)\n", "omega", 
		rhs[1] * 180 / M_PI, Prightphoto->omega * 180 / M_PI );
	fprintf(itfile, "%5s  %10.5lf  %10.5lf  (degrees)\n", " phi ", 
		rhs[2] * 180 / M_PI, Prightphoto->phi * 180 / M_PI );
	fprintf(itfile, "%5s  %10.5lf  %10.5lf  (degrees)\n", "kappa", 
		rhs[3] * 180 / M_PI, Prightphoto->kappa * 180 / M_PI );
	fprintf(itfile, "%5s  %10s  %10.5lf\n", "XL  ", " ", Prightphoto->xl);
	fprintf(itfile, "%5s  %10.5lf  %10.5lf\n", "YL  ", rhs[4], Prightphoto->yl);
	fprintf(itfile, "%5s  %10.5lf  %10.5lf\n", "ZL  ", rhs[5], Prightphoto->zl);

	fprintf(itfile, "\n\nObject space coordinates:\n\n"
		"%8s %10s %10s %10s  %10s %10s %10s\n", "Point", "delta X ", "delta Y ",
		"delta Z ", "X new ", "Y new ", "Z new ");
	for (pt=0; pt<numpts; pt++) {
		points[pt].X += rhs[5+pt*3+1];
		points[pt].Y += rhs[5+pt*3+2];
		points[pt].Z += rhs[5+pt*3+3];
		fprintf(itfile, "%8s %10.5lf %10.5lf %10.5lf  %10.5lf %10.5lf %10.5lf\n",
			points[pt].name, rhs[5+pt*3+1], rhs[5+pt*3+2], rhs[5+pt*3+3],
			points[pt].X, points[pt].Y, points[pt].Z );
	}
	fprintf(itfile, "\n\n\n\n");
}





void OutputResults( char *rootname, PhoParamType leftphoto, PhoParamType rightphoto,
				   PointType *points, double *norm, double s0, int numpts )
{
	FILE	*outfile;
	char	filename[50];
	int		i;
	double	lsumx2=0, lsumy2=0, rsumx2=0, rsumy2=0;

	strcpy(filename, rootname);
	strcat(filename, ".out");
	outfile = fopen(filename, "w");
	printf("\nResults are in file %s\n", filename);

	fprintf(outfile, "Exterior orientation parameters:\n\n");
	fprintf(outfile, "%-10s  %10s  %10s  %8s\n", "Parameter", "Left pho",
		"Right pho", "SD right");
	fprintf(outfile, "%-10s  %10.4lf  %10.4lf  %8.4lf\n", "Omega(deg)",
		leftphoto.omega*180/M_PI, rightphoto.omega*180/M_PI,
		s0*sqrt(norm[INDUT(1,1)])*180/M_PI);
	fprintf(outfile, "%-10s  %10.4lf  %10.4lf  %8.4lf\n", "Phi(deg)",
		leftphoto.phi*180/M_PI, rightphoto.phi*180/M_PI,
		s0*sqrt(norm[INDUT(2,2)])*180/M_PI );
	fprintf(outfile, "%-10s  %10.4lf  %10.4lf  %8.4lf\n", "Kappa(deg)", 
		leftphoto.kappa*180/M_PI, rightphoto.kappa*180/M_PI,
		s0*sqrt(norm[INDUT(3,3)])*180/M_PI );
	fprintf(outfile, "%-10s  %10.4lf  %10.4lf\n", "XL", leftphoto.xl, rightphoto.xl);
	fprintf(outfile, "%-10s  %10.4lf  %10.4lf  %8.4lf\n", "YL",
		leftphoto.yl, rightphoto.yl, s0*sqrt(norm[INDUT(4,4)]) );
	fprintf(outfile, "%-10s  %10.4lf  %10.4lf  %8.4lf\n", "ZL",
		leftphoto.zl, rightphoto.zl, s0*sqrt(norm[INDUT(5,5)]) );

	fprintf(outfile, "\n\n\nObject space coordinates:\n\n%8s %9s %9s %9s %7s %7s %7s\n", 
		"point", "X   ", "Y   ", "Z   ", "sdX ", "sdY ", "sdZ ");
	for (i=0; i<numpts; i++) {
		fprintf(outfile, "%8s %9.4lf %9.4lf %9.4lf %7.4lf %7.4lf %7.4lf\n", 
				points[i].name, points[i].X, points[i].Y, points[i].Z,
				s0*sqrt(norm[INDUT(5+i*3+1,5+i*3+1)]),
				s0*sqrt(norm[INDUT(5+i*3+2,5+i*3+2)]),
				s0*sqrt(norm[INDUT(5+i*3+3,5+i*3+3)]) );
	}

	fprintf(outfile, "\n\n\nPhoto coordinate residuals:\n\n"
		"%8s %7s %7s %7s %7s\n", "point", "xl-res", "yl-res", "xr-res", "yr-res");
	for (i=0; i<numpts; i++) {
		fprintf(outfile, "%8s %7.4lf %7.4lf %7.4lf %7.4lf\n", 
				points[i].name, points[i].xleft_res, points[i].yleft_res,
				points[i].xright_res, points[i].yright_res );
		lsumx2 += points[i].xleft_res * points[i].xleft_res;
		lsumy2 += points[i].yleft_res * points[i].yleft_res;
		rsumx2 += points[i].xright_res * points[i].xright_res;
		rsumy2 += points[i].yright_res * points[i].yright_res;
	}
	fprintf(outfile, "\n%8s %7.4lf %7.4lf %7.4lf %7.4lf\n",
		"RMS", sqrt(lsumx2/numpts), sqrt(lsumy2/numpts), 
		sqrt(lsumx2/numpts), sqrt(lsumy2/numpts) );

	fprintf(outfile, "\n\n\nStandard error of unit weight: %7.4lf\n"
		"Degrees of freedom: %d\n", s0, numpts-5);
	fclose(outfile);
}





void pause(void)
{
	printf("Press a key to end program.");
	getch();
}






/*
This program performs a relative orientation solution for a stereopair of
near vertical photos by least squares. No weights are used for photo 
coordinates or object space coordinates. All x and y photo coordinates 
must be corrected for principal point offsets, lens distortions, and 
atmospheric refraction as needed. Data file must be plain ASCII text and 
have a .dat extension. The format of the file is as follows:

  Line 1: <focal length>
  Lines 2 through end of file:
  <point name> <left photo x> <left photo y> <right photo x> <right photo y>

Sample data file:


152.113
a -4.878   1.974  -97.920  -2.923
b 89.307   2.709   -1.507  -1.856
c  0.261  84.144  -90.917  78.970
d 90.334  83.843   -1.571  79.470
e -4.668 -86.821 -100.060 -95.748
f 88.599 -85.274   -0.965 -94.319


Output is sent to a file with the same root name and a .out extension.
Iteration information is sent to a file with a .itr extension.

*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男女毛片无遮挡| 色综合久久综合网| 91在线视频免费观看| 日韩写真欧美这视频| 亚洲精品成人少妇| 成人国产电影网| 日韩免费观看2025年上映的电影 | 亚洲成人激情av| 成人性生交大合| 精品剧情在线观看| 五月婷婷另类国产| 91成人免费网站| 国产精品不卡一区| 国产成人精品www牛牛影视| 欧美丰满美乳xxx高潮www| 一区二区三区在线看| 成人av在线资源网站| 久久久久久久久免费| 久久99这里只有精品| 91麻豆精品国产91久久久使用方法| 亚洲天堂成人在线观看| av成人动漫在线观看| 欧美国产日本视频| 成人免费观看视频| 国产精品美女一区二区| 国产一二精品视频| 精品成人一区二区| 国产一区视频在线看| wwwwww.欧美系列| 狠狠色丁香婷综合久久| 欧美成人猛片aaaaaaa| 青青草91视频| 26uuu精品一区二区| 国产一区三区三区| 国产精品天美传媒| 91蝌蚪porny成人天涯| 亚洲天堂av一区| 欧美色精品天天在线观看视频| 亚洲第一狼人社区| 91精品婷婷国产综合久久| 爽好久久久欧美精品| 欧美精品黑人性xxxx| 久草这里只有精品视频| 国产日韩高清在线| 一本大道久久a久久综合| 亚洲国产日韩综合久久精品| 91精品国产高清一区二区三区蜜臀| 亚洲成av人片在线观看| 欧美一区二区精品在线| 国产精品18久久久久久久久久久久| 精品伦理精品一区| 成人精品免费看| 亚洲伦理在线精品| 欧美一级高清片| 福利视频网站一区二区三区| 中文字幕一区二区三区乱码在线 | 麻豆精品视频在线观看免费| 久久奇米777| 成人涩涩免费视频| 亚洲国产成人精品视频| 久久婷婷国产综合国色天香 | 国产精品国产精品国产专区不片| 成人午夜激情片| 亚洲综合网站在线观看| 日韩视频123| 99精品视频一区二区三区| 亚洲成av人片在线| 欧美激情一区二区| 欧美综合色免费| 激情五月激情综合网| 亚洲精品国产精品乱码不99| 欧美mv和日韩mv的网站| 色吧成人激情小说| 国产成人综合网站| 五月天亚洲精品| 国产精品久久久久久久久搜平片 | 国产成人亚洲综合a∨婷婷图片| 国产精品乱码一区二三区小蝌蚪| 91精品国产入口在线| 91在线视频观看| 国模少妇一区二区三区| 亚洲超丰满肉感bbw| 国产精品色眯眯| 日韩精品一区二区三区四区视频 | 欧美激情一区二区在线| 欧美一区二区黄色| 欧美日韩久久久| 91丨九色丨黑人外教| 国产另类ts人妖一区二区| 日本一不卡视频| 亚洲成人av一区二区三区| **欧美大码日韩| 日本一区二区三区免费乱视频| 日韩欧美久久久| 91精品国产日韩91久久久久久| 日本道在线观看一区二区| 成人性生交大合| 丁香五精品蜜臀久久久久99网站| 久久黄色级2电影| 日韩国产在线一| 亚洲va中文字幕| 亚洲午夜私人影院| 亚洲国产va精品久久久不卡综合 | 日本伊人精品一区二区三区观看方式| 国产精品国产三级国产有无不卡| 久久综合久久综合九色| 日韩精品专区在线影院观看| 91麻豆精品国产91久久久久久久久 | 亚洲国产成人午夜在线一区| 日韩精品一区二| 欧美成人国产一区二区| 日韩欧美中文字幕精品| 日韩欧美资源站| 26uuu亚洲| 欧美极品xxx| 国产日韩欧美一区二区三区乱码| 久久婷婷国产综合国色天香| 国产亚洲精品久| 国产精品美女久久久久久久久久久| 国产欧美日韩精品在线| 欧美高清在线一区| 国产精品国产三级国产aⅴ入口| 亚洲欧洲av另类| 一区二区三区91| 日本一区中文字幕| 国产一区二区三区不卡在线观看 | 精品一区在线看| 懂色av中文一区二区三区| 99久久er热在这里只有精品66| 99久久国产综合精品色伊| 91偷拍与自偷拍精品| 欧美视频中文字幕| 精品国产凹凸成av人导航| 久久久亚洲精品石原莉奈| 国产精品乱子久久久久| 亚洲愉拍自拍另类高清精品| 免费在线成人网| 成人午夜激情在线| 欧美色区777第一页| www日韩大片| 亚洲人被黑人高潮完整版| 视频一区欧美精品| 国产精品综合视频| 色婷婷综合久久久| 欧美一级艳片视频免费观看| 精品国产青草久久久久福利| 亚洲欧美激情小说另类| 日本成人在线电影网| 成人免费视频视频| 欧美一区二区三区四区五区| 国产精品久久久久久久久果冻传媒 | 欧美男同性恋视频网站| 亚洲精品在线电影| 亚洲小少妇裸体bbw| 精品午夜久久福利影院| 91福利在线免费观看| 精品理论电影在线| 亚洲精品欧美在线| 国产精品亚洲人在线观看| 欧美日免费三级在线| 国产午夜精品久久久久久免费视| 亚洲成人激情社区| 91网站最新网址| 久久夜色精品国产噜噜av| 夜夜揉揉日日人人青青一国产精品| 亚洲午夜三级在线| 99精品国产视频| 久久久久久久综合| 蜜臀va亚洲va欧美va天堂| 91黄色免费网站| 国产精品久久久久久久久免费樱桃 | 午夜av区久久| 99久久精品国产观看| 久久久久久久综合日本| 狂野欧美性猛交blacked| 欧美亚洲高清一区| 亚洲色图在线看| 9人人澡人人爽人人精品| 久久综合九色综合欧美98| 欧美96一区二区免费视频| 欧美日韩专区在线| 亚洲美女电影在线| 99久精品国产| 国产精品理论在线观看| 国产**成人网毛片九色| 久久久久久免费网| 国产麻豆欧美日韩一区| 日韩欧美国产麻豆| 久久疯狂做爰流白浆xx| 91精品免费观看| 奇米在线7777在线精品| 欧美另类z0zxhd电影| 亚洲国产精品久久艾草纯爱| 欧美人牲a欧美精品| 一区二区国产盗摄色噜噜| 色视频成人在线观看免| 亚洲一区二区三区三| 欧美猛男超大videosgay| 日韩电影在线免费观看| 日韩精品自拍偷拍|