点群と1点から座標系変換行列の設定(その2)

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

Syntax

C#
public static int fnFIE_modelview_npointB(
	F_MODELVIEW_PTR param,
	bool reverse_y,
	DPNT_T origin,
	DPNT_T_PTR pnts_x,
	int pnt_num,
	double scale_x,
	double scale_y,
	f_line_detection_mode lsm_mode,
	int lsm_param
)
Visual Basic
Public Shared Function fnFIE_modelview_npointB ( 
	param As F_MODELVIEW_PTR,
	reverse_y As Boolean,
	origin As DPNT_T,
	pnts_x As DPNT_T_PTR,
	pnt_num As Integer,
	scale_x As Double,
	scale_y As Double,
	lsm_mode As f_line_detection_mode,
	lsm_param As Integer
) As Integer

Parameters

param
Type: fvalgcli..::..F_MODELVIEW_PTR
座標変換係数
reverse_y
Type: System..::..Boolean
Y軸方向
  • TRUE 反転有り(Y軸正方向が上向き)
  • FALSE 反転無し(Y軸正方向が下向き)
origin
Type: fvalgcli..::..DPNT_T
原点を決定する点:P1
pnts_x
Type: fvalgcli..::..DPNT_T_PTR
x軸を決定する点配列:G1。 pnt_num で指定した個数の点が必要
pnt_num
Type: System..::..Int32
点群 pnts_x に入っている点の数(2〜1000)
scale_x
Type: System..::..Double
xスケーリング
scale_y
Type: System..::..Double
yスケーリング
lsm_mode
Type: fvalgcli..::..f_line_detection_mode
直線係数決定モード
  • F_LINE_DIRECT_NORMAL 通常直線検出モード
  • F_LINE_DIRECT_NUM 回数指定モード
  • F_LINE_DIRECT_DIST_A 距離指定モード1
  • F_LINE_DIRECT_DIST_B 距離指定モード2
lsm_param
Type: System..::..Int32
直線係数決定パラメータ

Return Value

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

エラーコード:
f_err内容
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_CALC_IMPOSSIBLE 計算不能エラー
F_ERR_NOMEMORY メモリ不足
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>
        /// 点群と1点から座標系変換行列の設定(その2).
        /// </summary>
        [FvPluginExecute]
        public void fnFIE_modelview_npointB()
        {
            int status = (int)f_err.F_ERR_NONE;

            F_MODELVIEW_PTR param = F_MODELVIEW_PTR.Zero;

            // パラメータ.
            bool reverse_y = false;
            DPNT_T_PTR pnts_x = DPNT_T_PTR.Zero;
            int pnt_num = 4;
            DPNT_T pnt_y = DPNT_T.init(25, 50);
            double scale_x = 1;
            double scale_y = 1;
            f_line_detection_mode lsm_mode = f_line_detection_mode.F_LINE_DIRECT_NORMAL;
            int lsm_param = 0;

            try
            {
                // 確保.
                param = api.fnFIE_modelview_alloc_param();
                pnts_x = DPNT_T_PTR.alloc(pnt_num);

                // 点列の値をセット.
                pnts_x[0] = DPNT_T.init(50, 50);
                pnts_x[1] = DPNT_T.init(50, 100);
                pnts_x[2] = DPNT_T.init(100, 50);
                pnts_x[3] = DPNT_T.init(100, 100);

                status = api.fnFIE_modelview_npointB(param, reverse_y, pnt_y, pnts_x, pnt_num, scale_x, scale_y, lsm_mode, lsm_param);

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

                // 結果表示.
                ConsoleOut.WriteFunctionName(":\n");
                Console.WriteLine(" reverse_y = {0}\n angle = {1}\n move = ({2},{3})\n scale = ({4},{5})",
                                    param.reverse_y, param.angle, param.move_x, param.move_y, param.scale_x, param.scale_y);
                ConsoleOut.WriteFMATRIX(param.forward, param.forward.row, param.forward.col);
                ConsoleOut.WriteFMATRIX(param.backward, param.backward.row, param.backward.col);
                Console.Write(" ...");
                ConsoleOut.IsEqualMatrix(param.backward, 1, 0, 25, 0, 1, 50, 0, 0, 1);
            }
            finally
            {
                param.Dispose();
                pnts_x.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' 点群と1点から座標系変換行列の設定(その2).
    ''' </summary>
    <FvPluginExecute> _
    Public Sub fnFIE_modelview_npointB()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        Dim param As F_MODELVIEW_PTR = F_MODELVIEW_PTR.Zero

        ' パラメータ.
        Dim reverse_y As Boolean = False
        Dim pnts_x As DPNT_T_PTR = DPNT_T_PTR.Zero
        Dim pnt_num As Integer = 4
        Dim pnt_y As DPNT_T = DPNT_T.init(25, 50)
        Dim scale_x As Double = 1
        Dim scale_y As Double = 1
        Dim lsm_mode As f_line_detection_mode = f_line_detection_mode.F_LINE_DIRECT_NORMAL
        Dim lsm_param As Integer = 0

        Try
            ' 確保.
            param = api.fnFIE_modelview_alloc_param()
            pnts_x = DPNT_T_PTR.alloc(pnt_num)

            ' 点列の値をセット.
            pnts_x(0) = DPNT_T.init(50, 50)
            pnts_x(1) = DPNT_T.init(50, 100)
            pnts_x(2) = DPNT_T.init(100, 50)
            pnts_x(3) = DPNT_T.init(100, 100)

            status = api.fnFIE_modelview_npointB(param, reverse_y, pnt_y, pnts_x, pnt_num, scale_x, _
                scale_y, lsm_mode, lsm_param)

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

            ' 結果表示.
            ConsoleOut.WriteFunctionName(":" & vbLf)
            Console.WriteLine(" reverse_y = {0}" & vbLf & " angle = {1}" & vbLf & " move = ({2},{3})" & vbLf & " scale = ({4},{5})", param.reverse_y, param.angle, param.move_x, param.move_y, param.scale_x, _
                param.scale_y)
            ConsoleOut.WriteFMATRIX(param.forward, param.forward.row, param.forward.col)
            ConsoleOut.WriteFMATRIX(param.backward, param.backward.row, param.backward.col)
            Console.Write(" ...")
            ConsoleOut.IsEqualMatrix(param.backward, 1, 0, 25, 0, 1, _
                50, 0, 0, 1)
        Finally
            param.Dispose()
            pnts_x.Dispose()
        End Try
    End Sub
End Class

See Also