Esempio n. 1
0
/*************************************************************************
	module		:[読取り原稿サイズの確保]
	function	:[
		1.
	]
	return		:[0:SYS_DOCUMENT_A4_SIZE
				  1:SYS_DOCUMENT_B4_SIZE
				  2:SYS_DOCUMENT_A3_SIZE
	]
	common		:[]
	condition	:[]
	comment		:[戻り値の確認は\src\atlanta\define\sysdoc.hで定義されている値を使用すること
				 ANZUの最大読みとり幅はB4なのでH8用のパスを使用 1995/09/12 Eguchi
				 ポプラはA3読み取りがあるので変更	 1996/11/28	 By T.Yamaguchi ]
	machine		:[SH7043]
	language	:[SHC]
	keyword		:[CMN]
	date		:[1993/12/13]
	author		:[吉川弘康]
*************************************************************************/
UBYTE	CMN_GetDocumentScanSize(void)
{
#if (PRO_SCAN_WIDTH == A3WIDTH)	/* A3の機種はこのパスが必要 */
	if (DA3()) {	/** A document is A3 size **/
		switch(CHK_ScanningWidth()) {
		case SYS_DOCUMENT_A3_SIZE:
			return(SYS_DOCUMENT_A3_SIZE);
		case SYS_DOCUMENT_B4_SIZE:
			return(SYS_DOCUMENT_B4_SIZE);
		case SYS_DOCUMENT_A4_SIZE:
			return(SYS_DOCUMENT_A4_SIZE);
		}
	}
#endif
	if (DB4()) {	/** A document is B4 size **/
		switch(CHK_ScanningWidth()) {
		case SYS_DOCUMENT_A3_SIZE:
		case SYS_DOCUMENT_B4_SIZE:
			return(SYS_DOCUMENT_B4_SIZE);
		case SYS_DOCUMENT_A4_SIZE:
			return(SYS_DOCUMENT_A4_SIZE);
		}
	}
	else {				/** A document is A4 size **/
		return(SYS_DOCUMENT_A4_SIZE);
	}
}
Esempio n. 2
0
File: SE3.cpp Progetto: caomw/Lieopt
/**
* It returns an array of 6 4x4 matrices (a tensor in matrix form)
*/
Matrix4d* JExpSE3(Vector6d V, int n)
{
	Matrix4d* derivative = new Matrix4d[6];

	double da1[] = {	0, 0, 0, 0, 
				0, 0, 1, 0,  
				0, -1, 0, 0, 
				0, 0, 0, 0
			};

	double da2[] = {	0, 0, -1, 0,
				0, 0, 0, 0,
				1, 0, 0, 0,
				0, 0, 0, 0
			};

	double da3[] = {	0, 1, 0, 0,
				-1, 0, 0, 0,
				0, 0, 0, 0,
				0, 0, 0, 0
			};

	double da4[] = {	0, 0, 0, 0,
				0, 0, 0, 0,
				0, 0, 0, 0,
				1, 0, 0, 0
			};

	double da5[] = {	0, 0, 0, 0,
				0, 0, 0, 0,
				0, 0, 0, 0,
				0, 1, 0, 0
			};

	double da6[] = {	0, 0, 0, 0,
				0, 0, 0, 0,
				0, 0, 0, 0,
				0, 0, 1, 0
			};

	//basis for the derivative
	Matrix4d DA1(da1);
	Matrix4d DA2(da2);
	Matrix4d DA3(da3);
	Matrix4d DA4(da4);
	Matrix4d DA5(da5);
	Matrix4d DA6(da6);

	Matrix4d A, Apower;
	Matrix4d Je1, Je2, Je3, Je4, Je5, Je6;
	Matrix4d DAcc1, DAcc2, DAcc3, DAcc4, DAcc5, DAcc6;
	double fact = 1;

	// A = hat(V)
	A << 0, -V(2), V(1), V(3), V(2), 0, -V(0), V(4), -V(1), V(0), 0, V(5), 0, 0, 0, 0;

	DAcc1 = DA1;
	DAcc2 = DA2;
	DAcc3 = DA3;
	DAcc4 = DA4;
	DAcc5 = DA5;
	DAcc6 = DA6;
	Apower = A;

	Je1 = DA1;
	Je2 = DA2;
	Je3 = DA3;
	Je4 = DA4;
	Je5 = DA5;
	Je6 = DA6;	

	for(int i=2; i<=n; i++)
	{
		//i-th power (wrt a,b,c)
		DAcc1 = DA1*Apower + A*DAcc1;
		DAcc2 = DA2*Apower + A*DAcc2;
		DAcc3 = DA3*Apower + A*DAcc3;
		DAcc4 = A*DAcc4;
		DAcc5 = A*DAcc5;
		DAcc6 = A*DAcc6;

		fact *= i;

		Je1 = Je1 + (DAcc1 / fact);
		Je2 = Je2 + (DAcc2 / fact);
		Je3 = Je3 + (DAcc3 / fact);
		Je4 = Je4 + (DAcc4 / fact);
		Je5 = Je5 + (DAcc5 / fact);
		Je6 = Je6 + (DAcc6 / fact);

		if(i < n)
			Apower = Apower * A;
	}

	derivative[0] = Je1;
	derivative[1] = Je2;
	derivative[2] = Je3;
	derivative[3] = Je4;
	derivative[4] = Je5;
	derivative[5] = Je6;

	return derivative;
}