erasta / three-halfedge-dcel

Doubly-Connected-Edge-List (DCEL) implementation for three.js
https://erasta.github.io/three-halfedge-dcel/index.html
MIT License
7 stars 2 forks source link

Add type definitions #1

Open maneetgoyal opened 1 year ago

maneetgoyal commented 1 year ago

Will be great to have for TS support.

maneetgoyal commented 1 year ago

A start:

declare module "three-halfedge-dcel" {
  import type { BufferGeometry, Vector3 } from "three";

  interface HalfEdge {
    face: DCELFace;
    next: HalfEdge;
    prev: HalfEdge;
    twin: HalfEdge;
    vertex: DCELVertex;
  }

  interface DCELFace {
    area: number;
    constant: number;
    edge: HalfEdge;
    index: number;
    mark: number;
    midpoint: Vector3;
    normal: Vector3;
  }

  interface DCELVertex {
    index: number;
    origIndex: number;
    point: Vector3;
  }

  export class Dcel {
    faces: DCELFace[];

    vertices: DCELVertex[];

    constructor(input: BufferGeometry, options?: { mergeVerticesThreshold: number });

    forAdjacentFaces(faceID: number, callback: (adjacentFaceID: number) => void): void;

    forEdges(face: DCELFace, callback: (edge: HalfEdge, face?: DCELFace) => void): void;
  }
}