.. -*- rst -*-

.. highlightlang:: none

geo_in_circle
=============

名前
----

geo_in_circle - 座標が円の範囲内に存在するかどうかを調べます。

書式
----
::

 geo_in_circle(point, center, radious_or_point[, approximate_type])

説明
----

groonga組込関数の一つであるgeo_in_circleについて説明します。組込関数は、script形式のgrn_expr中で呼び出すことができます。

geo_in_circle() 関数は、pointに指定した座標が、centerに指定した座標を中心とする円の範囲内にあるかどうかを調べます。

引数
----

``point``

  円の範囲内に存在するかどうかを調べる座標を指定します。Point型の値を指定できます。 [#]_

``center``

  円の中心となる座標を指定します。Point型の値、あるいは座標を示す文字列を指定できます。

``radious_or_point``

  円の半径を指定します。数値を指定した場合には、半径(単位:メートル)が指定されたものとみなします。
  Point型の値、あるいは座標を示す文字列を指定した場合は、円周上の点の一つの座標が指定されたものとみなします。

``approximate_type``

  半径からの距離を求めるために地形をどのように近似するかを指定します。指定できる値は以下の通りです。

  ``"rectangle"``

    方形近似で近似します。単純な計算式で距離を求めることができるため高速ですが、極付近では誤差が大きくなります。

    ``"rect"`` と省略して指定することもできます。

    この近似方法がデフォルト値です。 ``approximate_type`` を省略した場合は方形近似になります。

  ``"sphere"``

    球面近似で近似します。 ``"rectangle"`` よりも遅くなりますが、誤差は小さいです。

    ``"sphr"`` と省略して指定することもできます。

  ``"ellipsoid"``

    楕円体近似で近似します。距離の計算にはヒュベニの距離計算式を用います。 ``"sphere"`` よりも遅くなりますが、誤差は小さくなります。

    ``"ellip"`` と省略して指定することもできます。


返値
----

pointに指定した座標が円の範囲内にあるかどうかをBool型の値で返します。

例
--
::

 geo_in_circle(pos, "100x100", 100)
 true

.. rubric:: 脚注

.. [#] TokyoGeoPoint(日本測地系座標)かWGS84GeoPoint(世界測地系座標)のいずれかを指定できます。
