import { Matrix4 } from "three";
import { Plane } from "./Plane";
import { Vector3D } from "./Vector3";
import { Vertex3D } from "./Vertex3";
export declare enum Type {
    CoplanarFront = 0,
    CoplanarBack = 1,
    Front = 2,
    Back = 3,
    Spanning = 4
}
interface SplitPolygonData {
    type: Type;
    front: Polygon;
    back: Polygon;
}
/** Class Polygon
 * Represents a convex polygon. The vertices used to initialize a polygon must
 *   be coplanar and form a convex loop. They do not have to be `Vertex`
 *   instances but they must behave similarly (duck typing can be used for
 *   customization).
 * <br>
 * Each convex polygon has a `shared` property, which is shared between all
 *   polygons that are clones of each other or were split from the same polygon.
 *   This can be used to define per-polygon properties (such as surface color).
 * <br>
 * The plane of the polygon is calculated from the vertex coordinates if not provided.
 *   The plane can alternatively be passed as the third argument to avoid calculations.
 *
 *表示凸多边形。 用于初始化多边形的顶点必须共面并形成凸环。
 *多边形是彼此克隆或从同一多边形分割的多边形。
 *这可用于定义每个多边形属性（例如表面颜色）。
 */
export declare class Polygon {
    vertices: Vertex3D[];
    plane?: Plane;
    cachedBoundingSphere: [Vector3D, number];
    cachedBoundingBox: [Vector3D, Vector3D];
    constructor(vertices: Vertex3D[], plane?: Plane);
    /** Check whether the polygon is convex. (it should be, otherwise we will get unexpected results)*/
    checkIfConvex(): boolean;
    boundingSphere(): [Vector3D, number];
    boundingBox(): Vector3D[];
    flipped(): Polygon;
    transform(matrix4x4: Matrix4): Polygon;
    splitByPlane(plane: Plane): SplitPolygonData;
    /**
     * 是一个凸多边形
     * @param vertices 顶点列表
     * @param planenormal 平面法线
     * @returns true:是凸多边形 false:不是凸多边形
     */
    static verticesConvex(vertices: Vertex3D[], planenormal: Vector3D): boolean;
    static isConvexPoint(prevpoint: Vector3D, point: Vector3D, nextpoint: Vector3D, normal: Vector3D): boolean;
}
export {};
//# sourceMappingURL=Polygon3.d.ts.map