直線、線分
[幾何計算]


説明

開直線・閉直線とは
両端点を含まない線分を開線分、両端点を含む線分を閉線分、と言います(下図を参照してください)。
fie_cg_std.png


列挙型

enum  f_cg_seg_status {
  F_CG_SGMT_CROSS = 1, F_CG_SGMT_NOT_CROSS = 2,
  F_CG_SGMT_OVERLAP = 3, F_CG_SGMT_COINCIDE = 4,
  F_CG_SGMT_TOUCH = 5, F_CG_SGMT_JOINT = 6
}
 2線分の交差状況 [詳細]

関数

INT FVALGAPI fnFIE_cg_2segments_cross_status (SGMT_T sgmt1, SGMT_T sgmt2, INT op_flag, enum f_cg_seg_status *seg_status)
 2線分の交差状況(整数型)
INT FVALGAPI fnFIE_cg_2segments_cross_status_d (DSGMT_T sgmt1, DSGMT_T sgmt2, INT op_flag, enum f_cg_seg_status *seg_status)
 2線分の交差状況(浮動小数点型)

列挙型

2線分の交差状況

2線分の交差状況を表します。

列挙型の値:
F_CG_SGMT_CROSS  内点同士で交わる
F_CG_SGMT_NOT_CROSS  それ以外
F_CG_SGMT_OVERLAP  2線分が部分的に重なる ただし、2線分は一致しない
F_CG_SGMT_COINCIDE  2線分が完全に一致する
F_CG_SGMT_TOUCH  ある端点がもう一方の線分の内点に接触(閉線分のときのみ)
F_CG_SGMT_JOINT  端点で接続する


関数

INT FVALGAPI fnFIE_cg_2segments_cross_status ( SGMT_T  sgmt1,
SGMT_T  sgmt2,
INT  op_flag,
enum f_cg_seg_status seg_status 
)

2線分の交差状況(整数型)

2線分の交差状況を判定します。 判定は、符号付三角形の符号を見ることにより線分に対して2点が反対側にあるかどうかという事実を用いています。

入力する線分は整数型となります。 入力する線分が浮動小数点型の場合は、 fnFIE_cg_2segments_cross_status_d() を使用してください。

fie_cg_2segments_cross_status.png

引数:
[in] sgmt1 線分1
[in] sgmt2 線分2
[in] op_flag 2線分の開・閉フラグ
  • 0 :2線分は開線分
  • 1 :2線分は閉線分
[out] seg_status 2線分の交差状況
  • F_CG_SGMT_CROSS :(内点同士で)交わる。
  • F_CG_SGMT_OVERLAP :2線分が部分的に重なる。ただし、2線分は一致しない
  • F_CG_SGMT_COINCIDE :2線分が完全に一致する。
  • F_CG_SGMT_TOUCH :(閉線分の場合のみ) 端点が他方の内点で接する。
  • F_CG_SGMT_JOINT :(閉線分の場合のみ) 端点どうしで接する。ただし、2線分は一致しない。
  • F_CG_SGMT_NOT_CROSS :それ以外(共通点はまったくない)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_cg_2segments_cross_status_d()

INT FVALGAPI fnFIE_cg_2segments_cross_status_d ( DSGMT_T  sgmt1,
DSGMT_T  sgmt2,
INT  op_flag,
enum f_cg_seg_status seg_status 
)

2線分の交差状況(浮動小数点型)

2線分の交差状況を判定します。 判定は、符号付三角形の符号を見ることにより線分に対して2点が反対側にあるかどうかという事実を用いています。 本関数では、符号付三角形の解は 5.0e-10 未満の場合、0に置き換えられます。 符号付三角形は、3点 $ p_{1} \left( x_{1} , y_{1} \right) $$ p_{2} \left( x_{2} , y_{2} \right) $$ p_{3} \left( x_{3} , y_{3} \right) $ が与えられた場合、以下のように求められます。

\[ area = \frac{1}{2} * \left\{ \left( x_{1} - x_{2} \right) * \left( y_{3} - y_{2} \right) - \left( x_{3} - x_{2} \right) * \left( y_{1} - y_{2} \right) \right\} \]

入力する線分は浮動小数点型となります。 入力する線分が整数型の場合は、 fnFIE_cg_2segments_cross_status() を使用してください。

fie_cg_2segments_cross_status.png

引数:
[in] sgmt1 線分1
[in] sgmt2 線分2
[in] op_flag 2線分の開・閉フラグ
  • 0 :2線分は開線分
  • 1 :2線分は閉線分
[out] seg_status 2線分の交差状況
  • F_CG_SGMT_CROSS :(内点同士で)交わる。
  • F_CG_SGMT_OVERLAP :2線分が部分的に重なる。ただし、2線分は一致しない
  • F_CG_SGMT_COINCIDE :2線分が完全に一致する。
  • F_CG_SGMT_TOUCH :(閉線分の場合のみ) 端点が他方の内点で接する。
  • F_CG_SGMT_JOINT :(閉線分の場合のみ) 端点どうしで接する。ただし、2線分は一致しない。
  • F_CG_SGMT_NOT_CROSS :それ以外(共通点はまったくない)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_cg_2segments_cross_status()


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:47 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2