回転をする同次変換行列を作成
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_geotrans_calc_rotate_matrix( FMATRIX_PTR mat, double rad, double cx, double cy ) |
Visual Basic |
---|
Public Shared Function fnFIE_geotrans_calc_rotate_matrix ( mat As FMATRIX_PTR, rad As Double, cx As Double, cy As Double ) As Integer |
Parameters
- mat
- Type: fvalgcli..::..FMATRIX_PTR
同次変換行列
- rad
- Type: System..::..Double
回転角(ラジアン)
- cx
- Type: System..::..Double
回転中心x座標
- cy
- Type: System..::..Double
回転中心y座標
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> [FvPluginExecute] public void fnFIE_geotrans_calc_rotate_matrix() { int status = (int)f_err.F_ERR_NONE; FMATRIX_PTR mat = FMATRIX_PTR.Zero; // 同次変換行列. const double rad = 0.523599; // 回転角. const double cx = 20; // 回転中心X座標. const double cy = 30; // 回転中心Y座標. try { // 同次変換行列の確保. mat = api.fnFIE_mat_aalloc(3, 3); // 処理の実行. status = api.fnFIE_geotrans_calc_rotate_matrix(mat, rad, cx, cy); // エラー判定. Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 結果出力. ConsoleOut.WriteFunctionName(":\t"); ConsoleOut.IsEqualMatrix( mat, Math.Cos(rad), -Math.Sin(rad), cx - (cx * Math.Cos(rad) - cy * Math.Sin(rad)), Math.Sin(rad), Math.Cos(rad), cy - (cx * Math.Sin(rad) + cy * Math.Cos(rad)), 0, 0, 1 ); ConsoleOut.WriteFMATRIX(mat, 3, 3); } finally { // オブジェクトの開放. mat.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE ''' <summary> ''' 回転をする同次変換行列の作成. ''' </summary> <FvPluginExecute> _ Public Sub fnFIE_geotrans_calc_rotate_matrix() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim mat As FMATRIX_PTR = FMATRIX_PTR.Zero ' 同次変換行列. Const rad As Double = 0.523599 ' 回転角. Const cx As Double = 20 ' 回転中心X座標. Const cy As Double = 30 ' 回転中心Y座標. Try ' 同次変換行列の確保. mat = api.fnFIE_mat_aalloc(3, 3) ' 処理の実行. status = api.fnFIE_geotrans_calc_rotate_matrix(mat, rad, cx, cy) ' エラー判定. Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 結果出力. ConsoleOut.WriteFunctionName(":" & vbTab) ConsoleOut.IsEqualMatrix(mat, Math.Cos(rad), -Math.Sin(rad), cx - (cx * Math.Cos(rad) - cy * Math.Sin(rad)), Math.Sin(rad), Math.Cos(rad), _ cy - (cx * Math.Sin(rad) + cy * Math.Cos(rad)), 0, 0, 1) ConsoleOut.WriteFMATRIX(mat, 3, 3) Finally ' オブジェクトの開放. mat.Dispose() End Try End Sub End Class |