# 9.11.几何函数与算子
几何类型指向
,盒
,lseg
,线
,路径
,多边形
和圆圈
拥有大量本机支持函数和运算符,如中所示表9.35,表9.36和表9.37.
表9.35.几何算子
操作人员 描述 例子 |
---|
几何_型 + 指向 →* 几何_型* 添加第二个的坐标 指向 到第一个论点的每一点,从而进行翻译。适用于指向 , 盒 , 路径 , 圆圈 .方框'(1,1),(0,0)'+点'(2,0)' → (3,1),(2,0) |
路径 + 路径 → 路径 连接两个打开的路径(如果任一路径关闭,则返回NULL)。 路径“[(0,0),(1,1)]”+路径“[(2,2),(3,3),(4,4)]” → [(0,0),(1,1),(2,2),(3,3),(4,4)] |
几何_型 - 指向 → * 几何_型* 减去第二个坐标 指向 从第一个论点的每一点出发,进行翻译。适用于指向 , 盒 , 路径 , 圆圈 .方框'(1,1),(0,0)'-点'(2,0)' → (-1,1),(-2,0) |
几何_型 * 指向 → * 几何_型* 将第一个参数的每个点乘以第二个参数 指向 (将点视为由实部和虚部表示的复数,并执行标准复数乘法)。如果一个人解释第二个指向 作为向量,这相当于按向量长度缩放对象的大小和与原点的距离,并按向量与原点的角度逆时针旋转对象*十、 *轴适用于指向 , 盒 ,[a] 路径 , 圆圈 .路径“((0,0)、(1,0)、(1,1))”*点“(3.0,0)” → ((0,0),(3,0),(3,3)) 路径“((0,0)、(1,0)、(1,1))”*点(cosd(45),sind(45)) → ((0,0),(0.7071067811865475,0.7071067811865475),(0,1.414213562373095)) |
几何_型 / 指向 → * 几何_型* 将第一个论点的每一点除以第二个论点 指向 (将点视为由实部和虚部表示的复数,并执行标准复数除法)。如果一个人解释第二个指向 作为向量,这相当于将对象的大小和与原点的距离向下缩放向量的长度,并将其围绕原点顺时针旋转向量与原点的角度*十、 *轴适用于指向 , 盒 ,[a] 路径 , 圆圈 .路径“((0,0),(1,0),(1,1))”/点“(2.0,0)” → ((0,0),(0.5,0),(0.5,0.5)) 路径“((0,0)、(1,0)、(1,1))”/点(cosd(45),sind(45)) → ((0,0),(0.7071067811865476,-0.7071067811865476),(1.4142135623730951,0)) |
@-@ 几何_型 → 双精度 计算总长度。适用于 lseg , 路径 .@-@路径“[(0,0)、(1,0)、(1,1)]” → 2. |
@@ 几何_型 → 指向 计算中心点。适用于 盒 , lseg , 多边形 , 圆圈 .@@框'(2,2),(0,0)' → (1,1) |
# 几何_型 → 整数 返回点数。适用于 路径 , 多边形 .#路径“((1,0),(0,1),(-1,0))” → 3. |
几何_型 # 几何_型 → 指向 计算交点,如果没有交点,则为NULL。适用于 lseg , 线 .lseg'[(0,0),(1,1)]“#lseg'[(1,0),(0,1)]” → (0.5,0.5) |
盒 # 盒 → 盒 计算两个框的交点,如果没有,则为NULL。 盒子(2,2),(-1,-1)#盒子(1,1),(-2,-2)' → (1,1),(-1,-1) |
几何_型 ## 几何_型 → 指向 计算第二个对象上距离第一个对象最近的点。适用于以下几对类型:( 指向 , 盒 ), (指向 , lseg ), (观点 ,线 ), (lseg ,盒子 ), (lseg ,lseg ), (线 ,lseg )。point '(0,0)' ## lseg '[(2,0),(0,2)]' →(1,1) |
几何类型 <-> *几何类型 *→双精度 计算对象之间的距离。适用于所有几何类型,除了 多边形 , 对于所有的组合观点 使用另一种几何类型,对于这些额外的类型对:(盒子 ,lseg ), (lseg ,线 ), (多边形 ,圆圈 ) (以及换向器案例)。圆'<(0,0),1>' <-> 圆'<(5,0),1>' →3 |
几何类型 @> *几何类型 *→布尔值 第一个对象是否包含第二个?可用于这些类型对:( 盒子 ,观点 ), (盒子 ,盒子 ), (小路 ,观点 ), (多边形 ,观点 ), (多边形 ,多边形 ), (圆圈 ,观点 ), (圆圈 ,圆圈 )。圆'<(0,0),2>'@>点'(1,1)' →吨 |
几何类型 <@ *几何类型 *→布尔值 第一个对象是包含在第二个对象中还是包含在第二个对象中?可用于这些类型对:( 观点 ,盒子 ), (观点 , lseg ), (观点 , 线 ), (观点 , 小路 ), (观点 , 多边形 ), (观点 , 圆圈 ), (盒子 , 盒子 ), (lseg , 盒子 ), (lseg ,线 ), (多边形 ,多边形 ), (圆圈 ,圆圈 )。点 '(1,1)' <@ 圆圈 '<(0,0),2>' →吨 |
几何类型 && *几何类型 *→布尔值 这些对象是否重叠?(有一个共同点使这一点成为现实。)适用于 盒子 ,多边形 ,圆圈 .框'(1,1),(0,0)' && 框'(2,2),(0,0)' →吨 |
几何类型 << *几何类型 *→布尔值 第一个对象严格在第二个对象的左边吗?可以用来 观点 ,盒子 ,多边形 ,圆圈 .圆'<(0,0),1>' << 圆'<(5,0),1>' →吨 |
几何类型 >> *几何类型 *→布尔值 第一个对象是否严格正确于第二个对象?可以用来 观点 ,盒子 ,多边形 ,圆圈 .圆'<(5,0),1>' >> 圆'<(0,0),1>' →吨 |
几何类型 &< *几何类型 *→布尔值 第一个对象不会延伸到第二个对象的右侧吗?可以用来 盒子 ,多边形 ,圆圈 .框'(1,1),(0,0)' &< 框'(2,2),(0,0)' →吨 |
几何类型 &> *几何类型 *→布尔值 第一个对象不会延伸到第二个对象的左侧吗?可以用来 盒子 ,多边形 ,圆圈 .框'(3,3),(0,0)&>框'(2,2),(0,0)' →t |
几何_型 <<| *几何_型 *→布尔值 第一个物体严格低于第二个吗?适用于 指向 ,盒 ,多边形 ,圆圈 .方框(3,3)、(0,0)<<方框(5,5)、(3,4)' →t |
几何_型 |>> *几何_型 *→布尔值 第一个物体严格高于第二个吗?适用于 指向 ,盒 , 多边形 , 圆圈 .盒子'(5,5),(3,4)|>>盒子'(3,3),(0,0)' → t |
几何_型 &<| 几何_型 → 布尔值 第一个物体不延伸到第二个物体之上吗?适用于 盒 , 多边形 , 圆圈 .盒子'(1,1),(0,0)&<|盒子'(2,2),(0,0)' → t |
几何_型 |&> 几何_型 → 布尔值 第一个物体不延伸到第二个物体以下吗?适用于 盒 , 多边形 , 圆圈 .框'(3,3),(0,0)|和>框'(2,2),(0,0)' → t |
盒 <^ 盒 → 布尔值 第一个物体是否低于第二个(允许边缘接触)? 方框“((1,1)、(0,0))”<^box“((2,2)、(1,1))” → t |
盒 >^ 盒 → 布尔值 第一个物体是否在第二个物体之上(允许边缘接触)? 框“((2,2)、(1,1))”>^box“((1,1)、(0,0))” → t |
几何_型 ?# 几何_型 → 布尔值 这些物体相交吗?适用于以下几对类型:( 盒 , 盒 ), (lseg , 盒 ), (lseg , lseg ), (lseg , 线 ), (线 , 盒 ), (线 , 线 ), (路径 , 路径 ).lseg'[(-1,0),(1,0)]?#方框'(2,2),(-2,-2)' → t |
?- 线 → 布尔值 ?- lseg → 布尔值 这条线是水平的吗? ?- lseg'[(-1,0),(1,0)]' → t |
指向 ?- 指向 → 布尔值 点是否水平对齐(即y坐标相同)? (1,0)点?-点'(0,0)' → t |
?| 线 → 布尔值 ?| lseg → 布尔值 这条线是垂直的吗? ?| lseg'[(-1,0),(1,0)]' → f |
指向 ?| 指向 → 布尔值 点是否垂直对齐(即具有相同的x坐标)? (0,1)点?|点'(0,0)' → t |
线 ?-| 线 → 布尔值 lseg ?-| lseg → 布尔值 直线垂直吗? lseg'[(0,0),(0,1)]'?-|lseg'[(0,0),(1,0)]' → t |
线 ?|| 线 → 布尔值 lseg ?|| lseg → 布尔值 直线平行吗? lseg'[(-1,0),(1,0)]?||lseg'[(-1,2),(1,2)]' → t |
几何_型 ~= 几何_型 → 布尔值 这些物体是一样的吗?适用于 指向 , 盒 , 多边形 , 圆圈 .多边形“((0,0),(1,1))”~=多边形“((1,1),(0,0))” → t |
[a] 使用这些操作符“旋转”长方体只会移动其角点:长方体的边仍被认为与轴平行。因此,不会像真正的旋转那样保留长方体的大小。 |
# 小心
请注意,“与”运算符,~=
,代表了社会平等的通常观念指向
, 盒
, 多边形
和圆圈
类型。一些几何类型也有一个=
接线员,但是=
比较平等地区只有其他标量比较运算符(<=
以此类推),在这些类型可用的情况下,同样地比较区域。
# 笔记
在PostgreSQL 14之前,这一点严格低于/高于比较运算符指向
<<|
指向
和指向
|>>
指向
分别被称为<^
和>^
。这些名称仍然可用,但已被弃用,最终将被删除。
表9.36.几何函数
表9.37.几何类型转换函数
可以访问a的两个部件号指向
就像点是一个索引为0和1的数组。例如,如果t、 p
是一个指向
那么专栏呢从t中选择p[0]
检索X坐标并更新t集p[1]=。。。
更改Y坐标。同样,类型为盒
或lseg
可以被视为两个数组指向
价值观