列挙型 | |
enum | f_draw_fill_mode { F_DRAW_LINE = 0, F_DRAW_FILL_IN = 1, F_DRAW_FILL_OUT = 2 } |
図形描画のスタイルの指定 [詳細] | |
enum | f_draw_curve_mode { F_DRAW_CUBIC_BSPLINE = 0, F_DRAW_QUADRATIC_BEZIER = 1, F_DRAW_CUBIC_CATMULL_ROM = 2, F_DRAW_CUBIC_BEZIER = 3, F_DRAW_POLYGONAL_LINE = 99 } |
曲線の種類の指定 [詳細] | |
関数 | |
INT FVALGAPI | fnFIE_draw_circle (FHANDLE hImg, DOUBLE *val, enum f_draw_fill_mode mode, DPNT_T center, DOUBLE radius) |
円の描画 | |
INT FVALGAPI | fnFIE_draw_curve (FHANDLE hImg, DOUBLE *val, DPNT_T *pnts, INT num, enum f_draw_curve_mode mode) |
曲線の描画 | |
DPNT_T *FVALGAPI | fnFIE_draw_curve_get_point_set (DPNT_T *pnts, INT num_pnt, enum f_draw_curve_mode mode, INT *num_inter) |
曲線補間をして、補間点群を取得 | |
INT FVALGAPI | fnFIE_draw_ellipse (FHANDLE hImg, DOUBLE *val, enum f_draw_fill_mode mode, DPNT_T center, DOUBLE major, DOUBLE minor, DOUBLE theta) |
楕円の描画 | |
INT FVALGAPI | fnFIE_draw_line_seg (FHANDLE hImg, DOUBLE *val, DPNT_T start, DPNT_T end) |
線分の描画 | |
INT FVALGAPI | fnFIE_draw_line (FHANDLE hImg, DOUBLE *val, DLINE_T line) |
直線の描画 | |
INT FVALGAPI | fnFIE_draw_point (FHANDLE hImg, DOUBLE *val, DPNT_T pnt) |
点の描画 | |
INT FVALGAPI | fnFIE_draw_rect (FHANDLE hImg, DOUBLE *val, enum f_draw_fill_mode mode, DPNT_T start, DOUBLE width, DOUBLE height, DPNT_T center, DOUBLE theta) |
長方形の描画 | |
INT FVALGAPI | fnFIE_draw_polygon (FHANDLE hImg, DOUBLE *val, enum f_draw_fill_mode mode, DPNT_T *pnts, INT num) |
多角形の描画 |
enum f_draw_fill_mode |
enum f_draw_curve_mode |
INT FVALGAPI fnFIE_draw_circle | ( | FHANDLE | hImg, | |
DOUBLE * | val, | |||
enum f_draw_fill_mode | mode, | |||
DPNT_T | center, | |||
DOUBLE | radius | |||
) |
円の描画
指定されたパラメータにより、円を描画します。 本描画関数は、中心点、および半径はは fnFIE_d4i5() にて四捨五入され描画されます。
対応している画素タイプは、F_IMG_BIN、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
座標系は、FIEの座標系に準拠します。 1画素は、その中心を座標(0, 0)としています。
下図に示す円は、中心が(4.0, 4.0)、半径が 2.0 の円を描画した場合の例です。 なお、与えられたパラメータは四捨五入されて描画されます。 そのため、中心が(3.5, 3.5)、半径が1.5の円と、中心が(4.4, 4.4)、半径が2.4の円は、 下図と同じ円が描画されることになります。 また、半径が0の円は、中心座標1画素のみの点として描画されます。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | mode | 描画モード
|
[in] | center | 中心点 |
[in] | radius | 半径 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_NOMEMORY | メモリ不足により異常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 線のみ描画 | ![]() 内側塗りつぶし | ![]() 外側塗りつぶし |
INT FVALGAPI fnFIE_draw_curve | ( | FHANDLE | hImg, | |
DOUBLE * | val, | |||
DPNT_T * | pnts, | |||
INT | num, | |||
enum f_draw_curve_mode | mode | |||
) |
曲線の描画
与えられた頂点座標より、曲線を描画します。
対応している画素タイプは、F_IMG_BIN、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
与えられた頂点は、指定された曲線の近似計算により補間点が計算された後に、 その補間点の小数点以下は四捨五入され描画されます。 求められた補間点が隣接していない場合、線分描画の関数を利用してして点間は補間されます。 なお、F_DRAW_POLYGONAL_LINEは、与えられた頂点を直接四捨五入し、頂点間を線分で結びます。
本関数では処理を行う際に pnts 配列の座標値をオフセットした値に書き換えてから処理し、 最後にそのオフセット分を元に戻します。このため、座標値に非常に小さな値が入っていた場合、 桁落ちによって処理前と処理後で pnts 配列の座標値が微少に変化してしまうことがあります。 ご注意ください。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | pnts | 点群データ |
[in] | num | 点群の数 |
[in] | mode | 曲線の種類
|
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_NOMEMORY | メモリ不足により異常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算ができない | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 3次Bスプライン曲線 | ![]() 2次ベジェ曲線 | ![]() 3次カットマル-ロム曲線 |
DPNT_T* FVALGAPI fnFIE_draw_curve_get_point_set | ( | DPNT_T * | pnts, | |
INT | num_pnt, | |||
enum f_draw_curve_mode | mode, | |||
INT * | num_inter | |||
) |
曲線補間をして、補間点群を取得
与えられた頂点より曲線補間をして、その補間した点の座標を DPNT_T型の配列として得ることができます。 得られる座標は、浮動小数点型となります。 なお、使用済みの配列は fnOAL_free() により必ず領域を解放してください。
最小頂点数、各曲線の性質については、 fnFIE_draw_curve() を参照してください。
[in] | pnts | 頂点データ |
[in] | num_pnt | 頂点の数 |
[in] | mode | 曲線の種類
|
[out] | num_inter | 求められた補間点群の数 |
INT FVALGAPI fnFIE_draw_ellipse | ( | FHANDLE | hImg, | |
DOUBLE * | val, | |||
enum f_draw_fill_mode | mode, | |||
DPNT_T | center, | |||
DOUBLE | major, | |||
DOUBLE | minor, | |||
DOUBLE | theta | |||
) |
楕円の描画
指定されたパラメータにより、楕円を描画します。
対応している画素タイプは、F_IMG_BIN、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
座標系は、FIEの座標系に準拠します。 1画素はその中心を座標(0, 0)としています。 下図に示す楕円は、中心が(5.0, 4.0)、長軸半径が3.0、短軸半径が2.0の楕円を描画した場合の例です。 また、長軸半径と短軸半径がともに0の楕円は、座標(5.0, 4.0)の点として描画されます。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | mode | 描画モード
|
[in] | center | 中心点 |
[in] | major | 長軸(x軸方向)の半径 |
[in] | minor | 短軸(y軸方向)の半径 |
[in] | theta | 回転角(ラジアン) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_NOMEMORY | メモリ不足により異常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_CALC_IMPOSSIBLE | 計算ができない | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 線のみ描画 | ![]() 内側塗りつぶし | ![]() 外側塗りつぶし |
線分の描画
与えられた始点と終点の座標より、線分を描画します。
対応している画素タイプは、F_IMG_BIN、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
本描画関数は、始点、および終点は fnFIE_d4i5() にて四捨五入され描画されます。 ただし、始点、または終点が画像領域外の場合は、クリッピング処理が行われ、画像との交点が求められます。 求められた交点の小数点以下が四捨五入され、描画のための始点、または終点となります。 また、実装したアルゴリズムの特徴として、傾きが同じ線分の場合でも、始点と終点が異なった場合、 描画される線分が一致しない場合があります。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | start | 描画開始点の座標 |
[in] | end | 描画終了点の座標 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_draw_line | ( | FHANDLE | hImg, | |
DOUBLE * | val, | |||
DLINE_T | line | |||
) |
直線の描画
指定されたパラメータにより、直線を描画します。
対応している画素タイプは、F_IMG_BIN、F_IMG_UC8、F_IMS_S16、F_IMG_US16、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
本描画関数は、与えられた直線の方程式式から、描画のための始点と終点が求められます。 ただし、直線の方程式 ax + by + c = 0 における、aとbが閾値(1e-9)未満の場合、直線は描画されません。
実装したアルゴリズムの特徴として、傾きが同じ線分の場合でも、始点と終点が異なった場合、 描画される線分が一致しない場合があります。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | line | 描画する直線の式 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_draw_point | ( | FHANDLE | hImg, | |
DOUBLE * | val, | |||
DPNT_T | pnt | |||
) |
点の描画
与えられた座標点を描画します。 与えられた座標点の fnFIE_d4i5() にて四捨五入され描画されます。 対応している画素タイプは、F_IMG_BIN、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | pnt | 座標点 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_draw_rect | ( | FHANDLE | hImg, | |
DOUBLE * | val, | |||
enum f_draw_fill_mode | mode, | |||
DPNT_T | start, | |||
DOUBLE | width, | |||
DOUBLE | height, | |||
DPNT_T | center, | |||
DOUBLE | theta | |||
) |
長方形の描画
指定されたパラメータにより、長方形を描画します。 なお、与えられたパラメータは fnFIE_d4i5() にて四捨五入されて描画されます。
対応している画素タイプは、F_IMG_BIN、F_IMG_S16、F_IMG_US16、F_IMG_UC8、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
座標系は、FIEの座標系に準拠します。 1画素はその中心を座標(0, 0)としています。 下図に示す長方形は、幅が6、高さが4として描画されています。 1画素の中心座標(0, 0)として考えた場合、幅が7画素、高さが5画素の長方形として描画されます。 そのため、幅と高さがともに0の長方形は、点として描画されます。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | mode | 描画モード
|
[in] | start | 始点 |
[in] | width | 幅 |
[in] | height | 高さ |
[in] | center | 回転のための中心点 |
[in] | theta | 回転角(ラジアン) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_NOMEMORY | メモリ不足により異常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 線のみ描画 | ![]() 内側塗りつぶし | ![]() 外側塗りつぶし |
INT FVALGAPI fnFIE_draw_polygon | ( | FHANDLE | hImg, | |
DOUBLE * | val, | |||
enum f_draw_fill_mode | mode, | |||
DPNT_T * | pnts, | |||
INT | num | |||
) |
多角形の描画
与えられた頂点座標より、多角形を描画します。 なお、与えられた頂点群は fnFIE_d4i5() にて四捨五入されて描画されます。
対応している画素タイプは、F_IMG_BIN、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE、F_IMG_RGBQUADです。 ただし、F_IMG_RGBQUADはチャネル0のみが描画されます。 他のチャネルは描画されません。
与えられた頂点を Pn = { p(0),p(1),…,p(n-2),p(n-1)} とおくと、 本関数では p(0)と p(n-1) は、接続しているのとして処理をされます。 つまり与えられた頂点群は、閉空間として扱われます。 ただし、頂点数が1の場合は点を、2の場合は線分を描画します。
塗りつぶしは、ポリゴンと輪郭とスキャンラインの交点を求め、求められた各点の間を水平成分で 結んでいく処理を各スキャンラインについて繰り返すことで実現されています。 そのため、例えば一筆書きで描かれた星型のように内側にできる閉じた領域は塗りつぶされません。
本関数では処理を行う際に pnts 配列の座標値をオフセットした値に書き換えてから処理し、 最後にそのオフセット分を元に戻します。このため、座標値に非常に小さな値が入っていた場合、 桁落ちによって処理前と処理後で pnts 配列の座標値が微少に変化してしまうことがあります。 ご注意ください。
[in,out] | hImg | 画像のハンドル(type:bin,uc8,s16,us16,double,rgbq) |
[in] | val | 濃度値を格納した配列の先頭アドレス |
[in] | mode | 描画モード
|
[in] | pnts | 頂点群 |
[in] | num | 頂点数 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_NOMEMORY | メモリ不足により異常終了 | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 線のみ描画 | ![]() 内側塗りつぶし | ![]() 外側塗りつぶし |
![]() 線のみ描画 | ![]() 内側塗りつぶし | ![]() 外側塗りつぶし |