/************************************************************************* 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); } }
/** * 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; }