3.6. 几何类型

几何类型表示二维的平面物体.最基本的类型:点,是其他类型的基础.

Table 3-16. 几何类型

几何类型存储空间表现形式描述
point16 字节(x,y)空间中一点
line32 字节((x1,y1),(x2,y2))(无穷)直线
lseg32 字节((x1,y1),(x2,y2))(有限)线段
box32 字节((x1,y1),(x2,y2))长方形
path4+32n 字节((x1,y1),...)闭合路径(与多边形类似)
path4+32n 字节[(x1,y1),...]开放路径
polygon4+32n 字节((x1,y1),...)多边形(与闭合路径相似)
circle24 字节<(x,y),r>圆(圆心和半径)

我们有一系列丰富的函数和操作符可用来进行各种几何计算, 如度量,转换,旋转和计算相交等。

3.6.1. Point(点)

点是集合类型的基本二维构造单位。

用下面语法描述 point

( x , y )
  x , y
     
这里的参数是

x

是用浮点数表示的点的 x 坐标。

y

是用浮点数表示的点的 y 坐标。

3.6.2. 线段

线段 (lseg)是用一对点来代表的.

lseg 用下面语法声明:

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )  
    x1 , y1   ,   x2 , y2
     
这里的参数是

(x1,y1), (x2,y2)

是线段的端点。

3.6.3. Box(方)

方是用一对对角点来表示的。

box 用下面语法声明:

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )  
    x1 , y1   ,   x2 , y2
     
这里的参数是

(x1,y1), (x2,y2)

是方形的一对对角点。

方的输出使用第一种语法.在输入时将按先右上角后左下角的顺序重新排列. 你也可以输入其他的一对对角点. 但输入时将先从输入中计算出左下角和右上角然后再存储.

3.6.4. Path(路径)

路径由一系列连接的点组成.路径可能是"开放"的, 也就是第一个点和最后一个点没有连接,也可能是"闭合" 的,这时第一个和最后一个点连接起来.我们提供了函数 popen(p)pclose(p) 来强制路径是开放的还 是闭合的,可以用函数 isopen(p)isclosed(p) 来在查询中选择是那种.

path 用下面语法声明:

( ( x1 , y1 ) , ... , ( xn , yn ) )
[ ( x1 , y1 ) , ... , ( xn , yn ) ]
  ( x1 , y1 ) , ... , ( xn , yn )  
  ( x1 , y1   , ... ,   xn , yn )  
    x1 , y1   , ... ,   xn , yn    
     
这里的参数是

(x,y)

组成路径的线段的端点。 前面的("[")表明一个开放的路径,而前面的("(")表明一个闭合的路径。

路径的输出使用第一种语法输出.

3.6.5. Polygon(多边形)

多边形由一系列点代表.多边形可以认为与闭合路径一样, 但是存储方式不一样而且有自己的一套支持过程/函数.

polygon 用下列语法声明:

( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )  
  ( x1 , y1   , ... ,   xn , yn )  
    x1 , y1   , ... ,   xn , yn    
     
这里的参数是

(x,y)

组成多边形边界的线段的端点。

多边形输出使用第一种语法.

3.6.6. Circle(圆)

圆由一个圆心和一个半径代表.

circle 用下面语法表示:

< ( x , y ) , r >
( ( x , y ) , r )
  ( x , y ) , r  
    x , y   , r  
     
这里的参数是

(x,y)

圆心

r

圆的半径

圆的输出用第一种格式.