point、box、lseg、line、path、polygon、circleなどの幾何型には 多くの既存関数と演算子があります。
Table 4-15. 幾何演算子
| 演算子 | 説明 | 使用方法 |
|---|---|---|
| + | 移行 | box '((0,0),(1,1))' + point '(2.0,0)' |
| - | 移行 | box '((0,0),(1,1))' - point '(2.0,0)' |
| * | 縮尺/回転 | box '((0,0),(1,1))' * point '(2.0,0)' |
| / | 縮尺/回転 | box '((0,0),(2,2))' / point '(2.0,0)' |
| # | 交わり | '((1,-1),(-1,1))' # '((1,1),(-1,-1))' |
| # | 多角形内の点の数 | # '((1,0),(0,1),(-1,0))' |
| ## | 近接に最も近い点 | point '(0,0)' ## lseg '((2,0),(0,2))' |
| && | 重なるか否か | box '((0,0),(1,1))' && box '((0,0),(2,2))' |
| &< | 左重なりか否か | box '((0,0),(1,1))' &< box '((0,0),(2,2))' |
| &> | 右重なりか否か | box '((0,0),(3,3))' &> box '((0,0),(2,2))' |
| <-> | 距離 | circle '((0,0),1)' <-> circle '((5,0),1)' |
| << | 左か否か | circle '((0,0),1)' << circle '((5,0),1)' |
| <^ | 下か否か | circle '((0,0),1)' <^ circle '((0,5),1)' |
| >> | 右か否か | circle '((5,0),1)' >> circle '((0,0),1)' |
| >^ | 上か否か | circle '((0,5),1)' >^ circle '((0,0),1)' |
| ?# | 交わる、または重なる | lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))'; |
| ?- | 水平か否か | point '(1,0)' ?- point '(0,0)' |
| ?-| | 垂直か否か | lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' |
| @-@ | 長さ、または円周 | @-@ path '((0,0),(1,0))' |
| ?| | 直立か否か | point '(0,1)' ?| point '(0,0)' |
| ?|| | 平行か否か | lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' |
| @ | 含まれている | point '(1,1)' @ circle '((0,0),2)' |
| @@ | 中心 | @@ circle '((0,0),10)' |
| ~= | 等しい | polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))' |
Table 4-16. 幾何関数
| 関数 | 返り値 | 説明 | 例 |
|---|---|---|---|
| area(object) | double precision | 面積 | area(box '((0,0),(1,1))') |
| box(box, box) | box | 長方形の交わり | box(box '((0,0),(1,1))',box '((0.5,0.5),(2,2))') |
| center(object) | point | 中心 | center(box '((0,0),(1,2))') |
| diameter(circle) | double precision | 直径 | diameter(circle '((0,0),2.0)') |
| height(box) | double precision | 長方形の縦の長さ | height(box '((0,0),(1,1))') |
| isclosed(path) | boolean | 閉じたパスか否か | isclosed(path '((0,0),(1,1),(2,0))') |
| isopen(path) | boolean | 開いたパスか否か | isopen(path '[(0,0),(1,1),(2,0)]') |
| length(object) | double precision | 長さ | length(path '((-1,0),(1,0))') |
| pclose(path) | path | 閉じたパスに変換 | popen(path '[(0,0),(1,1),(2,0)]') |
| npoint(path) | int4 | 点の数 | npoints(path '[(0,0),(1,1),(2,0)]') |
| popen(path) | path | 開いたパスに変換 | popen(path '((0,0),(1,1),(2,0))') |
| radius(circle) | double precision | 半径 | radius(circle '((0,0),2.0)') |
| width(box) | double precision | 横の長さ | width(box '((0,0),(1,1))') |
Table 4-17. 幾何型変換関数
| 関数 | 返り値 | 説明 | 例 |
|---|---|---|---|
| box(circle) | box | 円を長方形に変換 | box(circle '((0,0),2.0)') |
| box(point, point) | box | 点を長方形に変換 | box(point '(0,0)', point '(1,1)') |
| box(polygon) | box | 多角形を長方形に変換 | box(polygon '((0,0),(1,1),(2,0))') |
| circle(box) | circle | 円に変換 | circle(box '((0,0),(1,1))') |
| circle(point, double precision) | circle | 点を円に変換 | circle(point '(0,0)', 2.0) |
| lseg(box) | lseg | 長方形の対角線を線分に変換 | lseg(box '((-1,0),(1,0))') |
| lseg(point, point) | lseg | 点を線分に変換 | lseg(point '(-1,0)', point '(1,0)') |
| path(polygon) | point | 多角形をパスに変換 | path(polygon '((0,0),(1,1),(2,0))') |
| point(circle) | point | 円の中心 | point(circle '((0,0),2.0)') |
| point(lseg, lseg) | point | 線分の交わり | point(lseg '((-1,0),(1,0))', lseg '((-2,-2),(2,2))') |
| point(polygon) | point | 多角形の中心 | point(polygon '((0,0),(1,1),(2,0))') |
| polygon(box) | polygon | 12点の多角形 | polygon(box '((0,0),(1,1))') |
| polygon(circle) | polygon | 12点の多角形 | polygon(circle '((0,0),2.0)') |
| polygon(npts, circle) | polygon | npts多角形 | polygon(12, circle '((0,0),2.0)') |
| polygon(path) | polygon | パスを多角形に変換 | polygon(path '((0,0),(1,1),(2,0))') |