点のアフィン変換

Namespace: fvalgcli
Assembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)

Syntax

C#
public static int fnFIE_geotrans_affine_point(
	DPNT_T src,
	ref DPNT_T dst,
	FMATRIX_PTR mat
)
Visual Basic
Public Shared Function fnFIE_geotrans_affine_point ( 
	src As DPNT_T,
	ByRef dst As DPNT_T,
	mat As FMATRIX_PTR
) As Integer

Parameters

src
Type: fvalgcli..::..DPNT_T
入力点座標
dst
Type: fvalgcli..::..DPNT_T%
出力点座標
mat
Type: fvalgcli..::..FMATRIX_PTR
同次変換行列(3x3の正方行列)

Return Value

Type: Int32
以下のエラーコードを返します。

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NO_LICENCEライセンスエラー、または未初期化エラー

Remarks

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.Text;

using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        /// <summary>
        /// 点のアフィン変換.
        /// </summary>
        [FvPluginExecute]
        public void fnFIE_geotrans_affine_point()
        {
            int status = (int)f_err.F_ERR_NONE;

            DPNT_T src = new DPNT_T();    // 入力点座標.
            DPNT_T dst = new DPNT_T();    // 出力点座標.
            FMATRIX_PTR mat = FMATRIX_PTR.Zero;    // 同次変換行列.

            const double shift_dx = 11;
            const double shift_dy = 22;

            try
            {
                // 同次変換行列の確保と値の設定.
                mat = api.fnFIE_mat_aalloc(3, 3);
                api.fnFIE_geotrans_calc_shift_matrix(mat, shift_dx, shift_dy);

                // 入力点座標の設定.
                src.x = 33;
                src.y = 44;

                // 処理の実行.
                status = api.fnFIE_geotrans_affine_point(src, ref dst, mat);

                // エラー判定.
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status);

                // 結果出力.
                ConsoleOut.WriteFunctionName(":\t");
                Console.Write("dst({0} , {1}) ...", dst.x, dst.y);
                ConsoleOut.IsTrue(
                    DblEqual(dst.x, src.x + shift_dx) &&
                    DblEqual(dst.y, src.y + shift_dy)
                );
            }
            finally
            {
                // オブジェクトの開放.
                mat.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text

Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' 点のアフィン変換.
    ''' </summary>
    <FvPluginExecute> _
    Public Sub fnFIE_geotrans_affine_point()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        Dim src As New DPNT_T()
        ' 入力点座標.
        Dim dst As New DPNT_T()
        ' 出力点座標.
        Dim mat As FMATRIX_PTR = FMATRIX_PTR.Zero
        ' 同次変換行列.
        Const  shift_dx As Double = 11
        Const  shift_dy As Double = 22

        Try
            ' 同次変換行列の確保と値の設定.
            mat = api.fnFIE_mat_aalloc(3, 3)
            api.fnFIE_geotrans_calc_shift_matrix(mat, shift_dx, shift_dy)

            ' 入力点座標の設定.
            src.x = 33
            src.y = 44

            ' 処理の実行.
            status = api.fnFIE_geotrans_affine_point(src, dst, mat)

            ' エラー判定.
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err))

            ' 結果出力.
            ConsoleOut.WriteFunctionName(":" & vbTab)
            Console.Write("dst({0} , {1}) ...", dst.x, dst.y)
            ConsoleOut.IsTrue(DblEqual(dst.x, src.x + shift_dx) AndAlso DblEqual(dst.y, src.y + shift_dy))
        Finally
            ' オブジェクトの開放.
            mat.Dispose()
        End Try
    End Sub
End Class

See Also