2D Polygons( Poygon) CGAL 4.13 -User Manual
1 Introduction
A polygon is a closed chain of edges. Several algorithms are available for polygons. For some of those algorithms, it is necessary that the polygon is simple. A polygon is simple if edges don‘t intersect, except consecutive edges, which intersect in their common vertex.
The following algorithms are available:
- find the leftmost, rightmost, topmost and bottommost vertex.
- compute the (signed) area.
- check if a polygon is simple.
- check if a polygon is convex.
- find the orientation (clockwise or counterclockwise)
- check if a point lies inside a polygon.
All those operations take two forward iterators as parameters in order to describe the polygon. These parameters have a point type as value type.
The type Polygon_2
can be used to represent polygons. Polygons are dynamic. Vertices can be modified, inserted and erased. They provide the algorithms described above as member functions. Moreover, they provide ways of iterating over the vertices and edges.
The Polygon_2
class is a wrapper around a container of points, but little more. Especially, computed values are not cached. That is, when the Polygon_2::is_simple()
多邊形是一個閉合的邊的鏈。多邊形有多個算法。對於 其中的一些算法,要求多邊形是簡單的。多邊形是簡單的,如果其所有邊除相鄰邊的共同頂點處外都不相交。
下列的算法可用:
(1)查找最左側、最右側、最上方、最下方頂點
(2)計算()面積
(3)檢查多邊形是不是簡單的
(4)檢查多邊形是不是凸的
(5)求其方向(順時針或逆時針)
(6)檢查一個點是否在多邊形中
2 Examples
2.1 The Polygon Class
The following example creates a polygon and illustrates the usage of some member functions.
創建一個多邊形並使用一些成員函數
File Polygon/Polygon.cpp
Figure 15.1 A polygon and some points
2.2 Algorithms Operating on Sequences of Points
The following example creates a polygon and illustrates the usage of some global functions that operate on sequences of points.
創建一個多邊形並使用全局函數來操縱其點的序列
File Polygon/polygon_algorithms.cpp
2.3 Polygons in 3D Space
Sometimes it is useful to run a 2D algorithm on 3D data. Polygons may be contours of a 3D object, where the contours are organized in parallel slices, generated by segmentation of image data from a scanner.
In order to avoid an explixit projection on the xy
plane, one can use the traits class Projection_traits_xy_3
which is part of the 2D and 3D Linear Geometric Kernel.
有時在3D數據中運行2D算法也是有用的。多邊形可能是3D對象的輪廓,它由一個掃描儀通過對圖像數據進行分段生成,輪廓以平行的片段組織。
File Polygon/projected_polygon.cpp
2D Polygons( Poygon) CGAL 4.13 -User Manual