import { HVec3 } from "src/math/HVec3";
import Decimal from "decimal.js";
declare enum Side {
    COPLANAR = 0,
    FRONT = 1,
    BACK = 2,
    SPANNING = 3
}
export declare class Polygon {
    w: Decimal;
    normal: HVec3;
    vertices: HVec3[];
    constructor(vertices?: HVec3[]);
    calcPlane(): this;
    flip(): this;
    /**
     * @description : 判断点与当前多边形所在的平面的位置关系
     * @param        {HVec3} vertex
     * @return       {*}
     * @example     :
     */
    classifyVertex(vertex: HVec3): Side.COPLANAR | Side.FRONT | Side.BACK;
    /**
     * @description : 判断另一个多边形与当前多边形的位置关系
     * @param        {Polygon} polygon
     * @return       {*}
     * @example     :
     */
    classifySide(polygon: Polygon): Side;
    /**
     * @description : 切割多边形
     * @param        {Polygon} polygon
     * @param        {Polygon} coplanar_front
     * @param        {Polygon} coplanar_back
     * @param        {Polygon} front
     * @param        {Polygon} back
     * @return       {*}
     * @example     :
     */
    splitPolygon(polygon: Polygon, coplanar_front?: Polygon[], coplanar_back?: Polygon[], front?: Polygon[], back?: Polygon[]): void;
    clone(): Polygon;
}
export {};
