4.8. 幾何関数と演算子

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)polygon12点の多角形polygon(box '((0,0),(1,1))')
polygon(circle)polygon12点の多角形polygon(circle '((0,0),2.0)')
polygon(npts, circle)polygonnpts多角形polygon(12, circle '((0,0),2.0)')
polygon(path)polygonパスを多角形に変換polygon(path '((0,0),(1,1),(2,0))')