直線のアフィン変換
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_geotrans_affine_line( DLINE_T src, ref DLINE_T dst, FMATRIX_PTR mat ) |
Visual Basic |
---|
Public Shared Function fnFIE_geotrans_affine_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> /// 入力直線 y=x-10 を、(100,200)を中心として45度回転させる. /// 期待値 /// a: 1.0 /// b: 0.0 /// c: -107.07106781186521 /// </remarks> [FvPluginExecute] public void fnFIE_geotrans_affine_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.0; const double ans_c = -107.07106781186521; try { // 同次変換行列の確保. mat = api.fnFIE_mat_aalloc(3, 3); // 同次変換行列の値設定. api.fnFIE_geotrans_calc_rotate_matrix(mat, Math.PI / 4, 100, 100); // 入力直線の設定. src.a = 1; src.b = -1; src.c = -10; // 処理の実行. status = api.fnFIE_geotrans_affine_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> ''' 入力直線 y=x-10 を、(100,200)を中心として45度回転させる. ''' 期待値 ''' a: 1.0 ''' b: 0.0 ''' c: -107.07106781186521 ''' </remarks> <FvPluginExecute> _ Public Sub fnFIE_geotrans_affine_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.0 Const ans_c As Double = -107.071067811865 Try ' 同次変換行列の確保. mat = api.fnFIE_mat_aalloc(3, 3) ' 同次変換行列の値設定. api.fnFIE_geotrans_calc_rotate_matrix(mat, Math.PI / 4, 100, 100) ' 入力直線の設定. src.a = 1 src.b = -1 src.c = -10 ' 処理の実行. status = api.fnFIE_geotrans_affine_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 |