点群1を通る円1と点群2を通る円2の交点の算出
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_cg_calc_cross_2circleA( DPNT_T_PTR pnts1, int num1, DPNT_T_PTR pnts2, int num2, ref int cross_num, ref DPNT_T cross1, ref DPNT_T cross2 ) |
Visual Basic |
---|
Public Shared Function fnFIE_cg_calc_cross_2circleA ( pnts1 As DPNT_T_PTR, num1 As Integer, pnts2 As DPNT_T_PTR, num2 As Integer, ByRef cross_num As Integer, ByRef cross1 As DPNT_T, ByRef cross2 As DPNT_T ) As Integer |
Parameters
- pnts1
- Type: fvalgcli..::..DPNT_T_PTR
円1を生成する座標点群G1。 num1 個の点が必要。
- num1
- Type: System..::..Int32
点群pnts1 に入っている点の数(3〜16)
- pnts2
- Type: fvalgcli..::..DPNT_T_PTR
円2を生成する座標点群G2。 num2 個の点が必要。
- num2
- Type: System..::..Int32
点群 pnts2 に入っている点の数(3〜16)
- cross_num
- Type: System..::..Int32%
交点数
- cross1
- Type: fvalgcli..::..DPNT_T%
交点座標Pi1
- cross2
- Type: fvalgcli..::..DPNT_T%
交点座標Pi2
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー |
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_calc_cross_2circleA() { int status = (int)f_err.F_ERR_NONE; DPNT_T_PTR pts1 = DPNT_T_PTR.Zero; int num1 = 16; DPNT_T_PTR pts2 = DPNT_T_PTR.Zero; int num2 = 16; int cross_num = 0; DPNT_T cross1 = new DPNT_T(); DPNT_T cross2 = new DPNT_T(); const int ans_num = 2; try { pts1 = DPNT_T_PTR.alloc(num1); pts2 = DPNT_T_PTR.alloc(num2); for (int i = 0; i < 8; i++) { // circle1: (x-200)2+(Y-200)2=150*150,Y=50,80......260 pts1[i] = DPNT_T.init( (int)Math.Sqrt(150 * 150 - (50 + 30 * i - 200) * (50 + 30 * i - 200)) + 200, 50 + 30 * i); pts1[i + 8] = DPNT_T.init( -(int)Math.Sqrt(150 * 150 - (50 + 30 * i - 200) * (50 + 30 * i - 200)) + 200, 50 + 30 * i); // circle2: (x-300)2+(Y-300)2=150*150,Y=150,80......360 pts2[i] = DPNT_T.init( (int)Math.Sqrt(150 * 150 - (150 + 30 * i - 300) * (150 + 30 * i - 300)) + 300, 150 + 30 * i); pts2[i + 8] = DPNT_T.init( -(int)Math.Sqrt(150 * 150 - (150 + 30 * i - 300) * (150 + 30 * i - 300)) + 300, 150 + 30 * i); } status = api.fnFIE_cg_calc_cross_2circleA(pts1, num1, pts2, num2, ref cross_num, ref cross1, ref cross2); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 結果を出力する. ConsoleOut.WriteFunctionName(":\n"); Console.WriteLine("cross_num: {0}", cross_num); Console.WriteLine("2circleAcross1.x: {0}", cross1.x); Console.WriteLine("2circleAcross1.y: {0}", cross1.y); Console.WriteLine("2circleAcross2.x: {0}", cross2.x); Console.WriteLine("2circleAcross2.y: {0}", cross2.y); Console.Write(" ..."); ConsoleOut.IsTrue(cross_num == ans_num); } finally { pts1.Dispose(); pts2.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_calc_cross_2circleA() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim pts1 As DPNT_T_PTR = DPNT_T_PTR.Zero Dim num1 As Integer = 16 Dim pts2 As DPNT_T_PTR = DPNT_T_PTR.Zero Dim num2 As Integer = 16 Dim cross_num As Integer = 0 Dim cross1 As New DPNT_T() Dim cross2 As New DPNT_T() Const ans_num As Integer = 2 Try pts1 = DPNT_T_PTR.alloc(num1) pts2 = DPNT_T_PTR.alloc(num2) For i As Integer = 0 To 7 ' circle1: (x-200)2+(Y-200)2=150*150,Y=50,80......260 pts1(i) = DPNT_T.init(CInt(Math.Truncate(Math.Sqrt(150 * 150 - (50 + 30 * i - 200) * (50 + 30 * i - 200)))) + 200, 50 + 30 * i) pts1(i + 8) = DPNT_T.init(-CInt(Math.Truncate(Math.Sqrt(150 * 150 - (50 + 30 * i - 200) * (50 + 30 * i - 200)))) + 200, 50 + 30 * i) ' circle2: (x-300)2+(Y-300)2=150*150,Y=150,80......360 pts2(i) = DPNT_T.init(CInt(Math.Truncate(Math.Sqrt(150 * 150 - (150 + 30 * i - 300) * (150 + 30 * i - 300)))) + 300, 150 + 30 * i) pts2(i + 8) = DPNT_T.init(-CInt(Math.Truncate(Math.Sqrt(150 * 150 - (150 + 30 * i - 300) * (150 + 30 * i - 300)))) + 300, 150 + 30 * i) Next status = api.fnFIE_cg_calc_cross_2circleA(pts1, num1, pts2, num2, cross_num, cross1, _ cross2) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 結果を出力する. ConsoleOut.WriteFunctionName(":" & vbLf) Console.WriteLine("cross_num: {0}", cross_num) Console.WriteLine("2circleAcross1.x: {0}", cross1.x) Console.WriteLine("2circleAcross1.y: {0}", cross1.y) Console.WriteLine("2circleAcross2.x: {0}", cross2.x) Console.WriteLine("2circleAcross2.y: {0}", cross2.y) Console.Write(" ...") ConsoleOut.IsTrue(cross_num = ans_num) Finally pts1.Dispose() pts2.Dispose() End Try End Sub End Class |