列挙型 | |
enum | f_line_detection_mode { F_LINE_DIRECT_NORMAL = 0, F_LINE_DIRECT_NUM = 1, F_LINE_DIRECT_DIST_A = 2, F_LINE_DIRECT_DIST_B = 3, F_LINE_DETECTION_NORMAL = 0, F_LINE_DETECTION_NUM = 2, F_LINE_DETECTION_DIST_A = 1, F_LINE_DETECTION_DIST_B = 3 } |
直線検出モード [詳細] | |
関数 | |
INT FVALGAPI | fnFIE_cg_calc_angle_for_line (DLINE_T line, enum f_direction direction, DOUBLE *angle) |
直線の角度の算出 | |
INT FVALGAPI | fnFIE_cg_calc_distance_point_to_line (DPNT_T pnt, DLINE_T line, DOUBLE *dist) |
点から直線までの距離の算出 | |
INT FVALGAPI | fnFIE_cg_calc_vertical_line_point_and_line (DPNT_T pnt, DLINE_T line, DLINE_T *line_ans) |
任意の点を通り,直線2に垂直な直線1の算出 | |
INT FVALGAPI | fnFIE_cg_calc_line_2pointA (DPNT_T pnt1, DPNT_T pnt2, DLINE_T *line) |
2点から直線を算出 | |
INT FVALGAPI | fnFIE_cg_calc_line_2pointB (DPNT_T pnt1, DPNT_T pnt2, DLINE_T *line, DOUBLE *angle) |
2点から直線とその角度の算出 | |
INT FVALGAPI | fnFIE_cg_calc_line_npoint (const DPNT_T *pnts, INT num, enum f_line_detection_mode lsm_mode, INT lsm_param, DLINE_T *line, DOUBLE *angle) |
点群から直線を算出(直線近似) | |
INT FVALGAPI | fnFIE_cg_calc_center_2pointA (DPNT_T pnt1, DPNT_T pnt2, DPNT_T *center) |
2点の中点座標の算出 | |
INT FVALGAPI | fnFIE_cg_calc_center_2pointB (DPNT_T pnt1, DPNT_T pnt2, DPNT_T *center, DOUBLE *dist) |
2点の中点座標と距離の算出 | |
INT FVALGAPI | fnFIE_cg_calc_center_point_and_lineA (DPNT_T pnt1, DPNT_T pnt2, DPNT_T pnt3, DPNT_T *center, DOUBLE *dist) |
2点を通る直線と点までの距離と中点座標の算出(3点指定) | |
INT FVALGAPI | fnFIE_cg_calc_center_point_and_lineB (const DPNT_T *pnts, INT num, DPNT_T pnt, enum f_line_detection_mode lsm_mode, INT lsm_param, DPNT_T *center, DOUBLE *dist) |
点群を通る直線と点までの距離と中点座標の算出(点群と1点指定) | |
INT FVALGAPI | fnFIE_cg_calc_center_point_and_lineC (DLINE_T line, DPNT_T pnt, DPNT_T *center, DOUBLE *dist) |
直線と点までの距離と中点座標の算出(直線と1点指定) | |
INT FVALGAPI | fnFIE_cg_calc_crosspoint_2line (DLINE_T line1, DLINE_T line2, DPNT_T *cross) |
2直線の交点の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_2lineA (DPNT_T pnt1, DPNT_T pnt2, DPNT_T pnt3, DPNT_T pnt4, DPNT_T *cross, DOUBLE *angle) |
2直線(2点指定×2)の交点座標と交角の角度の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_2lineB (const DPNT_T *pnts1, INT num1, const DPNT_T *pnts2, INT num2, enum f_line_detection_mode lsm_mode, INT lsm_param, DPNT_T *cross, DOUBLE *angle) |
2直線(2点群指定)の交点座標と交角の角度の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_2lineC (DLINE_T line1, DLINE_T line2, DPNT_T *cross, DOUBLE *angle) |
2直線の交点座標と交角の角度の算出 | |
INT FVALGAPI | fnFIE_cg_calc_circle_npoints (DPNT_T **pnts_set, const INT *num_set, INT set_num, DPNT_T *center, DOUBLE *radius) |
複数点群を通る円の中心座標と半径の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_circle_and_lineA (const DPNT_T *pnts, INT num, DPNT_T pnt1, DPNT_T pnt2, INT *cross_num, DPNT_T *cross1, DPNT_T *cross2) |
点群を通る円と2点を通る直線の交点 | |
INT FVALGAPI | fnFIE_cg_calc_cross_circle_and_lineB (DPNT_T center, DOUBLE radius, DLINE_T line, INT *cross_num, DPNT_T *cross1, DPNT_T *cross2) |
円と直線の交点の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_2circleA (const DPNT_T *pnts1, INT num1, const DPNT_T *pnts2, INT num2, INT *cross_num, DPNT_T *cross1, DPNT_T *cross2) |
点群1を通る円1と点群2を通る円2の交点の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_2circleB (DPNT_T center1, DOUBLE radius1, DPNT_T center2, DOUBLE radius2, INT *cross_num, DPNT_T *cross1, DPNT_T *cross2) |
2つの円の交点の算出 | |
INT FVALGAPI | fnFIE_cg_calc_rectangle_5point (DPNT_T pnt1, DPNT_T pnt2, DPNT_T pnt3, DPNT_T pnt4, DPNT_T pnt5, DOUBLE *long_len, DOUBLE *short_len, DPNT_T *center) |
5点を通る辺を持つ四角形の中心座標 | |
INT FVALGAPI | fnFIE_cg_calc_distance_2point (DPNT_T pnt1, DPNT_T pnt2, DOUBLE *dist) |
2点間の距離の算出 | |
INT FVALGAPI | fnFIE_cg_calc_distance_npoint (const DPNT_T *pnts, INT num, DOUBLE *dist) |
N点間の距離の算出 | |
INT FVALGAPI | fnFIE_cg_calc_centerline_2npoint (const DPNT_T *pnts1, INT num1, const DPNT_T *pnts2, INT num2, enum f_line_detection_mode lsm_mode, INT lsm_param, DLINE_T *line) |
2直線の中心を通る直線の算出(2点群指定) | |
INT FVALGAPI | fnFIE_cg_calc_centerline_4point (DPNT_T pnt1, DPNT_T pnt2, DPNT_T pnt3, DPNT_T pnt4, DLINE_T *line) |
2直線の中心を通る直線の算出(4点指定) | |
INT FVALGAPI | fnFIE_cg_calc_centerline_2line (DLINE_T line1, DLINE_T line2, DLINE_T *center_line) |
2直線の中心を通る直線の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_4line (DLINE_T line1, DLINE_T line2, DLINE_T line3, DLINE_T line4, DPNT_T *cross) |
2組の2直線の中心を通る直線の交点の検出(4直線指定) | |
INT FVALGAPI | fnFIE_cg_calc_cross_4npoint (const DPNT_T *pnts1, INT num1, const DPNT_T *pnts2, INT num2, const DPNT_T *pnts3, INT num3, const DPNT_T *pnts4, INT num4, enum f_line_detection_mode lsm_mode, INT lsm_param, DPNT_T *cross) |
2組の2直線の中心を通る直線の交点の算出(4点群指定) | |
INT FVALGAPI | fnFIE_cg_calc_cross_8point (DPNT_T pnt1, DPNT_T pnt2, DPNT_T pnt3, DPNT_T pnt4, DPNT_T pnt5, DPNT_T pnt6, DPNT_T pnt7, DPNT_T pnt8, DPNT_T *cross) |
2組の2直線の中心を通る直線の交点の算出(8点指定) | |
INT FVALGAPI | fnFIE_cg_calc_rectangle_4line (DLINE_T lineAB, DLINE_T lineBC, DLINE_T lineCD, DLINE_T lineDA, DOUBLE *long1, DOUBLE *short1, DOUBLE *long2, DOUBLE *short2, DPNT_T *center) |
四角形の中心座標の算出(4直線指定) | |
INT FVALGAPI | fnFIE_cg_calc_rectangle_4npoint (const DPNT_T *pntsAB, INT numAB, const DPNT_T *pntsBC, INT numBC, const DPNT_T *pntsCD, INT numCD, const DPNT_T *pntsDA, INT numDA, enum f_line_detection_mode lsm_mode, INT lsm_param, DOUBLE *long1, DOUBLE *short1, DOUBLE *long2, DOUBLE *short2, DPNT_T *center) |
四角形の中心座標の算出(4点群指定) | |
INT FVALGAPI | fnFIE_cg_calc_cross_mark (DPNT_T pnt1, DPNT_T pnt2, DPNT_T pnt3, DPNT_T pnt4, DPNT_T pnt5, DPNT_T pnt6, DPNT_T pnt7, DPNT_T pnt8, DPNT_T *center) |
トンボマークの中心の算出 | |
INT FVALGAPI | fnFIE_cg_calc_long_hole_6point (DPNT_T pnt1, DPNT_T pnt2, DPNT_T pnt3, DPNT_T pnt4, DPNT_T pnt5, DPNT_T pnt6, DOUBLE *long1, DOUBLE *short1, DOUBLE *long2, DOUBLE *short2, DPNT_T *center) |
長穴の測定(6点指定) | |
INT FVALGAPI | fnFIE_cg_calc_tangent_line (DPNT_T pnt, DPNT_T center, DOUBLE radius, DLINE_T *line) |
円の接線の方程式の算出 | |
INT FVALGAPI | fnFIE_cg_calc_cross_ellipse_and_line (DPNT_T center, DOUBLE major, DOUBLE minor, DOUBLE theta, DLINE_T line, INT *cross_num, DPNT_T *cross1, DPNT_T *cross2) |
楕円と直線の交点の算出 | |
INT FVALGAPI | fnFIE_cg_calc_distance_ellipse_to_point (DPNT_T center, DOUBLE major, DOUBLE minor, DOUBLE theta, DPNT_T point, DOUBLE *distance, DPNT_T *nearest_point, BOOL *outer) |
楕円と点の距離 |
直線検出モード
幾何計算での直線検出モードを指定します。
INT FVALGAPI fnFIE_cg_calc_angle_for_line | ( | DLINE_T | line, | |
enum f_direction | direction, | |||
DOUBLE * | angle | |||
) |
直線の角度の算出
指定された直線の角度を計算します。
左より、F_DIRECT_RIGHT 、 F_DIRECT_LEFT 、 F_DIRECT_DOWN を指定した場合の角度範囲を示しています。
[in] | line | 直線 |
[in] | direction | 直線の方向
|
[out] | angle | 直線の角度(単位:ラジアン) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
点から直線までの距離の算出
点P1 と直線L1
の距離dを公式
によって求めます。
[in] | pnt | 座標点P1 |
[in] | line | 直線L1 |
[out] | dist | 距離d |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_vertical_line_point_and_line | ( | DPNT_T | pnt, | |
DLINE_T | line, | |||
DLINE_T * | line_ans | |||
) |
任意の点を通り,直線2に垂直な直線1の算出
点P1を通る、直線L2に垂直な直線L1の方程式の係数 a, b, c を求めます。
[in] | pnt | 直線L1が通る点P1 |
[in] | line | 求める直線L1に垂直な直線L2 |
[out] | line_ans | 求められた垂直な直線L1 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
2点から直線を算出
任意の2点P1とP2からなる、直線L12の方程式の係数 a, b, c を求めます。
P1とP2が同一座標の場合は、直線が定まらないため、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnt1 | 直線を生成する座標点P1 |
[in] | pnt2 | 直線を生成する座標点P2 |
[out] | line | 直線L12 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_line_2pointB | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DLINE_T * | line, | |||
DOUBLE * | angle | |||
) |
2点から直線とその角度の算出
任意の2点P1とP2からなる、直線L12の方程式の係数 a, b, c と角度 を求めます。
P1とP2が同一座標の場合は、直線が定まらないため、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnt1 | 直線を生成する座標点P1 |
[in] | pnt2 | 直線を生成する座標点P2 |
[out] | line | 生成された直線L12 |
[out] | angle | 生成された直線の傾き(単位:ラジアン [![]() ![]() |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_line_npoint | ( | const DPNT_T * | pnts, | |
INT | num, | |||
enum f_line_detection_mode | lsm_mode, | |||
INT | lsm_param, | |||
DLINE_T * | line, | |||
DOUBLE * | angle | |||
) |
点群から直線を算出(直線近似)
最小2乗法により、点群G1から直線L1の方程式の係数 a, b, c を求めます。
G1は2〜1000点の範囲内で設定出来ます。
直線生成パラメータ( lsm_param )は、直線生成モードにより意味が異なります。 パラメータの意味は以下の通りです。
[in] | pnts | 直線を生成する座標点群G1。 num 個の点が必要 |
[in] | num | 点群に入っている点の数(2〜1000) |
[in] | lsm_mode | 直線生成のモード
|
[in] | lsm_param | 直線生成のパラメータ |
[out] | line | 求められた直線L1 |
[out] | angle | 求められた直線の傾き(単位:ラジアン [![]() ![]() |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
2点の中点座標の算出
点P1とP2の中点座標Pcを求めます。
[in] | pnt1 | 座標点P1 |
[in] | pnt2 | 座標点P2 |
[out] | center | 中点座標Pc |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_center_2pointB | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T * | center, | |||
DOUBLE * | dist | |||
) |
2点の中点座標と距離の算出
点P1とP2の中点座標Pcと距離dを求めます。 fnFIE_cg_calc_center_2pointA() との違いは距離が求められることです。
[in] | pnt1 | 座標点P1 |
[in] | pnt2 | 座標点P2 |
[out] | center | 2点の中点座標Pc |
[out] | dist | 2点間の距離d |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_center_point_and_lineA | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T | pnt3, | |||
DPNT_T * | center, | |||
DOUBLE * | dist | |||
) |
2点を通る直線と点までの距離と中点座標の算出(3点指定)
点P1とP2からなる直線L1と点P3との距離dと中点座標Pcを求めます。
P1とP2が同一座標の場合は、直線が定まらないため、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnt1 | 直線を決定する座標点P1 |
[in] | pnt2 | 直線を決定する座標点P2 |
[in] | pnt3 | 直線との距離を求める座標点P3 |
[out] | center | 直線と点3との中点座標Pc |
[out] | dist | 直線と点3との距離d |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_center_point_and_lineB | ( | const DPNT_T * | pnts, | |
INT | num, | |||
DPNT_T | pnt, | |||
enum f_line_detection_mode | lsm_mode, | |||
INT | lsm_param, | |||
DPNT_T * | center, | |||
DOUBLE * | dist | |||
) |
点群を通る直線と点までの距離と中点座標の算出(点群と1点指定)
点群G1の作る直線L1と点P1との距離dと中点座標Pcを求めます。
G1に指定できる点の数は2個から1000個です。 点の数がこの範囲にない場合は、F_ERR_INVALID_PARAM を返します。
直線生成パラメータ( lsm_param )は、直線生成モードにより意味が異なります。 パラメータの意味は以下の通りです。
[in] | pnts | 直線を生成する座標点群G1。 num 個の点が必要 |
[in] | num | 点群に入っている点の数(2〜1000) |
[in] | pnt | 距離と中点を求めるための座標点 |
[in] | lsm_mode | 直線生成のモード
|
[in] | lsm_param | 直線生成のパラメータ |
[out] | center | 直線L1と点P1との中点座標Pc |
[out] | dist | 直線L1と点P1との距離d |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_center_point_and_lineC | ( | DLINE_T | line, | |
DPNT_T | pnt, | |||
DPNT_T * | center, | |||
DOUBLE * | dist | |||
) |
直線と点までの距離と中点座標の算出(直線と1点指定)
直線L1と点P1との距離dと中点座標Pcを求めます。
不正な直線を与えた場合は F_ERR_CALC_IMPOSSIBLE を返します。 例えば直線の方程式の係数a, bが共に0のような直線が不正な直線となります。
[in] | line | 直線L1 |
[in] | pnt | 座標点P1 |
[out] | center | 直線L1と点P1の中点座標Pc |
[out] | dist | 直線L1と点P1の距離d |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
2直線の交点の算出
2直線L1とL2が交わる点Pcの座標を計算します。
2直線が平行で交わらない場合は、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | line1 | 交点を求めるための対象となる直線L1 |
[in] | line2 | 交点を求めるための対象となる直線L2 |
[out] | cross | 交点座標Pc |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー(2直線が平行で、交点が求まらない) | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_2lineA | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T | pnt3, | |||
DPNT_T | pnt4, | |||
DPNT_T * | cross, | |||
DOUBLE * | angle | |||
) |
2直線(2点指定×2)の交点座標と交角の角度の算出
点P1とP2の作る直線L12と、 点P3とP4作る直線L34の交点座標Pcと交角の角度を求めます。
P1とP2 、またはP3とP4が同一座標の場合は F_ERR_CALC_IMPOSSIBLE を返します。 また、それぞれ求められた直線L12とL34が平行だった場合にも F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnt1 | 直線L12も求めるための座標点P1 |
[in] | pnt2 | 直線L12も求めるための座標点P2 |
[in] | pnt3 | 直線L34も求めるための座標点P3 |
[in] | pnt4 | 直線L34も求めるための座標点P4 |
[out] | cross | 2直線が作る交点座標Pc |
[out] | angle | 2直線のなす角のうち、小さい方の角度(単位:ラジアン [0,![]() |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_2lineB | ( | const DPNT_T * | pnts1, | |
INT | num1, | |||
const DPNT_T * | pnts2, | |||
INT | num2, | |||
enum f_line_detection_mode | lsm_mode, | |||
INT | lsm_param, | |||
DPNT_T * | cross, | |||
DOUBLE * | angle | |||
) |
2直線(2点群指定)の交点座標と交角の角度の算出
点群G1の作る直線とL1、点群G2の作る直線L2の交点座標P1と交角の角度を求めます。
直線生成パラメータ( lsm_param )は、直線生成モードにより意味が異なります。 パラメータの意味は以下の通りです。
[in] | pnts1 | 座標点群G1(2〜1000)。 num1 個の点が必要。 |
[in] | num1 | 点群G1に入っている点の数 |
[in] | pnts2 | 座標点群G2(2〜1000)。 num2 個の点が必要。 |
[in] | num2 | 点群G2に入っている点の数 |
[in] | lsm_mode | 直線生成のモード
|
[in] | lsm_param | 直線生成のパラメータ |
[out] | cross | 2直線が作る交点座標P1 |
[out] | angle | 2直線のなす角のうち、小さい方の角度(単位:ラジアン [0,![]() |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_2lineC | ( | DLINE_T | line1, | |
DLINE_T | line2, | |||
DPNT_T * | cross, | |||
DOUBLE * | angle | |||
) |
2直線の交点座標と交角の角度の算出
直線L1とL2の交点座標Pcと交角の角度を求めます。
2直線が平行で、交わらない場合は、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | line1 | 直線L1 |
[in] | line2 | 直線L2 |
[out] | cross | 2直線の交点座標Pc |
[out] | angle | 2直線のなす角のうち、小さい方の角度(単位:ラジアン [0, ![]() |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー(2直線が平行で、交点が求まらない) | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_circle_npoints | ( | DPNT_T ** | pnts_set, | |
const INT * | num_set, | |||
INT | set_num, | |||
DPNT_T * | center, | |||
DOUBLE * | radius | |||
) |
複数点群を通る円の中心座標と半径の算出
N個の点群Gn{n = 1,2,…N}を通る円の中心座標Pcと半径rを求めます。 各点群の点数を合計した個数が16個以上の時は、各点群の配列の最初から順番に点を取りだして行き、16個を選びます。
各点群には1個以上の点がなければいけません。 点が0個の点群が含まれていた場合は、 F_ERR_INVALID_PARAM を返します。 また、すべての点が同一座標であったなど不正な点群を与えた場合、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnts_set | 複数の座標点群Gnの配列。 3個以上の要素が必要 |
[in] | num_set | 各点群に入っている点の個数の配列。 set_num 個分の要素が必要 |
[in] | set_num | 点群数 |
[out] | center | 円の中心座標Pc |
[out] | radius | 円の半径r |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_circle_and_lineA | ( | const DPNT_T * | pnts, | |
INT | num, | |||
DPNT_T | pnt1, | |||
DPNT_T | pnt2, | |||
INT * | cross_num, | |||
DPNT_T * | cross1, | |||
DPNT_T * | cross2 | |||
) |
点群を通る円と2点を通る直線の交点
点群G1を通る円と2点P1とP2を通る直線L1の交点Pi1とPi2を求めます。 交点が1個のときはPi2の値は意味を持ちません。 交点が見つからない(交点が0個)ときはPi1とPi2の値は両方とも意味を持ちません。
円を生成するG1は、点の数が3〜16個の範囲でなければいけません。 違った場合は、 F_ERR_INVALID_PARAM を返します。
また、例えば直線の方程式の係数a, bが共に0のような直線が不正な直線を与えた場合は F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnts | 円を生成する座標点群G1。 num 個の点が必要 |
[in] | num | 点群の点数(3〜16個) |
[in] | pnt1 | 直線を構成する座標点P1 |
[in] | pnt2 | 直線を構成する座標点P2 |
[out] | cross_num | 交点数 |
[out] | cross1 | 交点座標Pi1 |
[out] | cross2 | 交点座標Pi2 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_circle_and_lineB | ( | DPNT_T | center, | |
DOUBLE | radius, | |||
DLINE_T | line, | |||
INT * | cross_num, | |||
DPNT_T * | cross1, | |||
DPNT_T * | cross2 | |||
) |
円と直線の交点の算出
円C1と直線L1の交点Pi1とPi2を求めます。 交点が1個のときはPi2の値は意味を持ちません。 交点が見つからないとき(交点が0個)はPi1とPi2の値は両方とも意味を持ちません。
例えば直線の方程式の係数a, bが共に0のような直線が不正な直線を与えた場合は F_ERR_CALC_IMPOSSIBLE を返します。
[in] | center | 円の中心座標 |
[in] | radius | 円の半径 |
[in] | line | 直線L1 |
[out] | cross_num | 交点数 |
[out] | cross1 | 交点座標Pi1 |
[out] | cross2 | 交点座標Pi2 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_2circleA | ( | const DPNT_T * | pnts1, | |
INT | num1, | |||
const DPNT_T * | pnts2, | |||
INT | num2, | |||
INT * | cross_num, | |||
DPNT_T * | cross1, | |||
DPNT_T * | cross2 | |||
) |
点群1を通る円1と点群2を通る円2の交点の算出
点群G1を通る円C1と点群G2を通る円C2の交点Pi1とPi2を求めます。 交点が1個のときはPi2の値は意味を持ちません。 交点が見つからない(交点が0個)ときはPi1とPi2の値は両方とも意味を持ちません。
G1およびG2に指定される点群は、それぞれ点の数が3〜16個の範囲 でなければいけません。違っている場合は、 F_ERR_INVALID_PARAM を返します。 また、円1と円2が重なった場合や、すべての点が同一座標であったなど不正な点群を与えた場合、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnts1 | 円1を生成する座標点群G1。 num1 個の点が必要。 |
[in] | num1 | 点群pnts1 に入っている点の数(3〜16) |
[in] | pnts2 | 円2を生成する座標点群G2。 num2 個の点が必要。 |
[in] | num2 | 点群 pnts2 に入っている点の数(3〜16) |
[out] | cross_num | 交点数 |
[out] | cross1 | 交点座標Pi1 |
[out] | cross2 | 交点座標Pi2 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_2circleB | ( | DPNT_T | center1, | |
DOUBLE | radius1, | |||
DPNT_T | center2, | |||
DOUBLE | radius2, | |||
INT * | cross_num, | |||
DPNT_T * | cross1, | |||
DPNT_T * | cross2 | |||
) |
2つの円の交点の算出
円C1と円C2の交点Pi1とPi2を求めます。 交点が1個のときはPi2の値は意味を持ちません。 交点が見つからない(交点が0個)ときはPi1とPi2の値は意味を持ちません。
円1と円2が重なっているときには、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | center1 | 円1の中心座標 |
[in] | radius1 | 円1の半径 |
[in] | center2 | 円2の中心座標 |
[in] | radius2 | 円2の半径 |
[out] | cross_num | 交点の個数 |
[out] | cross1 | 交点座標Pi1 |
[out] | cross2 | 交点座標Pi2 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_rectangle_5point | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T | pnt3, | |||
DPNT_T | pnt4, | |||
DPNT_T | pnt5, | |||
DOUBLE * | long_len, | |||
DOUBLE * | short_len, | |||
DPNT_T * | center | |||
) |
5点を通る辺を持つ四角形の中心座標
5点Pn{n=1,2,3,4,5}で決定される四角形の中心座標Pcを求めます。
求められた直線が平行で交点が求められない場合、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnt1 | 四角形の基準となる辺を作る直線Lのための点P1 |
[in] | pnt2 | 四角形の基準となる辺を作る直線Lのための点P2 |
[in] | pnt3 | 直線Lと隣り合う辺を作る点P3 |
[in] | pnt4 | 直線Lと向かい合う辺を作る点P4 |
[in] | pnt5 | 直線Lと隣り合う辺を作る点P5 |
[out] | long_len | 長方形の長辺の長さ |
[out] | short_len | 長方形の短辺の長さ |
[out] | center | 長方形の中心座標点 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
2点間の距離の算出
下記式により、点P1 とP2
の距離dを求めます。
[in] | pnt1 | 座標点P1 |
[in] | pnt2 | 座標点P2 |
[out] | dist | 2点間の距離d |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_distance_npoint | ( | const DPNT_T * | pnts, | |
INT | num, | |||
DOUBLE * | dist | |||
) |
N点間の距離の算出
点群G1のN個の点Pn{n=1,2,3,4,5}に関して格納している順番に前後の点の距離の積算を求めます。
[in] | pnts | 座標点群G1。 num 個の点が必要です。 |
[in] | num | 点群 pnts に入っている点の数N |
[out] | dist | 積算距離 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_centerline_2npoint | ( | const DPNT_T * | pnts1, | |
INT | num1, | |||
const DPNT_T * | pnts2, | |||
INT | num2, | |||
enum f_line_detection_mode | lsm_mode, | |||
INT | lsm_param, | |||
DLINE_T * | line | |||
) |
2直線の中心を通る直線の算出(2点群指定)
点群G1とG2が作る2直線L1とL2から等距離にある点群が生成する直線の検出します。
G1およびG2に指定する点群の点の数は、それぞれ2〜1000個の範囲でなければいけません。 違っている場合は F_ERR_INVALID_PARAM を返します。 また、すべての点が同一座標であったなど不正な点群を与えた場合、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnts1 | 直線L1を生成する座標点群G1。 num1 個の点が必要。 |
[in] | num1 | 点群 pnts1 に入っている点の数(2〜1000) |
[in] | pnts2 | 直線L2を生成する座標点群G2。 num2 個の点が必要。 |
[in] | num2 | 点群 pnts2 に入っている点の数(2〜1000) |
[in] | lsm_mode | 直線生成のモード
|
[in] | lsm_param | 直線生成のパラメータ |
[out] | line | 2直線の中心を通る直線 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_centerline_4point | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T | pnt3, | |||
DPNT_T | pnt4, | |||
DLINE_T * | line | |||
) |
2直線の中心を通る直線の算出(4点指定)
点P1とP2、 P3と4が作る2本の直線L1とL2から、等距離にある点群が生成する直線L1の検出します。
P1とP2、またはP3とP4が同一座標であったなど不正な点群を与えた場合、 F_ERR_CALC_IMPOSSIBLE を返します。 また、求められた2直線が直交する場合には、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnt1 | 直線L1を作る座標点P1 |
[in] | pnt2 | 直線L1を作る座標点P2 |
[in] | pnt3 | 直線L2を作る座標点P3 |
[in] | pnt4 | 直線L2を作る座標点P4 |
[out] | line | 2直線の中心を通る直線 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
2直線の中心を通る直線の算出
2つの直線L1とL2の中心を通る直線Lcを求めます。 2直線の交角の狭い方の中心線を検出します。
2直線が直交する場合には、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | line1 | 直線L1 |
[in] | line2 | 直線L2 |
[out] | center_line | 2直線の中心を通る直線L3 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_4line | ( | DLINE_T | line1, | |
DLINE_T | line2, | |||
DLINE_T | line3, | |||
DLINE_T | line4, | |||
DPNT_T * | cross | |||
) |
2組の2直線の中心を通る直線の交点の検出(4直線指定)
4直線から2本の中心線を作り、その2本の中心線の交点を求めます。
直線L1とL2の中心を通る直線Lc1を求めます。 次に、直線L3とL4の中心を通る直線Lc2を求めます。 求められた中心線Lc1とLc2の交点Pc1を求め、これを結果として返します。
L1とL2が直交している場合、またはL3とL4が直交している場合は、 Lc1またはLc2が求まらないためエラーとなり、 F_ERR_CALC_IMPOSSIBLE を返します。 また、Lc1とLc2が平行となる場合は、交点が求まらないためエラーとなり、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | line1 | 直線L1 |
[in] | line2 | 直線L2 |
[in] | line3 | 直線L3 |
[in] | line4 | 直線L4 |
[out] | cross | 中心線Lc1と中心線Lc2の交点座標Pc1 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_4npoint | ( | const DPNT_T * | pnts1, | |
INT | num1, | |||
const DPNT_T * | pnts2, | |||
INT | num2, | |||
const DPNT_T * | pnts3, | |||
INT | num3, | |||
const DPNT_T * | pnts4, | |||
INT | num4, | |||
enum f_line_detection_mode | lsm_mode, | |||
INT | lsm_param, | |||
DPNT_T * | cross | |||
) |
2組の2直線の中心を通る直線の交点の算出(4点群指定)
点群G1とG2が作る2直線L1とL2から等距離にある点群が生成する中心線Lc1の検出します。 点群G3とG4が作る2直線L3とL4から等距離にある点群が生成する中心線Lc2の検出します。 中心線Lc1と中心線Lc2の交点Pc1を求めます。
各点群の点の数は2〜1000個の範囲でなければいけません。 違っている場合は、 F_ERR_INVALID_PARAM を返します。 L1とL2が直交している場合、またはL3とL4が直交している場合は、 Lc1またはLc2が求まらないためエラーとなり、 F_ERR_CALC_IMPOSSIBLE を返します。 また、Lc1とLc2が平行となる場合は、交点が求まらないためエラーとなり、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnts1 | 直線L1を生成する座標点群G1 |
[in] | num1 | 点群 pnts1 に入っている点の数(2〜1000) |
[in] | pnts2 | 直線L2を生成する座標点群G2 |
[in] | num2 | 点群 pnts2 に入っている点の数(2〜1000) |
[in] | pnts3 | 直線L3を生成する座標点群G3 |
[in] | num3 | 点群 pnts3 に入っている点の数(2〜1000) |
[in] | pnts4 | 直線L4を生成する座標点群G4 |
[in] | num4 | 点群 pnts4 に入っている点の数(2〜1000) |
[in] | lsm_mode | 直線生成のモード
|
[in] | lsm_param | 直線生成のパラメータ |
[out] | cross | 中心線Lc1と中心線Lc2の交点座標Pc1 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_8point | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T | pnt3, | |||
DPNT_T | pnt4, | |||
DPNT_T | pnt5, | |||
DPNT_T | pnt6, | |||
DPNT_T | pnt7, | |||
DPNT_T | pnt8, | |||
DPNT_T * | cross | |||
) |
2組の2直線の中心を通る直線の交点の算出(8点指定)
8点Pn{n=1,2,3,4,5,6,7,8}が作る4直線Ln{n = 1,2,3,4}の2本の中心線Lc1とLc2の交点座標Pc1の検出をします。
[in] | pnt1 | 直線L1を設定する座標点P1 |
[in] | pnt2 | 直線L1を設定する座標点P2 |
[in] | pnt3 | 直線L2を設定する座標点P3 |
[in] | pnt4 | 直線L2を設定する座標点P4 |
[in] | pnt5 | 直線L3を設定する座標点P5 |
[in] | pnt6 | 直線L3を設定する座標点P6 |
[in] | pnt7 | 直線L4を設定する座標点P7 |
[in] | pnt8 | 直線L4を設定する座標点P8 |
[out] | cross | 中心線Lc1とLc2の交点座標Pc1 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_rectangle_4line | ( | DLINE_T | lineAB, | |
DLINE_T | lineBC, | |||
DLINE_T | lineCD, | |||
DLINE_T | lineDA, | |||
DOUBLE * | long1, | |||
DOUBLE * | short1, | |||
DOUBLE * | long2, | |||
DOUBLE * | short2, | |||
DPNT_T * | center | |||
) |
四角形の中心座標の算出(4直線指定)
4つの直線AB、BC、CD、DAが作る四角形の中心座標(対角線の交点)Pcと長辺、短辺の長さを求めます。
長辺と短辺を格納する long1 と short1 は、四角形の辺ABと辺BCの長さを比較して長い方が long1 に格納され、短い方は short1 に格納されます。 また、long2 と short2 については long1 に辺ABが入った場合には long2 は辺CD、 short2 には辺DAのように辺ABと辺CD、辺BCと辺DAの向かい合う辺同士が対応して long と short に格納されます。
[in] | lineAB | 辺AB |
[in] | lineBC | 辺BC |
[in] | lineCD | 辺CD |
[in] | lineDA | 辺DA |
[out] | long1 | 長辺1の長さ |
[out] | short1 | 短辺1の長さ |
[out] | long2 | 長辺2の長さ |
[out] | short2 | 短辺2の長さ |
[out] | center | 中心点座標 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_rectangle_4npoint | ( | const DPNT_T * | pntsAB, | |
INT | numAB, | |||
const DPNT_T * | pntsBC, | |||
INT | numBC, | |||
const DPNT_T * | pntsCD, | |||
INT | numCD, | |||
const DPNT_T * | pntsDA, | |||
INT | numDA, | |||
enum f_line_detection_mode | lsm_mode, | |||
INT | lsm_param, | |||
DOUBLE * | long1, | |||
DOUBLE * | short1, | |||
DOUBLE * | long2, | |||
DOUBLE * | short2, | |||
DPNT_T * | center | |||
) |
四角形の中心座標の算出(4点群指定)
4つの点群から得られる4つの直線AB、BC、CD、DAが作る四角形の中心座標(対角線の交点)Pcと長辺、 短辺の長さを求めます。
長辺と短辺を格納する long1 と short1 は、四角形の辺ABと辺BCの長さを比較して 長い方が long1 に格納され、短い方は short1 に格納されます。 また、 long2 と short2 については long1 に辺ABが入った場合には long2 は 辺CD、 short2 には辺DAのように辺ABと辺CD、 辺BCと辺DAの向かい合う辺同士が対応して long と short に格納されます。
直線生成パラメータ( lsm_param )は、直線生成モードにより意味が異なります。 パラメータの意味は以下の通りです。
[in] | pntsAB | 辺ABを作る座標点群。 numAB 個の点が必要 |
[in] | numAB | 点群 pntsAB に入っている点の数(2〜1000) |
[in] | pntsBC | 辺BCを作る座標点群。 numBC 個の点が必要 |
[in] | numBC | 点群 pntsBC に入っている点の数(2〜1000) |
[in] | pntsCD | 辺CDを作る座標点群。 numCD 個の点が必要 |
[in] | numCD | 点群 pntsCD に入っている点の数(2〜1000) |
[in] | pntsDA | 辺DAを作る座標点群。 numDA 個の点が必要 |
[in] | numDA | 点群 pntsDA に入っている点の数(2〜1000) |
[in] | lsm_mode | 直線生成のモード
|
[in] | lsm_param | 直線生成のパラメータ |
[out] | long1 | 長辺1の長さ |
[out] | short1 | 短辺1の長さ |
[out] | long2 | 長辺2の長さ |
[out] | short2 | 短辺2の長さ |
[out] | center | 中心点座標 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_mark | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T | pnt3, | |||
DPNT_T | pnt4, | |||
DPNT_T | pnt5, | |||
DPNT_T | pnt6, | |||
DPNT_T | pnt7, | |||
DPNT_T | pnt8, | |||
DPNT_T * | center | |||
) |
トンボマークの中心の算出
トンボマークの中心座標の検出をします。
[in] | pnt1 | 座標点P1 |
[in] | pnt2 | 座標点P2 |
[in] | pnt3 | 座標点P3 |
[in] | pnt4 | 座標点P4 |
[in] | pnt5 | 座標点P5 |
[in] | pnt6 | 座標点P6 |
[in] | pnt7 | 座標点P7 |
[in] | pnt8 | 座標点P8 |
[out] | center | 中心座標Pc1 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_long_hole_6point | ( | DPNT_T | pnt1, | |
DPNT_T | pnt2, | |||
DPNT_T | pnt3, | |||
DPNT_T | pnt4, | |||
DPNT_T | pnt5, | |||
DPNT_T | pnt6, | |||
DOUBLE * | long1, | |||
DOUBLE * | short1, | |||
DOUBLE * | long2, | |||
DOUBLE * | short2, | |||
DPNT_T * | center | |||
) |
長穴の測定(6点指定)
入力6点によって作られる長穴の測定を行います。
[in] | pnt1 | 座標点P1 |
[in] | pnt2 | 座標点P2 |
[in] | pnt3 | 座標点P3 |
[in] | pnt4 | 座標点P4 |
[in] | pnt5 | 座標点P5 |
[in] | pnt6 | 座標点P6 |
[out] | long1 | 長穴の作る四角形の長辺1 |
[out] | short1 | 長穴の作る四角形の短辺2 |
[out] | long2 | 長穴の作る四角形の長辺2 |
[out] | short2 | 長穴の作る四角形の短辺2 |
[out] | center | 長穴の作る四角形の中心座標Pc |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_tangent_line | ( | DPNT_T | pnt, | |
DPNT_T | center, | |||
DOUBLE | radius, | |||
DLINE_T * | line | |||
) |
円の接線の方程式の算出
中心Pc1、半径rの円上の点P1における接線Lを求めます。 円上の点の指定は、厳密にいえば整数型の指定では誤差が出てしまいます。 よって本関数では、誤差を四捨五入して1画素未満であれば円の方程式により正しい円上の点を導きだし、その点上での接線の方程式を求めます。
P1が円上の点でない場合、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | pnt | 円上にある点P1 |
[in] | center | 円の中心座標C1 |
[in] | radius | 円の半径r |
[out] | line | 接線L |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_cross_ellipse_and_line | ( | DPNT_T | center, | |
DOUBLE | major, | |||
DOUBLE | minor, | |||
DOUBLE | theta, | |||
DLINE_T | line, | |||
INT * | cross_num, | |||
DPNT_T * | cross1, | |||
DPNT_T * | cross2 | |||
) |
楕円と直線の交点の算出
楕円Eと直線Lの交点Pi1とPi2を求めます。
交点が1個のときはPi2の値は意味を持ちません。 交点が見つからないとき(交点が0個)はPi1とPi2の値は両方とも意味を持ちません。 交点が2個の場合は、次のような条件で結果を出力します。
[in] | center | 楕円の中心座標 |
[in] | major | 楕円の主軸長 |
[in] | minor | 楕円の副軸長 |
[in] | theta | 楕円の主軸傾き ( 単位:ラジアン ) |
[in] | line | 直線L |
[out] | cross_num | 交点数 |
[out] | cross1 | 交点座標Pi1 |
[out] | cross2 | 交点座標Pi2 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_cg_calc_distance_ellipse_to_point | ( | DPNT_T | center, | |
DOUBLE | major, | |||
DOUBLE | minor, | |||
DOUBLE | theta, | |||
DPNT_T | point, | |||
DOUBLE * | distance, | |||
DPNT_T * | nearest_point, | |||
BOOL * | outer | |||
) |
楕円と点の距離
点P1 と、点P1に最も近い楕円E上の点P2を算出し、その最短距離dを求めます。 また、点P1と楕円Eの内外判定も併せて求めます
出力側の引数( distance , nearest_point , outer )は、必要無いものについてはNULL指定が可能です。 例えば、距離のみを算出したい場合は、distance のみ有効なポインタを設定し、他の2つはNULLを指定すれば 良いです。全ての引数にNULLを指定した場合は、何もせずそのまま正常終了します。
楕円の長軸や短軸が0以下のような、パラメータが不正な楕円を与えた場合は、 F_ERR_CALC_IMPOSSIBLE を返します。
[in] | center | 楕円Eの中心座標 |
[in] | major | 楕円Eの主軸長 |
[in] | minor | 楕円Eの副軸長 |
[in] | theta | 楕円Eの主軸傾き ( 単位:ラジアン ) |
[in] | point | 座標点P1 |
[out] | distance | 楕円EとP1との最短距離d |
[out] | nearest_point | 楕円EとP1との最短距離dを与える、楕円E上の点P2 |
[out] | outer | P1が楕円Eの外部か内部かの判定結果( TRUE:楕円外部 / FALSE:楕円上か楕円内) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |