最小外接円(最小包含円)の計算(浮動小数点型)
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_cg_enclosing_circle_calc_d( DPNT_T_PTR pnts, int num, ref DPNT_T center, ref double radius2 ) |
Visual Basic |
---|
Public Shared Function fnFIE_cg_enclosing_circle_calc_d ( pnts As DPNT_T_PTR, num As Integer, ByRef center As DPNT_T, ByRef radius2 As Double ) As Integer |
Parameters
- pnts
- Type: fvalgcli..::..DPNT_T_PTR
点群
- num
- Type: System..::..Int32
点の数( pnts の要素数)
- center
- Type: fvalgcli..::..DPNT_T%
包含円中心
- radius2
- Type: System..::..Double%
包含円半径の2乗
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された |
F_ERR_NOMEMORY | メモリ不足 |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Remarks
Examples
C# | Copy |
---|---|
// $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_enclosing_circle_calc_d() { int status = (int)f_err.F_ERR_NONE; DPNT_T_PTR pnts = DPNT_T_PTR.Zero; // 点群. int num; // 点の数( pnts の要素数). DPNT_T center = new DPNT_T(); // 包含円中心. double radius2= new double(); // 包含円半径の2乗. const double ans_center_x = 123; const double ans_center_y = 456; const double ans_radius = 78; try { // 点群を確保、設定する. num = 4; pnts = DPNT_T_PTR.alloc(num); pnts[0] = DPNT_T.init(ans_center_x, ans_center_y - ans_radius); pnts[1] = DPNT_T.init(ans_center_x + ans_radius, ans_center_y); pnts[2] = DPNT_T.init(ans_center_x, ans_center_y + ans_radius); pnts[3] = DPNT_T.init(ans_center_x - ans_radius, ans_center_y); // 最小外接円(最小包含円)の計算(浮動小数点型). status = api.fnFIE_cg_enclosing_circle_calc_d(pnts, num, ref center, ref radius2); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 結果を出力する. ConsoleOut.WriteFunctionName(":\t"); Console.Write("center=({0:f3} , {1:f3}), radius2={2:f3} ...", center.x, center.y, radius2); ConsoleOut.IsTrue( DblEqual(center.x, ans_center_x) && DblEqual(center.y, ans_center_y) && DblEqual(radius2, ans_radius * ans_radius) ); } finally { pnts.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE <FvPluginExecute> _ Public Sub fnFIE_cg_enclosing_circle_calc_d() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim pnts As DPNT_T_PTR = DPNT_T_PTR.Zero ' 点群. Dim num As Integer ' 点の数( pnts の要素数). Dim center As New DPNT_T() ' 包含円中心. Dim radius2 As New Double() ' 包含円半径の2乗. Const ans_center_x As Double = 123 Const ans_center_y As Double = 456 Const ans_radius As Double = 78 Try ' 点群を確保、設定する. num = 4 pnts = DPNT_T_PTR.alloc(num) pnts(0) = DPNT_T.init(ans_center_x, ans_center_y - ans_radius) pnts(1) = DPNT_T.init(ans_center_x + ans_radius, ans_center_y) pnts(2) = DPNT_T.init(ans_center_x, ans_center_y + ans_radius) pnts(3) = DPNT_T.init(ans_center_x - ans_radius, ans_center_y) ' 最小外接円(最小包含円)の計算(浮動小数点型). status = api.fnFIE_cg_enclosing_circle_calc_d(pnts, num, center, radius2) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 結果を出力する. ConsoleOut.WriteFunctionName(":" & vbTab) Console.Write("center=({0:f3} , {1:f3}), radius2={2:f3} ...", center.x, center.y, radius2) ConsoleOut.IsTrue(DblEqual(center.x, ans_center_x) AndAlso DblEqual(center.y, ans_center_y) AndAlso DblEqual(radius2, ans_radius * ans_radius)) Finally pnts.Dispose() End Try End Sub End Class |