2次元ボロノイ図の各母点に関する情報の取得

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

Syntax

C#
public static int fnFIE_cg_voronoi_get_gnrt_info(
	FHANDLE hvrni,
	int gnrt_no,
	ref F_CG_VG_INFO_PTR info
)
Visual Basic
Public Shared Function fnFIE_cg_voronoi_get_gnrt_info ( 
	hvrni As FHANDLE,
	gnrt_no As Integer,
	ByRef info As F_CG_VG_INFO_PTR
) As Integer

Parameters

hvrni
Type: fvalgcli..::..FHANDLE
2次元ボロノイ図のハンドル
gnrt_no
Type: System..::..Int32
調査母点番号
info
Type: fvalgcli..::..F_CG_VG_INFO_PTR%
母点情報構造体。(IntPtr.Zero で初期化してください。取得したアドレスは解放しないでください。)

Return Value

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

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された オブジェクトがボロノイ図ではない オープンが完了していないか ボロノイ図が作成されていないか
F_ERR_INVALID_PARAM 不正なパラメータが渡された 調査点がボロノイ図の有効範囲に入っていない info が IntPtr.Zero で初期化されていない
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
    {
        [FvPluginExecute]
        public void fnFIE_cg_voronoi_get_gnrt_info()
        {
            int status = (int)f_err.F_ERR_NONE;

            // ボロノイ図オブジェクト作成用パラメータ.
            FHANDLE hvrni = FHANDLE.Zero;    // ボロノイ図オブジェクト [in].
            PNT_T_PTR pnts = PNT_T_PTR.Zero;
            int num;
            int sx;
            int sy;
            int ex;
            int ey;

            // ボロノイ図情報取得用変数.
            int gnrt_no;                                    // 情報を取得したい母点の番号.
            F_CG_VG_INFO_PTR info = F_CG_VG_INFO_PTR.Zero;    // ボロノイ図の母点情報を格納・・・注意;ボロノイ図オブジェクト解放時に同時に解放されるため,個別に解放しない.

            const int ans_num = 4;

            try
            {
                // 母点の座標を設定.
                num = 5;
                pnts = PNT_T_PTR.alloc(num);
                pnts[0] = PNT_T.init(5, 5);
                pnts[1] = PNT_T.init(5, 15);
                pnts[2] = PNT_T.init(15, 5);
                pnts[3] = PNT_T.init(15, 15);
                pnts[4] = PNT_T.init(10, 10);

                // ボロノイ図有効範囲の設定.
                sx = 0;
                sy = 0;
                ex = 20;
                ey = 20;

                // 情報を取得したい母点番号の設定.
                gnrt_no = 4;

                // ボロノイ図オブジェクトの生成.
                hvrni = api.fnFIE_cg_voronoi_open(pnts, num, sx, sy, ex, ey);

                if (hvrni == FHANDLE.Zero)
                    Console.Write("エラーが発生しました");

                // ボロノイ図情報の取得.
                status = api.fnFIE_cg_voronoi_get_gnrt_info(hvrni, gnrt_no, ref info);

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

                // 結果を出力する.
                ConsoleOut.WriteFunctionName(":\n");
                Console.WriteLine("bnd : {0}", info.bnd);                                                        // F_CG_BND_RGN:境界が有限、F_CG_UNBND_RGN:境界が無限.
                Console.WriteLine("num : {0}", info.num);                                                        // 指定した母点に隣接している母点の数.
                Console.WriteLine("area : {0}", info.area);                                                        // 指定した母点のボロノイ細胞の面積.
                Console.WriteLine("ve_info_no : ({0})", info.ve_info.at(2).no);                                    // ボロノイ辺の隣にある母点の番号.
                Console.WriteLine("ve_info_st : ({0},{1})", info.ve_info.at(2).st.x, info.ve_info.at(2).st.y);    // ボロノイ辺の始点.
                Console.WriteLine("ve_info_ed : ({0},{1})", info.ve_info.at(2).ed.x, info.ve_info.at(2).ed.y);    // ボロノイ辺の終点.
                Console.Write(" ...");
                ConsoleOut.IsTrue(ans_num == info.num);
            }
            finally
            {
                hvrni.Dispose();    // ボロノズオブジェクト解放時にinfoも解放される.
                pnts.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

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

Public Partial Class FIE
    <FvPluginExecute> _
    Public Sub fnFIE_cg_voronoi_get_gnrt_info()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        ' ボロノイ図オブジェクト作成用パラメータ.
        Dim hvrni As FHANDLE = FHANDLE.Zero
        ' ボロノイ図オブジェクト [in].
        Dim pnts As PNT_T_PTR = PNT_T_PTR.Zero
        Dim num As Integer
        Dim sx As Integer
        Dim sy As Integer
        Dim ex As Integer
        Dim ey As Integer

        ' ボロノイ図情報取得用変数.
        Dim gnrt_no As Integer
        ' 情報を取得したい母点の番号.
        Dim info As F_CG_VG_INFO_PTR = F_CG_VG_INFO_PTR.Zero
        ' ボロノイ図の母点情報を格納・・・注意;ボロノイ図オブジェクト解放時に同時に解放されるため,個別に解放しない.
        Const  ans_num As Integer = 4

        Try
            ' 母点の座標を設定.
            num = 5
            pnts = PNT_T_PTR.alloc(num)
            pnts(0) = PNT_T.init(5, 5)
            pnts(1) = PNT_T.init(5, 15)
            pnts(2) = PNT_T.init(15, 5)
            pnts(3) = PNT_T.init(15, 15)
            pnts(4) = PNT_T.init(10, 10)

            ' ボロノイ図有効範囲の設定.
            sx = 0
            sy = 0
            ex = 20
            ey = 20

            ' 情報を取得したい母点番号の設定.
            gnrt_no = 4

            ' ボロノイ図オブジェクトの生成.
            hvrni = api.fnFIE_cg_voronoi_open(pnts, num, sx, sy, ex, ey)

            If hvrni = FHANDLE.Zero Then
                Console.Write("エラーが発生しました")
            End If

            ' ボロノイ図情報の取得.
            status = api.fnFIE_cg_voronoi_get_gnrt_info(hvrni, gnrt_no, info)

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

            ' 結果を出力する.
            ConsoleOut.WriteFunctionName(":" & vbLf)
            Console.WriteLine("bnd : {0}", info.bnd)
            ' F_CG_BND_RGN:境界が有限、F_CG_UNBND_RGN:境界が無限.
            Console.WriteLine("num : {0}", info.num)
            ' 指定した母点に隣接している母点の数.
            Console.WriteLine("area : {0}", info.area)
            ' 指定した母点のボロノイ細胞の面積.
            Console.WriteLine("ve_info_no : ({0})", info.ve_info.at(2).no)
            ' ボロノイ辺の隣にある母点の番号.
            Console.WriteLine("ve_info_st : ({0},{1})", info.ve_info.at(2).st.x, info.ve_info.at(2).st.y)
            ' ボロノイ辺の始点.
            Console.WriteLine("ve_info_ed : ({0},{1})", info.ve_info.at(2).ed.x, info.ve_info.at(2).ed.y)
            ' ボロノイ辺の終点.
            Console.Write(" ...")
            ConsoleOut.IsTrue(ans_num = info.num)
        Finally
            hvrni.Dispose()
            ' ボロノズオブジェクト解放時にinfoも解放される.
            pnts.Dispose()
        End Try
    End Sub
End Class

See Also