幾何データ型は 2 次元空間オブジェクトを表現します。もっとも基本となる型は point で、すべての他の型の基礎を形成します。
Table 3-18. 幾何データ型
幾何データ型 | 格納サイズ | 表現 | 説明 |
---|---|---|---|
point | 16 バイト | (x,y) | 空間における座標点 |
line | 32 バイト | ((x1,y1),(x2,y2)) | 無限直線 |
lseg | 32 バイト | ((x1,y1),(x2,y2)) | 有限の線分 |
box | 32 バイト | ((x1,y1),(x2,y2)) | 矩形 |
path | 4+32n バイト | ((x1,y1),...) | 閉じた道(多角形に類似) |
path | 4+32n バイト | [(x1,y1),...] | 開いた道 |
polygon | 4+32n バイト | ((x1,y1),...) | 多角形(閉じた道に類似) |
circle | 24 bytes | <(x,y),r> | 円(中心座標と半径) |
縮尺、変換、回転、交点の算出といったいろいろな幾何学的操作を行う数多くの関数と演算子の組み合わせが豊富に揃っています。
座標点は幾何データ型の基礎となる 2 次元構成要素です。
point は次の構文で指定されます。
( x , y ) x , y
ここで引数には次のものが使えます。
浮動小数点数数値のX軸座標点です。
浮動小数点数数値のY軸座標点です。
線分(lseg)は座標点の組合せで表現されます。
lseg は次の構文で指定されます。
( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2
ここで引数は次のもので、線分の終端を表します。
矩形は対角線の両端の座標点の組み合わせで表されます。
box は以下の構文で指定されます。
( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2
ここで引数は次のもので、対角線の両終端です。
矩形は一番上に示した構文で出力されます。2 つ頂点は、左下の頂点を最初に、右上の頂点をその後に格納するよう入力時に並べます。矩形の他の頂点を入力しても構いませんが入力の左下と右上の頂点から矩形が決定され、そして格納されます。
道は接続している座標点の集まりで表現されます。道は最初の座標点と最後の座標点が接続されていない開いている状態か、最初の座標点と最後の座標点点が接続されている閉じた状態かのいずれかです。あるパスを強制的に開いた状態や閉じた状態にする 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
ここで引数は次のもので、道を構成する線分の終端の座標点です。
線分の終端座標点は道を形成します。「[」で始まるのは開いた道で、「(」で始まるのは閉じた道です。
道は始めに示した構文で出力されます。
多角形は座標点の集まりで表現されます。多角形はたぶん閉じた道と同じと考えられるかも知れませんが、異なった方式で格納されると同時にそれぞれ独自に支援するルーチン一式を持っています。
polygon は次の構文で指定されます。
( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn
ここで引数には次のもので、多角形の境界を構成する線分の終端座標点です。
線分の終端座標点は多角形を形成する最先端になっています。
多角形は始めに示した構文で出力されます。
円は中心座標点と半径で表現されます。
circle は次の構文で指定されます。
< ( x , y ) , r > ( ( x , y ) , r ) ( x , y ) , r x , y , r
ここで引数は次のもので、円の中心座標点
および
円の半径です。
円は始めに示した構文で出力されます。