直線の射影変換
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_geotrans_perspective_line( DLINE_T src, ref DLINE_T dst, FMATRIX_PTR mat ) |
Visual Basic |
---|
Public Shared Function fnFIE_geotrans_perspective_line ( src As DLINE_T, ByRef dst As DLINE_T, mat As FMATRIX_PTR ) As Integer |
Parameters
- src
- Type: fvalgcli..::..DLINE_T
入力点座標
- dst
- Type: fvalgcli..::..DLINE_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 |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { /// <summary> /// 直線の射影変換. /// </summary> /// <remarks> /// 変換行列. /// |7 2 0| /// |3 6 0| /// |6 4 4| /// /// 直線. /// (a, b, c) = (1, -1, -10) /// /// 期待値. /// a: 1.0 /// b: 0.44927536231884091 /// c: -1.3043478260869568 /// /// </remarks> [FvPluginExecute] public void fnFIE_geotrans_perspective_line() { int status = (int)f_err.F_ERR_NONE; DLINE_T src = new DLINE_T(); // 入力直線. DLINE_T dst = new DLINE_T(); // 出力直線. FMATRIX_PTR mat = FMATRIX_PTR.Zero; // 同次変換行列. // 期待値. const double ans_a = 1.0; const double ans_b = 0.44927536231884091; const double ans_c = -1.3043478260869568; try { // 同次変換行列の確保. mat = api.fnFIE_mat_aalloc(3, 3); // 同次変換行列の値を設定する. mat = FMATRIX_PTR.alloc(3, 3); { mat[0, 0] = 7; mat[0, 1] = 2; mat[0, 2] = 0; mat[1, 0] = 3; mat[1, 1] = 6; mat[1, 2] = 0; mat[2, 0] = 6; mat[2, 1] = 4; mat[2, 2] = 4; }; // 入力直線の設定. src.a = 1; src.b = -1; src.c = -10; // 処理の実行. status = api.fnFIE_geotrans_perspective_line(src, ref dst, mat); // エラー判定. Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 結果出力. ConsoleOut.WriteFunctionName(":\n"); Console.Write("\tdst: a={0:f3}, b={1:f3}, c={2:f3} ...", dst.a, dst.b, dst.c); ConsoleOut.IsTrue( DblEqual(dst.a, ans_a) && DblEqual(dst.b, ans_b) && DblEqual(dst.c, ans_c) ); } finally { // オブジェクトの開放. mat.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE ''' <summary> ''' 直線の射影変換. ''' </summary> ''' <remarks> ''' 変換行列. ''' |7 2 0| ''' |3 6 0| ''' |6 4 4| ''' ''' 直線. ''' (a, b, c) = (1, -1, -10) ''' ''' 期待値. ''' a: 1.0 ''' b: 0.44927536231884091 ''' c: -1.3043478260869568 ''' ''' </remarks> <FvPluginExecute> _ Public Sub fnFIE_geotrans_perspective_line() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim src As New DLINE_T() ' 入力直線. Dim dst As New DLINE_T() ' 出力直線. Dim mat As FMATRIX_PTR = FMATRIX_PTR.Zero ' 同次変換行列. ' 期待値. Const ans_a As Double = 1.0 Const ans_b As Double = 0.449275362318841 Const ans_c As Double = -1.30434782608696 Try ' 同次変換行列の確保. mat = api.fnFIE_mat_aalloc(3, 3) ' 同次変換行列の値を設定する. mat = FMATRIX_PTR.alloc(3, 3) If True Then mat(0, 0) = 7 mat(0, 1) = 2 mat(0, 2) = 0 mat(1, 0) = 3 mat(1, 1) = 6 mat(1, 2) = 0 mat(2, 0) = 6 mat(2, 1) = 4 mat(2, 2) = 4 End If ' 入力直線の設定. src.a = 1 src.b = -1 src.c = -10 ' 処理の実行. status = api.fnFIE_geotrans_perspective_line(src, dst, mat) ' エラー判定. Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 結果出力. ConsoleOut.WriteFunctionName(":" & vbLf) Console.Write(vbTab & "dst: a={0:f3}, b={1:f3}, c={2:f3} ...", dst.a, dst.b, dst.c) ConsoleOut.IsTrue(DblEqual(dst.a, ans_a) AndAlso DblEqual(dst.b, ans_b) AndAlso DblEqual(dst.c, ans_c)) Finally ' オブジェクトの開放. mat.Dispose() End Try End Sub End Class |