見出し画像

解説クラスCopyClear(9ダッシュ)

解説クラスCopyClear(9ダッシュ)


2024年3月7

この講義は解説『解説クラスCopyClear(9)』
直接の続きです!
解説『解説クラスCopyClear(9)』が余りに巨大
に成り過ぎたので編集作業が大変に成ったから、「(9)」
の直接の続きとします!

private:            // 回転(補正無)
    void            makeRotateTable(                // 画像回転用座標テーブル作成
        double      a,                              // 回転角:Radian
        double      x1,                             // S配列回転中心
        double      y1,                             // S配列回転中心
        double      x2,                             // D配列回転中心
        double      y2,                             // D配列回転中心
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *offset,                        // S配列オフxytbl
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         dataSize );                     // 画素サイズ
    int             checkRotateAB(                  // 回転用始終点検査
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        int         h,                              // D配列水平幅
        int&        resX1,                          // D配列始点x座標:返値
        int&        resX2,                          // D配列終点x座標:返値
        int         step,                           // 検査ステップ
        int         sw=TRUE );                      // 四捨五入SW(真:有効=省略時)
    void            rotateXByte(                    // 回転処理:X方向:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S
    void            rotateXByteColor(               // 回転処理:X方向:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S
    void            rotateXByteExt(                 // 回転処理:X方向:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateByte(                     // 回転処理:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        BYTE        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        BYTE        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateXShort(                   // 回転処理:X方向:short
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S
    void            rotateXShortColor(              // 回転処理:X方向:short
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S
    void            rotateXShortExt(                // 回転処理:X方向:short
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateShort(                    // 回転処理:short
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        short       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        short       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateXLong(                    // 回転処理:X方向:long
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S
    void            rotateXLongColor(               // 回転処理:X方向:long
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S
    void            rotateXLongExt(                 // 回転処理:X方向:long
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateLong(                     // 回転処理:long
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        long        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        long        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

    void            rotateXByteInterpolate(         // 回転処理:X:BYTE:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXShortInterpolate(        // 回転処理:X:short:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXLongInterpolate(         // 回転処理:X:long:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXFloatInterpolate(        // 回転処理:X:単精度:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXByteInterpolateCheck(    // 回転処理:X:BYTE:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXShortInterpolateCheck(   // 回転処理:X:short:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXLongInterpolateCheck(    // 回転処理:X:long:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXFloatInterpolateCheck(   // 回転処理:X:単精度:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateByteInterpolate(          // 回転処理:BYTE:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        BYTE        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        BYTE        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateShortInterpolate(         // 回転処理:short:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        short       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        short       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateLongInterpolate(          // 回転処理:long:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        long        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        long        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateFloatInterpolate(         // 回転処理:単精度:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        float       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        float       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

private:            // 回転(完全実数化)
    void            makeRotateTableReal(            // 画像回転用座標テーブル作成
        double      a,                              // 回転角:Radian
        double      x1,                             // S配列回転中心
        double      y1,                             // S配列回転中心
        double      x2,                             // D配列回転中心
        double      y2,                             // D配列回転中心
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *offset,                        // S配列オフxytbl
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         dataSize );                     // 画素サイズ
    int             checkRotateABReal(              // 回転用始終点検査
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        int         h,                              // D配列水平幅
        int&        resX1,                          // D配列始点x座標:返値
        int&        resX2,                          // D配列終点x座標:返値
        int         step );                         // 検査ステップ

    void            rotateXByteReal(                // 回転処理:X:BYTE:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXShortReal(               // 回転処理:X:short:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXLongReal(                // 回転処理:X:long:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXFloatReal(               // 回転処理:X:単精度:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXByteRealCheck(           // 回転処理:X:BYTE:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXShortRealCheck(          // 回転処理:X:short:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXLongRealCheck(           // 回転処理:X:long:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateXFloatRealCheck(          // 回転処理:X:単精度:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ
    void            rotateByteReal(                 // 回転処理:BYTE:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        BYTE        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        BYTE        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateShortReal(                // 回転処理:short:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        short       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        short       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateLongReal(                 // 回転処理:long:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        long        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        long        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ
    void            rotateFloatReal(                // 回転処理:単精度:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        float       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        float       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ


private:                // 正規化相関関数☆4×4素専用関数☆

    double          Ave4M(                          // 4×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         m );                            // 4×mのm

    double          Corr4M(                         // 4×M画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m );                            // 4×MのM

    double          Corr4MFirst(                    // 4×M画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 4×MのM
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

    double          Corr4MSecond(                   // 4×M画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 4×MのM
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

    int             Corr4MMyself(                   // 4×M画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m );                            //  4×MのM
    int             Corr4MMyself(                   // 4×M画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m,                              //  4×MのM
        int&        ave );                          //  結果:平均値

    double          Corr44(                         // 4×4画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB );                         // B配列:増加幅

    double          Corr44First(                    // 4×4画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

    double          Corr44Second(                   // 4×4画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

    int             Corr44Myself(                   // 4×4画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA );                         //  A配列:増加幅
    int             Corr44Myself(                   // 4×4画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int&        ave );                          //  結果:平均値

private:                // 正規化相関関数☆8×8と8×M画素専用関数☆

    double          Ave8M(                          // 8×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         m );                            // 8×mのm

    double          Corr8M(                         // 8×M画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m );                            // 8×MのM

    double          Corr8MFirst(                    // 8×M画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 8×MのM
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

    double          Corr8MSecond(                   // 8×M画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 8×MのM
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

    int             Corr8MMyself(                   // 8×M画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m );                            //  8×MのM
    int             Corr8MMyself(                   // 8×M画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m,                              //  8×MのM
        int&        ave );                          //  結果:平均値

    double          Corr88(                         // 8×8画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB );                         // B配列:増加幅

    double          Corr88First(                    // 8×8画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

    double          Corr88Second(                   // 8×8画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

    int             Corr88Myself(                   // 8×8画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA );                         //  A配列:増加幅
    int             Corr88Myself(                   // 8×8画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int&        ave );                          //  結果:平均値

    void            Reduct88Ave(                    // 8×8画素正規化相関用画像圧縮:平均値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

    void            Reduct88Min(                    // 8×8画素正規化相関用画像圧縮:最小値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

    void            Reduct88Max(                    // 8×8画素正規化相関用画像圧縮:最大値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

    void            Reduct88Two(                    // 8×8画素正規化相関用画像圧縮:2番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

    void            Reduct88Three(                  // 8×8画素正規化相関用画像圧縮:3番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

    void            Reduct88Skip(                   // 8×8画素正規化相関用画像圧縮:間引き
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

    void            VectorCorr88(                   // 8×8画素正規化相関による動線ベクトル算出
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         nOffsetH,                       // 水平方向オフセット(左右ずれ)
        int         nOffsetV,                       // 垂直方向オフセット(上下ずれ)
        double*     vecX,                           // X方向結果
        double*     vecY );                         // Y方向結果

private:                // 正規化相関関数☆n×m画素専用関数☆

    double          AveNM(                          // n×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    double          CorrNM(                         // n×m画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    double          CorrNMFirst(                    // n×m画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

    double          CorrNMSecond(                   // n×m画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

    double          CorrNMCheck(                    // n×m画素正規化相関:正/反検査
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int         avB );                          // B配列の平均値

    int             CorrNMMyself(                   // n×m画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         n,                              //  n×mのn
        int         m );                            //  n×mのm
    int             CorrNMMyself(                   // n×m画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         n,                              //  n×mのn
        int         m,                              //  n×mのm
        int&        ave );                          //  結果:平均値

    void            ReductNMAve(                    // n×m画素正規化相関用画像圧縮:平均値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    void            ReductNMMin(                    // n×m画素正規化相関用画像圧縮:最小値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    void            ReductNMMax(                    // n×m画素正規化相関用画像圧縮:最大値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    void            ReductNMTwo(                    // n×m画素正規化相関用画像圧縮:2番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    void            ReductNMThree(                  // n×m画素正規化相関用画像圧縮:3番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    void            ReductNMSkip(                   // n×m画素正規化相関用画像圧縮:間引き
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    void            VectorCorrNM(                   // n×m画素正規化相関による動線ベクトル算出
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         nOffsetH,                       // 水平方向オフセット(左右ずれ)
        int         nOffsetV,                       // 垂直方向オフセット(上下ずれ)
        double*     vecX,                           // X方向結果
        double*     vecY );                         // Y方向結果

private:                // 正規化相関関数☆n×m画素専用関数:n×mが大容量の場合☆

    double          CorrNMLarge(                    // n×m画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    double          CorrNMLargeFirst(               // n×m画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double&     sumA );                         // 返値:A配列の分散値(自己相関)

    double          CorrNMLargeSecond(              // n×m画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double      sumA );                         // A配列の分散値(自己相関)

    double          CorrNMLargeMyself(              // n×m画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

private:            // 正規化相関関数☆n×m画素専用関数:マスク付きの場合☆
                    // M配列=マスク

    int             CountNMMask(                    // n×m有効画素数算出
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

    double          AveNMMask(                      // n×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         cnt );                          // M配列(マスク画像)有効数

    double          CorrNMMask(                     // n×m画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         cnt );                          // M配列(マスク画像)有効数

    double          CorrNMMaskFirst(                // n×m画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double&     sumA,                           // 返値:A配列の分散値(自己相関)
        int         cnt );                          // M配列(マスク画像)有効数

    double          CorrNMMaskSecond(               // n×m画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double      sumA,                           // A配列の分散値(自己相関)
        int         cnt );                          // M配列(マスク画像)有効数

    double          CorrNMMaskCheck(                // n×m画素正規化相関:正/反検査
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int         avB,                            // B配列の平均値
        int         cnt );                          // M配列(マスク画像)有効数

    double          CorrNMMaskMyself(               // n×m画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         cnt );                          // M配列(マスク画像)有効数

private:                                            // サーチ用小品
    void                measureXYstringFere(        // 座標列からフェレ情報算出
        TypeCorr        bufxy[],                    //  座標格納ポインタ(サーチ用)
        int             n,                          //  座標個数
        int&            x,                          //  X座標(結果格納)
        int&            y,                          //  Y座標(結果格納)
        int&            h,                          //  水平幅(結果格納)
        int&            v );                        //  垂直幅(結果格納)

    void                measureXYstringFere(        // 座標列からフェレ情報算出
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          //  座標個数
        int&            x,                          //  X座標(結果格納)
        int&            y,                          //  Y座標(結果格納)
        int&            h,                          //  水平幅(結果格納)
        int&            v );                        //  垂直幅(結果格納)

    int                 excludeOverlapXYBase(       // 重複座標の排除:255個まで対応:高速
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離
    int                 excludeOverlapXYLarge(      // 重複座標の排除:65535個まで対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離
    int                 excludeOverlapXYSuper(      // 重複座標の排除:65536個以上対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離
    int                 excludeOverlapXY0Base(      // 同座標の排除:255個まで対応:高速
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数
    int                 excludeOverlapXY0Large(     // 同座標の排除:65535個まで対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数
    int                 excludeOverlapXY0Super(     // 同座標の排除:65536個以上対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

    int                 excludeOverlapXYBase(       // 重複座標の排除:255個まで対応:高速
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離
    int                 excludeOverlapXYLarge(      // 重複座標の排除:65535個まで対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離
    int                 excludeOverlapXYSuper(      // 重複座標の排除:65536個以上対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離
    int                 excludeOverlapXY0Base(      // 同座標の排除:255個まで対応:高速
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数
    int                 excludeOverlapXY0Large(     // 同座標の排除:65535個まで対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数
    int                 excludeOverlapXY0Super(     // 同座標の排除:65536個以上対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

private:                                            // 自己相関用小品
    int             makeCorrImageMyselfExtend(      // 自己相関:拡張用座標作成
        TypeArray*  image,                          // 画像
        TypeXY*     bufXY,                          // 結果座標バッファー
        int*        bufL,                           // 結果バッファー:概要
        int         maxN,                           // 最大結果数
        int         nStepH,                         // 水平方向次点ステップ数
        int         nStepV,                         // 垂直方向次点ステップ数
        double      tA,                             // 最小概要しきい値
        double      tB,                             // 最大概要しきい値
        int         nOffsetH,                       // 水平方向オフセット
        int         nOffsetV );                     // 垂直方向オフセット

(4-12-230)関数「void makeRotateTable(
double a,double x1,double y1,
double x2,double y2,
TypeXYI* base,TypeXYI*offset,
int h,int v,int dataSize);」

    void            makeRotateTable(                // 画像回転用座標テーブル作成
        double      a,                              // 回転角:Radian
        double      x1,                             // S配列回転中心
        double      y1,                             // S配列回転中心
        double      x2,                             // D配列回転中心
        double      y2,                             // D配列回転中心
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *offset,                        // S配列オフxytbl
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         dataSize );                     // 画素サイズ

関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-231)関数「int checkRotateAB(
TypeXYI* base,
int offx,int offy,int hs,int vs,int h,
int &resX1,int &resX2,
int step,int sw=TRUE);」

    int             checkRotateAB(                  // 回転用始終点検査
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        int         h,                              // D配列水平幅
        int&        resX1,                          // D配列始点x座標:返値
        int&        resX2,                          // D配列終点x座標:返値
        int         step,                           // 検査ステップ
        int         sw=TRUE );                      // 四捨五入SW(真:有効=省略時)

関数「rotateBYTE ()」のサブルーチンです!
関数「rotateShort ()」のサブルーチンです!
関数「rotateLong()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-232)関数「void rotateXBYTE (
TypeXYI* base,int offx,int offy,
BYTE *ps,BYTE *pd,int len,int sl);」

    void            rotateXByte(                    // 回転処理:X方向:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S

関数「rotateBYTE ()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-233)関数「void
rotateXByteColor(
TypeXYI* base,int offx,int offy,
BYTE *ps,BYTE *pd,int len,int sl);」

    void            rotateXByteColor(               // 回転処理:X方向:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S

関数「rotateByte ()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-234)関数「void rotateXByteExt(
TypeXY I*base,int offx,int offy,
BYTE *ps,BYTE *pd,int len,int sl,int dataSize);」

    void            rotateXByteExt(                 // 回転処理:X方向:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateByte ()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-235)関数「void rotateByte (
TypeXYI* base,TypeXYI* off,
BYTE *ps,int hs,int vs,
BYTE *pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateByte(                     // 回転処理:BYTE
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        BYTE        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        BYTE        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-236)関数「void rotateXShort (
TypeXYI* base,int offx,int offy,
short *ps,short *pd,int len,int sl);」

    void            rotateXShort(                   // 回転処理:X方向:short
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S

関数「rotateShort ()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-237)関数「void rotateXShortColor(
TypeXYI* base,int offx,int offy,
short *ps,short *pd,int len,int sl);」

    void            rotateXShortColor(              // 回転処理:X方向:short
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S

関数「rotateShort ()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-238)関数「void rotateXShortExt(
TypeXYI* base,int offx,int offy,
short *ps,short *pd,int len,int sl,int dataSize);」

    void            rotateXShortExt(                // 回転処理:X方向:short
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateShort ()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-239)関数「void rotateShort(
TypeXYI* base,TypeXYI* off,
short *ps,int hs,int vs,short *pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateShort(                    // 回転処理:short
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        short       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        short       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-240)関数「void rotateXLong(
TypeXYI *base,int offx,int offy,
long *ps,long *pd,int len,int sl);」

    void            rotateXLong(                    // 回転処理:X方向:long
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S

関数「rotateLong()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-241)関数「void rotateXLongColor(
TypeXYI* base,int offx,int offy,
long *ps,long *pd,int len,int sl);」

    void            rotateXLongColor(               // 回転処理:X方向:long
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl );                           // 増加幅:S

関数「rotateLong()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-242)関数「void rotateXLongExt(
TypeXYI* base,int offx,int offy,
long *ps,long *pd,int len,int sl,int dataSize);」

    void            rotateXLongExt(                 // 回転処理:X方向:long
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateLong()」のサブルーチンです!
関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-243)関数「void rotateLong(
TypeXYI* base,TypeXYI* off,
long *ps,int hs,int vs,long *pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateLong(                     // 回転処理:long
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        long        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        long        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear320.cpp」が
対象】します!

(4-12-244)関数「void
rotateXByteInterpolate(
TypeXYI* base,int offx,int offy,
BYTE *ps,BYTE *pd,int len,int sl,int dataSize);」

    void            rotateXByteInterpolate(         // 回転処理:X:BYTE:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateByteInterpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-245)関数「void
rotateXShortInterpolate(
TypeXYI* base,int offx,int offy,
short *ps,short *pd,int len,int sl,int dataSize);」

    void            rotateXShortInterpolate(        // 回転処理:X:short:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateShortInterpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-246)関数「void
rotateXLongInterpolate(
TypeXYI* base,int offx,int offy,
long *ps,long *pd,int len,int sl,int dataSize);」

    void            rotateXLongInterpolate(         // 回転処理:X:long:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateLongInterpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-247)関数「void
rotateXFloatInterpolate(
TypeXYI* base,int offx,int offy,
floatps,float*pd,int len,int sl,int dataSize);」

    void            rotateXFloatInterpolate(        // 回転処理:X:単精度:補間
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateFloatInterpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-248)関数「void
rotateXByteInterpolateCheck(
int endX,int endY,
TypeXYI* base,int offx,int offy,
BYTE *ps,BYTE *pd,int len,int sl,int dataSize);」

    void            rotateXByteInterpolateCheck(    // 回転処理:X:BYTE:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateByteInterpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-249)関数「void
rotateXShortInterpolateCheck(
int endX,int endY,
TypeXYI* base,int offx,int offy,
short *ps,short *pd,int len,int sl,int dataSize);」

    void            rotateXShortInterpolateCheck(   // 回転処理:X:short:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateshort Interpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-250)関数「void
rotateXLongInterpolateCheck(
int endX,int endY,
TypeXYI* base,int offx,int offy,
long *ps,long *pd,int len,int sl,int dataSize);」

    void            rotateXLongInterpolateCheck(    // 回転処理:X:long:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateLongInterpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-251)関数「void
rotateXFloatInterpolateCheck(
int endX,int endY,
TypeXYI*base,int offx,int offy,
float* ps,float* pd,int len,int sl,int dataSize);」

    void            rotateXFloatInterpolateCheck(   // 回転処理:X:単精度:補間&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYI     *base,                          // S配列BASExytbl
        int         offx,                           // S配列Offsetx
        int         offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateFloatInterpolate()」のサブルーチンです!
関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-252)関数「void rotateByteInterpolate(
TypeXYI* base,TypeXYI* off,
BYTE *ps,int hs,int vs,BYTE *pd,
int h,int v,int sl,int dl,int dataSize);」

    void            rotateByteInterpolate(          // 回転処理:BYTE:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        BYTE        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        BYTE        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-253)関数「void rotateShortInterpolate(
TypeXYI* base,TypeXYI* off,
short *ps,int hs,int vs,short *pd,
int h,int v,int sl,int dl,int dataSize);」

    void            rotateShortInterpolate(         // 回転処理:short:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        short       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        short       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-254)関数「void rotateLongInterpolate(
TypeXYI* base,TypeXYI* off,
long *ps,int hs,int vs,long *pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateLongInterpolate(          // 回転処理:long:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        long        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        long        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-255)関数「void rotateFloatInterpolate(
TypeXYI* base,TypeXYI* off,
float* ps,int hs,int vs,float* pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateFloatInterpolate(         // 回転処理:単精度:補間
        TypeXYI     *base,                          // S配列BASExytbl
        TypeXYI     *off,                           // S配列オフxytbl
        float       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        float       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear330.cpp」が
対象】します!

(4-12-256)関数「void makeRotateTableReal(
double a,
double x1,double y1,double x2,double y2,
TypeXYD* base,TypeXYD* offset,
int h,int v,int dataSize);」

    void            makeRotateTableReal(            // 画像回転用座標テーブル作成
        double      a,                              // 回転角:Radian
        double      x1,                             // S配列回転中心
        double      y1,                             // S配列回転中心
        double      x2,                             // D配列回転中心
        double      y2,                             // D配列回転中心
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *offset,                        // S配列オフxytbl
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         dataSize );                     // 画素サイズ

関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-257)関数「int checkRotateABReal(
TypeXYD* base,
double offx,double offy,int hs,int vs,int h,
int &resX1,int &resX2,int step);」

    int             checkRotateABReal(              // 回転用始終点検査
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        int         h,                              // D配列水平幅
        int&        resX1,                          // D配列始点x座標:返値
        int&        resX2,                          // D配列終点x座標:返値
        int         step );                         // 検査ステップ

関数「rotateBYTE Real()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-258)関数「void rotateXByteReal(
TypeXYD* base,double offx,double offy,
BYTE *ps,BYTE *pd,int len,int sl,int dataSize);」

    void            rotateXByteReal(                // 回転処理:X:BYTE:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateBYTE Real()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-259)関数「void rotateXShortReal(
TypeXYD* base,double offx,double offy,
short *ps,short *pd,int len,int sl,int dataSize);」

    void            rotateXShortReal(               // 回転処理:X:short:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateshort Real()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-260)関数「void rotateXLongReal(
TypeXYD* base,double offx,double offy,
long *ps,long *pd,int len,int sl,int dataSize);」

    void            rotateXLongReal(                // 回転処理:X:long:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateLong Real()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-261)関数「void rotateXFloatReal(
TypeXYD* base,double offx,double offy,
float* ps,float*pd,int len,int sl,int dataSize);」

    void            rotateXFloatReal(               // 回転処理:X:単精度:実数
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateFloatReal()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-262)関数「void rotateXByteRealCheck(
int endX,int endY,
TypeXYD* base,double offx,double offy,
BYTE *ps,BYTE *pd,int len,int sl,int dataSize);」

    void            rotateXByteRealCheck(           // 回転処理:X:BYTE:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        BYTE        *ps,                            // S配列 Ptr:始点
        BYTE        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateBYTE Real()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-263)関数「void rotateXShortRealCheck(
int endX,int endY,
TypeXYD* base,double offx,double offy,
short *ps,short *pd,int len,int sl,int dataSize);」

    void            rotateXShortRealCheck(          // 回転処理:X:short:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        short       *ps,                            // S配列 Ptr:始点
        short       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateShort Real()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-264)関数「void rotateXLongRealCheck(
int endX,int endY,
TypeXYD* base,double offx,double offy,
long *ps,long *pd,int len,int sl,int dataSize);」

    void            rotateXLongRealCheck(           // 回転処理:X:long:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        long        *ps,                            // S配列 Ptr:始点
        long        *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateLongReal()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-265)関数「void rotateXFloatRealCheck(
int endX,int endY,
TypeXYD* base,double offx,double offy,
float* ps,float* pd,int len,int sl,int dataSize);」

    void            rotateXFloatRealCheck(          // 回転処理:X:単精度:実数&検査
        int         endX,                           // X座標最終
        int         endY,                           // Y座標最終
        TypeXYD     *base,                          // S配列BASExytbl
        double      offx,                           // S配列Offsetx
        double      offy,                           // S配列Offsety
        float       *ps,                            // S配列 Ptr:始点
        float       *pd,                            // D配列 Ptr
        int         len,                            // D配列水平処理幅
        int         sl,                             // 増加幅:S
        int         dataSize );                     // 画素サイズ

関数「rotateFloatReal()」のサブルーチンです!
関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-266)関数「void rotateByteReal(
TypeXYD* base,TypeXYD* off,
BYTE *ps,int hs,int vs,BYTE *pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateByteReal(                 // 回転処理:BYTE:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        BYTE        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        BYTE        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-267)関数「void rotateShortReal(
TypeXYD* base,TypeXYD* off,
short *ps,int hs,int vs,short *pd,
int h,int v,int sl,int dl,int dataSize);」

    void            rotateShortReal(                // 回転処理:short:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        short       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        short       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-268)関数「void rotateLongReal(
TypeXYD* base,TypeXYD* off,
long *ps,int hs,int vs,long *pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateLongReal(                 // 回転処理:long:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        long        *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        long        *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-269)関数「void rotateFloatReal(
TypeXYD* base,TypeXYD* off,
float* ps,int hs,int vs,float* pd,int h,int v,
int sl,int dl,int dataSize);」

    void            rotateFloatReal(                // 回転処理:単精度:実数
        TypeXYD     *base,                          // S配列BASExytbl
        TypeXYD     *off,                           // S配列オフxytbl
        float       *ps,                            // S配列 Ptr:始点
        int         hs,                             // S配列水平幅
        int         vs,                             // S配列垂直幅
        float       *pd,                            // D配列 Ptr
        int         h,                              // D配列水平幅
        int         v,                              // D配列垂直幅
        int         sl,                             // 増加幅:S
        int         dl,                             // 増加幅:D
        int         dataSize );                     // 画素サイズ

関数「RotateImageReal()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear340.cpp」が
対象】します!

(4-12-270)関数「double Ave4M(
BYTE *ptrA,int incA,int m);」

    double          Ave4M(                          // 4×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         m );                            // 4×mのm

関数「AverageImage44()」のサブルーチンです!
関数「AverageImage44XY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!

(4-12-271)関数「double Corr4M(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,int m);」

    double          Corr4M(                         // 4×M画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m );                            // 4×MのM

関数「Corr44()」のサブルーチンです!
関数「CorrNM()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」
及び【ファイル「CopyClear430.cpp」が対象】します!

(4-12-272)関数「double Corr4MFirst(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,int m,
int &avA,int &avB,int &sumA);」

    double          Corr4MFirst(                    // 4×M画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 4×MのM
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

関数「CorrNMFirst()」のサブルーチンです!
関数「Corr44First()」のサブルーチンです!
「First」は、連続して処理する作業の「最初に処理」する
意味!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」
及び【ファイル「CopyClear430.cpp」が対象】します!

(4-12-273)関数「double Corr4MSecond(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,int m,
int avA,int &avB,int sumA);」

    double          Corr4MSecond(                   // 4×M画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 4×MのM
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

関数「CorrNMSecond()」のサブルーチンです!
関数「Corr44Second()」のサブルーチンです!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」
及び【ファイル「CopyClear430.cpp」が対象】します!

(4-12-274)関数「int Corr4MMyself(
BYTE *ptrA,int incA,int m);」

    int             Corr4MMyself(                   // 4×M画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m );                            //  4×MのM

関数「CorrNMMyself()」のサブルーチンです!
関数「Corr44Myself()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」
及び【ファイル「CopyClear430.cpp」が対象】します!

(4-12-275)関数「int Corr4MMyself(
BYTE *ptrA,int incA,int m,int &ave);」

    int             Corr4MMyself(                   // 4×M画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m,                              //  4×MのM
        int&        ave );                          //  結果:平均値

関数「CorrNMMyself()」のサブルーチンです!
関数「Corr44Myself()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」
及び【ファイル「CopyClear430.cpp」が対象】します!

(4-12-276)関数「double Corr44(
BYTE *ptrA,BYTE *ptrB,int incA,int incB);」

    double          Corr44(                         // 4×4画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB );                         // B配列:増加幅

関数「CorrImage44()」のサブルーチンです!
関数「CorrImage44XY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!

(4-12-277)関数「double Corr44First(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int &avA,int &avB,int &sumA);」

    double          Corr44First(                    // 4×4画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

関数「SearchCorrImage44()」のサブルーチンです!
「First」は、連続して処理する作業の「最初に処理」する
意味!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!

(4-12-278)関数「double Corr44Second(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int avA,int &avB,int sumA);」

    double          Corr44Second(                   // 4×4画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

関数「SearchCorrImage44()」のサブルーチンです!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!

(4-12-279)関数「int Corr44Myself(
BYTE *ptrA,int incA);」

    int             Corr44Myself(                   // 4×4画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA );                         //  A配列:増加幅

関数「CorrImage44Myself()」のサブルーチンです!
CorrImage44MyselfXY()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!

(4-12-280)関数「int Corr44Myself(
BYTE *ptrA,int incA,int &ave);」

int             Corr44Myself(                   // 4×4画素正規化相関:自己相関(分散)+平均
    BYTE*       ptrA,                           //  A配列:処理ポインタ
    int         incA,                           //  A配列:増加幅
    int&        ave );                          //  結果:平均値

関数「CorrImage44Myself()」のサブルーチンです!
CorrImage44MyselfXY()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!

(4-12-281)関数「double Ave8M(
BYTE *ptrA,int incA,int m);」

    double          Ave8M(                          // 8×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         m );                            // 8×mのm

関数「AverageImage88()」のサブルーチンです!
関数「AverageImage88XY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-282)関数「double Corr8M(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,int m);」

    double          Corr8M(                         // 8×M画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m );                            // 8×MのM

関数「Corr88()」のサブルーチンです!
関数「CorrNM()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
及び【ファイル「CopyClear410.cpp」が対象】します!

(4-12-283)関数「double Corr8MFirst(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,int m,
int &avA,int &avB,int &sumA);」

    double          Corr8MFirst(                    // 8×M画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 8×MのM
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

関数「CorrNMFirst()」のサブルーチンです!
関数「Corr88First()」のサブルーチンです!
「First」は、連続して処理する作業の「最初に処理」する
意味!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
及び【ファイル「CopyClear410.cpp」が対象】します!

(4-12-284)関数「double Corr8MSecond(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,int m,
int avA,int &avB,int sumA);」

    double          Corr8MSecond(                   // 8×M画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         m,                              // 8×MのM
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

関数「CorrNMSecond()」のサブルーチンです!
関数「Corr88Second()」のサブルーチンです!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
及び【ファイル「CopyClear410.cpp」が対象】します!

(4-12-285)関数「int Corr8MMyself(
BYTE *ptrA,int incA,int m);」

    int             Corr8MMyself(                   // 8×M画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m );                            //  8×MのM

関数「CorrNMMyself()」のサブルーチンです!
関数「Corr88Myself()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
及び【ファイル「CopyClear410.cpp」が対象】します!

(4-12-286)関数「int Corr8MMyself(
BYTE *ptrA,int incA,int m,int &ave);」

    int             Corr8MMyself(                   // 8×M画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         m,                              //  8×MのM
        int&        ave );                          //  結果:平均値

関数「CorrNMMyself()」のサブルーチンです!
関数「Corr88Myself()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
及び【ファイル「CopyClear410.cpp」が対象】します!

(4-12-287)関数「double Corr88(
BYTE *ptrA,BYTE *ptrB,int incA,int incB);」

    double          Corr88(                         // 8×8画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB );                         // B配列:増加幅

関数「CorrImage88()」のサブルーチンです!
関数「CorrImage88XY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-288)関数「double Corr88First(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int &avA,int &avB,int &sumA);」

    double          Corr88First(                    // 8×8画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

関数「CorrNMFirst()」のサブルーチンです!
関数「Corr88First()」のサブルーチンです!
関数「VectorCorr88()」のサブルーチンです!
「First」は、連続して処理する作業の「最初に処理」する
意味!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
及び【ファイル「CopyClear400.cpp」が対象】します!

(4-12-289)関数「double Corr88Second(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int avA,int &avB,int sumA);」

    double          Corr88Second(                   // 8×8画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

関数「CorrNMSecond()」のサブルーチンです!
関数「SearchCorrImage88()」のサブルーチンです!
関数「VectorCorr88()」のサブルーチンです!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
が対象】します!

(4-12-290)関数「int Corr88Myself(
BYTE *ptrA,int incA);」

    int             Corr88Myself(                   // 8×8画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA );                         //  A配列:増加幅

関数「CorrImage88Myself()」のサブルーチンです!
CorrImage88MyselfXY()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-291)関数「int Corr88Myself(
BYTE *ptrA,int incA,int &ave);」

    int             Corr88Myself(                   // 8×8画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int&        ave );                          //  結果:平均値

関数「CorrImage88Myself()」のサブルーチンです!
関数「CorrImage88MyselfXY()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-292)関数「void Reduct88Ave(
BYTE *ptrS,BYTE *ptrD,int incS,int incD);」

    void            Reduct88Ave(                    // 8×8画素正規化相関用画像圧縮:平均値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

関数「ReductImage88Ave()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-293)関数「void Reduct88Min(
BYTE *ptrS,BYTE *ptrD,int incS,int incD);」

    void            Reduct88Min(                    // 8×8画素正規化相関用画像圧縮:最小値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

関数「ReductImage88Min()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-294)関数「void Reduct88Max(
BYTE *ptrS,BYTE *ptrD,int incS,int incD);」

    void            Reduct88Max(                    // 8×8画素正規化相関用画像圧縮:最大値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

関数「ReductImage88Max()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-295)関数「void Reduct88Two(
BYTE *ptrS,BYTE *ptrD,int incS,int incD);」

    void            Reduct88Two(                    // 8×8画素正規化相関用画像圧縮:2番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

関数「ReductImage88Two()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-296)関数「void Reduct88Three(
BYTE *ptrS,BYTE *ptrD,int incS,int incD);」

    void            Reduct88Three(                  // 8×8画素正規化相関用画像圧縮:3番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

関数「ReductImage88Three()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-297)関数「void Reduct88Skip(
BYTE *ptrS,BYTE *ptrD,int incS,int incD);」

    void            Reduct88Skip(                   // 8×8画素正規化相関用画像圧縮:間引き
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD );                         // 圧縮後配列:増加幅

関数「ReductImage88Skip()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-298)関数「void VectorCorr88(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int nOffsetH,int nOffsetV,
double *vecX,double *vecY);」

    void            VectorCorr88(                   // 8×8画素正規化相関による動線ベクトル算出
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         nOffsetH,                       // 水平方向オフセット(左右ずれ)
        int         nOffsetV,                       // 垂直方向オフセット(上下ずれ)
        double*     vecX,                           // X方向結果
        double*     vecY );                         // Y方向結果

関数「VectorCorrImage88(ReductImage88Skip()」の
サブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!

(4-12-299)関数「double AveNM(
BYTE *ptrA,int incA,int n,int m);」

    double          AveNM(                          // n×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「AverageImageNM()」のサブルーチンです!
関数「AverageImageNMXY()」のサブルーチンです!
関数「CorrNMLarge()」のサブルーチンです!
関数「CorrNMLargeFirst()」のサブルーチンです!
関数「CorrNMLargeSecond()」のサブルーチンです!
関数「CorrNMLargeMyself()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」
及びファイル「CopyClear420.cpp」が対象】します!

(4-12-300)関数「double CorrNM(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m);」

    double          CorrNM(                         // n×m画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「CorrImageNM()」のサブルーチンです!
関数「VectorCorrImageNM()」のサブルーチンです!
関数「CorrImageNMXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-301)関数「double CorrNMFirst(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m,
int &avA,int &avB,int &sumA);」

    double          CorrNMFirst(                    // n×m画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int&        sumA );                         // 返値:A配列の分散値(自己相関)

関数「SearchCorrImageNM()」のサブルーチンです!
関数「SearchCorrImageSort()」のサブルーチンです!
関数「VectorCorrNM()」のサブルーチンです!
「First」は、連続して処理する作業の「最初に処理」する
意味!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-302)関数「double CorrNMSecond(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m,int avA,int &avB,int sumA);」

    double          CorrNMSecond(                   // n×m画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        int         sumA );                         // A配列の分散値(自己相関)

関数「SearchCorrImageNM()」のサブルーチンです!
関数「SearchCorrImageSort()」のサブルーチンです!
関数「SearchCorrImageXYSort()」のサブルーチンです!
関数「VectorCorrNM()」のサブルーチンです!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-303)関数「double CorrNMCheck(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m,int avA,int avB);」

    double          CorrNMCheck(                    // n×m画素正規化相関:正/反検査
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int         avB );                          // B配列の平均値

関数「SearchCorrImageSort()」のサブルーチンです!
関数「SearchCorrImageXYSort()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-304)関数「int CorrNMMyself(
BYTE *ptrA,int incA,int n,int m);」

    int             CorrNMMyself(                   // n×m画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         n,                              //  n×mのn
        int         m );                            //  n×mのm

関数「CorrImageNMMyself()」のサブルーチンです!
関数「CorrImageNMMyselfXY()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-305)関数「int CorrNMMyself(
BYTE *ptrA,int incA,int n,int m,int &ave);」

    int             CorrNMMyself(                   // n×m画素正規化相関:自己相関(分散)+平均
        BYTE*       ptrA,                           //  A配列:処理ポインタ
        int         incA,                           //  A配列:増加幅
        int         n,                              //  n×mのn
        int         m,                              //  n×mのm
        int&        ave );                          //  結果:平均値

関数「CorrImageNMMyselfXY()」のサブルーチンです!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-306)関数「void ReductNMAve(
BYTE *ptrS,BYTE *ptrD,
int incS,int incD,int n,int m);」

    void            ReductNMAve(                    // n×m画素正規化相関用画像圧縮:平均値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「ReductImage()」のサブルーチンです!
関数「ReductImageNMAve()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-307)関数「void ReductNMMin(
BYTE *ptrS,BYTE *ptrD,int incS,int incD,
int n,int m);」

    void            ReductNMMin(                    // n×m画素正規化相関用画像圧縮:最小値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「ReductImage()」のサブルーチンです!
関数「ReductImageNMMin()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-308)関数「void ReductNMMax(
BYTE *ptrS,BYTE *ptrD,int incS,int incD,
int n,int m);」

    void            ReductNMMax(                    // n×m画素正規化相関用画像圧縮:最大値
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「ReductImage()」のサブルーチンです!
関数「ReductImageNMMax()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-309)関数「void ReductNMTwo(
BYTE *ptrS,BYTE *ptrD,int incS,int incD,
int n,int m);」

    void            ReductNMTwo(                    // n×m画素正規化相関用画像圧縮:2番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「ReductImage()」のサブルーチンです!
関数「ReductImageNMTwo()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-310)関数「void ReductNMThree(
BYTE *ptrS,BYTE *ptrD,int incS,int incD,
int n,int m);」

    void            ReductNMThree(                  // n×m画素正規化相関用画像圧縮:3番目
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「ReductImage()」のサブルーチンです!
関数「ReductImageNMThree()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-311)関数「void ReductNMSkip(
BYTE *ptrS,BYTE *ptrD,int incS,int incD,
int n,int m);」

    void            ReductNMSkip(                   // n×m画素正規化相関用画像圧縮:間引き
        BYTE*       ptrS,                           // 元配列    :処理ポインタ
        BYTE*       ptrD,                           // 圧縮後配列:処理ポインタ
        int         incS,                           // 元配列    :増加幅
        int         incD,                           // 圧縮後配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「ReductImage()」のサブルーチンです!
関数「ReductImageNMSkip()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-312)関数「void VectorCorrNM(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m,int nOffsetH,int nOffsetV,
double *vecX,double *vecY);」

    void            VectorCorrNM(                   // n×m画素正規化相関による動線ベクトル算出
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         nOffsetH,                       // 水平方向オフセット(左右ずれ)
        int         nOffsetV,                       // 垂直方向オフセット(上下ずれ)
        double*     vecX,                           // X方向結果
        double*     vecY );                         // Y方向結果

関数「VectorCorrImageNM()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-313)関数「double CorrNMLarge(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m);」

    double          CorrNMLarge(                    // n×m画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「CorrImageNMLarge()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!

(4-12-314)関数「double CorrNMLargeFirst(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m,
int &avA,int &avB,double &sumA);」

    double          CorrNMLargeFirst(               // n×m画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double&     sumA );                         // 返値:A配列の分散値(自己相関)

関数「SearchCorrImageNMLarge()」のサブルーチンです!
関数「SearchCorrImageSortLarge()」のサブルーチンです!
「First」は、連続して処理する作業の「最初に処理」する
意味!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!

(4-12-315)関数「double CorrNMLargeSecond(
BYTE *ptrA,BYTE *ptrB,int incA,int incB,
int n,int m,
int avA,int &avB,double sumA);」

    double          CorrNMLargeSecond(              // n×m画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double      sumA );                         // A配列の分散値(自己相関)

関数「SearchCorrImageNMLarge()」のサブルーチンです!
関数「SearchCorrImageSortLarge()」のサブルーチンです!
関数「SearchCorrImageXYSortLarge()」のサブルーチン
です!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!

(4-12-316)関数「double CorrNMLargeMyself(
BYTE *ptrA,int incA,int n,int m);」

    double          CorrNMLargeMyself(              // n×m画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           // A配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「CorrImageNMLargeMyself()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!

(4-12-317)関数「int CountNMMask(
BYTE *ptrM,int incM,int n,int m);」

    int             CountNMMask(                    // n×m有効画素数算出
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m );                            // n×mのm

関数「CorrImageNMMask()」のサブルーチンです!
関数「CorrImageNMMaskMyself()」のサブルーチンです!
関数「SearchCorrImageNMMask()」のサブルーチンです!
関数「SearchCorrImageSortMask()」のサブルーチンです!
関数「SearchCorrImageXYSortMask()」のサブルーチン
です!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!

(4-12-318)関数「double AveNMMask(
BYTE *ptrA,BYTE *ptrM,int incA,int incM,
int n,int m,int cnt);」

    double          AveNMMask(                      // n×m画素平均値
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         cnt );                          // M配列(マスク画像)有効数

関数「CorrNMMask()」のサブルーチンです!
関数「CorrNMMaskFirst()」のサブルーチンです!
関数「CorrNMMaskSecond()」のサブルーチンです!
関数「CorrNMMaskMyself()」のサブルーチンです!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!

(4-12-319)関数「double CorrNMMask(
BYTE *ptrA,BYTE *ptrB,BYTE *ptrM,
int incA,int incB,int incM,int n,int m,int cnt);」

    double          CorrNMMask(                     // n×m画素正規化相関
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         cnt );                          // M配列(マスク画像)有効数

関数「CorrImageNMMask()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!

(4-12-320)関数「double CorrNMMaskFirst(
BYTE *ptrA,BYTE *ptrB,BYTE *ptrM,
int incA,int incB,int incM,int n,int m,
int &avA,int &avB,double &sumA,int cnt);」

    double          CorrNMMaskFirst(                // n×m画素正規化相関:連続相関の最初
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int&        avA,                            // 返値:A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double&     sumA,                           // 返値:A配列の分散値(自己相関)
        int         cnt );                          // M配列(マスク画像)有効数

関数「SearchCorrImageNMMask()」のサブルーチンです!
関数「SearchCorrImageXYSortMask()」のサブルーチン
です!
「First」は、連続して処理する作業の「最初に処理」する
意味!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!

(4-12-321)関数「double CorrNMMaskSecond(
BYTE *ptrA,BYTE *ptrB,BYTE *ptrM,
int incA,int incB,int incM,int n,int m,
int avA,int &avB,double sumA,int cnt);」

    double          CorrNMMaskSecond(               // n×m画素正規化相関:連続相関の2番目以降
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int&        avB,                            // 返値:B配列の平均値
        double      sumA,                           // A配列の分散値(自己相関)
        int         cnt );                          // M配列(マスク画像)有効数

関数「SearchCorrImageNMMask()」のサブルーチンです!
関数「SearchCorrImageSortMask()」のサブルーチンです!
関数「SearchCorrImageXYSortMask()」のサブルーチン
です!
「Second」は、連続して処理する作業の「2番目以降」に
処理する意味!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!

(4-12-322)関数「double CorrNMMaskCheck(
BYTE *ptrA,BYTE *ptrB,BYTE *ptrM,
int incA,int incB,int incM,int n,int m,
int avA,int avB,int cnt);」

    double          CorrNMMaskCheck(                // n×m画素正規化相関:正/反検査
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrB,                           // B配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incB,                           // B配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         avA,                            // A配列の平均値
        int         avB,                            // B配列の平均値
        int         cnt );                          // M配列(マスク画像)有効数

関数「SearchCorrImageSortMask()」のサブルーチンです!
関数「SearchCorrImageXYSortMask()」のサブルーチン
です!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!

(4-12-323)関数「double CorrNMMaskMyself(
BYTE *ptrA,BYTE *ptrM,int incA,int incM,
int n,int m,int cnt);」

    double          CorrNMMaskMyself(               // n×m画素正規化相関:自己相関(分散)
        BYTE*       ptrA,                           // A配列:処理ポインタ
        BYTE*       ptrM,                           // M配列:処理ポインタ
        int         incA,                           // A配列:増加幅
        int         incM,                           // M配列:増加幅
        int         n,                              // n×mのn
        int         m,                              // n×mのm
        int         cnt );                          // M配列(マスク画像)有効数

関数「CorrImageNMMaskMyself()」のサブルーチン
です!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!

(4-12-324)関数「void measureXYstringFere(
TypeCorr bufxy[],int n,
int &x,int &y,int &h,int &v);」

    void                measureXYstringFere(        // 座標列からフェレ情報算出
        TypeCorr        bufxy[],                    //  座標格納ポインタ(サーチ用)
        int             n,                          //  座標個数
        int&            x,                          //  X座標(結果格納)
        int&            y,                          //  Y座標(結果格納)
        int&            h,                          //  水平幅(結果格納)
        int&            v );                        //  垂直幅(結果格納)

関数「excludeOverlapXYBase()」のサブルーチンです!
関数「excludeOverlapXYLarge()」のサブルーチンです!
関数「excludeOverlapXYSuper()」のサブルーチンです!
関数「excludeOverlapXY0Base()」のサブルーチンです!
関数「excludeOverlapXY0Large()」のサブルーチンです!
関数「excludeOverlapXY0Super()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-325)関数「void measureXYstringFere(
TypeCorrIX bufxy[],int n,
int &x,int &y,int &h,int &v);」

    void                measureXYstringFere(        // 座標列からフェレ情報算出
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          //  座標個数
        int&            x,                          //  X座標(結果格納)
        int&            y,                          //  Y座標(結果格納)
        int&            h,                          //  水平幅(結果格納)
        int&            v );                        //  垂直幅(結果格納)

関数「excludeOverlapXYBase()」のサブルーチンです!
関数「excludeOverlapXYLarge()」のサブルーチンです!
関数「excludeOverlapXYSuper()」のサブルーチンです!
関数「excludeOverlapXY0Base()」のサブルーチンです!
関数「excludeOverlapXY0Large()」のサブルーチンです!
関数「excludeOverlapXY0Super()」のサブルーチンです!
関数「excludeOverlapXY0Base()」のサブルーチンです!
関数「excludeOverlapXY0Large()」のサブルーチンです!
関数「excludeOverlapXY0Super()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-326)関数「int excludeOverlapXYBase(
TypeCorr bufxy[],int n,int xDistance,
int yDistance);」

    int                 excludeOverlapXYBase(       // 重複座標の排除:255個まで対応:高速
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-327)関数「int excludeOverlapXYLarge(
TypeCorr bufxy[],int n,int xDistance,
int yDistance);」

    int                 excludeOverlapXYLarge(      // 重複座標の排除:65535個まで対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離

関数「ExcludeOverlapXY()」のサブルーチンです!
関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-328)関数「int excludeOverlapXYSuper(
TypeCorr bufxy[],int n,int xDistance,
int yDistance);」

    int                 excludeOverlapXYSuper(      // 重複座標の排除:65536個以上対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-329)関数「int excludeOverlapXY0Base(
TypeCorr bufxy[],int n);」

    int                 excludeOverlapXY0Base(      // 同座標の排除:255個まで対応:高速
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-330)関数「int excludeOverlapXY0Large(
TypeCorr bufxy[],int n);」

    int                 excludeOverlapXY0Large(     // 同座標の排除:65535個まで対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-331)関数「int excludeOverlapXY0Super(
TypeCorr bufxy[],int n);」

    int                 excludeOverlapXY0Super(     // 同座標の排除:65536個以上対応
        TypeCorr        bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-332)関数「int excludeOverlapXYBase(
TypeCorrIX bufxy[],int n,int xDistance,
int yDistance);」

    int                 excludeOverlapXYBase(       // 重複座標の排除:255個まで対応:高速
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-333)関数「int excludeOverlapXYLarge(
TypeCorrIX bufxy[],int n,int xDistance,
int yDistance);」

    int                 excludeOverlapXYLarge(      // 重複座標の排除:65535個まで対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-334)関数「int excludeOverlapXYSuper(
TypeCorrIX bufxy[],int n,int xDistance,
int yDistance);」

    int                 excludeOverlapXYSuper(      // 重複座標の排除:65536個以上対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n,                          // 座標個数
        int             xDistance,                  // X方向距離
        int             yDistance );                // Y方向距離

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-335)関数「int excludeOverlapXY0Base(
TypeCorrIX bufxy[],int n);」

    int                 excludeOverlapXY0Base(      // 同座標の排除:255個まで対応:高速
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-336)関数「int excludeOverlapXY0Large(
TypeCorrIX bufxy[],int n);」

    int                 excludeOverlapXY0Large(     // 同座標の排除:65535個まで対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-337)関数「int excludeOverlapXY0Super(
TypeCorrIX bufxy[],int n);」

    int                 excludeOverlapXY0Super(     // 同座標の排除:65536個以上対応
        TypeCorrIX      bufxy[],                    // 座標格納ポインタ(サーチ用)
        int             n );                        // 座標個数

関数「ExcludeOverlapXY()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!

(4-12-338)関数「int
makeCorrImageMyselfExtend(
TypeArray* image,TypeXY *bufXY,
int *bufL,int maxN,
int nStepH,int nStepV,double tA,double tB,
int nOffsetH,int nOffsetV);」

    int             makeCorrImageMyselfExtend(      // 自己相関:拡張用座標作成
        TypeArray*  image,                          // 画像
        TypeXY*     bufXY,                          // 結果座標バッファー
        int*        bufL,                           // 結果バッファー:概要
        int         maxN,                           // 最大結果数
        int         nStepH,                         // 水平方向次点ステップ数
        int         nStepV,                         // 垂直方向次点ステップ数
        double      tA,                             // 最小概要しきい値
        double      tB,                             // 最大概要しきい値
        int         nOffsetH,                       // 水平方向オフセット
        int         nOffsetV );                     // 垂直方向オフセット

関数「CorrImage88MyselfExtend()」のサブルーチンです!
関数「CorrImage44MyselfExtend()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」
及びファイル「CopyClear410.cpp」と
ファイル「CopyClear430.cpp」が対象】します!

★備考★
私が、テキストエディタ編集作業ミス≪文字列置き換え作業
の範囲設定し忘れで余計な別の文字列まで置き換え等≫とか
解説『解説クラスTypeArray』でも記載したが、
noteエディタの変な特性でコピペした文章の半角「*」
が消されたり、空白「 」が消される事が多々あります!
注意して手作業で修正している筈ですが、必ず、code
機能で表示して居る物を正しいとして確認して下さい

3月7日分迄の講義とします!本日の講義はココまでと
します!ライブラリ作者の私でも疲れたのだから、
新しい概念に接して居る受講生の皆様もお疲れと思います!オマケにNoteサーバーが、
人気に成ったのか想定外に重たく、追加編集が遣り難く成り
追加する事が出来ません!取り敢えずサブルーチン紹介
までこの文書で終わります!

続きは、「解説クラスCopyClear(10)」
成ります!

文末

この記事が気に入ったらサポートをしてみませんか?