/** * Edge Operations * * Comprehensive edge manipulation operations for meshes * * Note: In Bench3D, edges are not stored separately but are derived from faces. * Each edge is represented as [vkey1, vkey2] and can be shared by 1 or 2 faces. */ import { Mesh } from '../geometry/mesh'; import { Vector3 } from './transform'; import { MeshEdge } from './mesh_util'; /** * Get all edges in a mesh */ export declare function getAllEdges(mesh: Mesh): MeshEdge[]; /** * Get edges of a specific face */ export declare function getFaceEdges(mesh: Mesh, faceKey: string): MeshEdge[]; /** * Get edges connected to a vertex */ export declare function getEdgesConnectedToVertex(mesh: Mesh, vertexKey: string): MeshEdge[]; /** * Find faces that use an edge */ export declare function getFacesUsingEdge(mesh: Mesh, edge: MeshEdge): string[]; /** * Check if edge is a boundary edge (used by only 1 face) */ export declare function isBoundaryEdge(mesh: Mesh, edge: MeshEdge): boolean; /** * Check if edge is an interior edge (used by 2 faces) */ export declare function isInteriorEdge(mesh: Mesh, edge: MeshEdge): boolean; /** * Get edge center point */ export declare function getEdgeCenter(mesh: Mesh, edge: MeshEdge): Vector3 | null; /** * Get edge length */ export declare function getEdgeLength(mesh: Mesh, edge: MeshEdge): number; /** * Get edge direction vector (normalized) */ export declare function getEdgeDirection(mesh: Mesh, edge: MeshEdge): Vector3 | null; /** * Move edge by moving both vertices */ export declare function moveEdge(mesh: Mesh, edge: MeshEdge, offset: Vector3): void; /** * Move multiple edges */ export declare function moveEdges(mesh: Mesh, edges: MeshEdge[], offset: Vector3): void; /** * Split edge by adding a vertex */ export declare function splitEdge(mesh: Mesh, edge: MeshEdge, ratio?: number): string; /** * Split multiple edges */ export declare function splitEdges(mesh: Mesh, edges: MeshEdge[], ratio?: number): Record; /** * Delete edge (dissolve - merge adjacent faces) */ export declare function deleteEdge(mesh: Mesh, edge: MeshEdge): { deleted: boolean; mergedFaces: string[]; }; /** * Delete multiple edges */ export declare function deleteEdges(mesh: Mesh, edges: MeshEdge[]): { deleted: number; mergedFaces: string[]; }; /** * Bridge two edges (connect with faces) */ export declare function bridgeEdges(mesh: Mesh, edge1: MeshEdge, edge2: MeshEdge): string[]; /** * Find edge loop (connected edges forming a loop) */ export declare function findEdgeLoop(mesh: Mesh, startEdge: MeshEdge): MeshEdge[]; /** * Find edge ring (parallel edges) */ export declare function findEdgeRing(mesh: Mesh, startEdge: MeshEdge): MeshEdge[]; /** * Get edge angle (angle between two faces sharing the edge) */ export declare function getEdgeAngle(mesh: Mesh, edge: MeshEdge): number | null; /** * Get edge normal (average of face normals) */ export declare function getEdgeNormal(mesh: Mesh, edge: MeshEdge): Vector3 | null; /** * Find nearest edge to a point */ export declare function findNearestEdge(mesh: Mesh, point: Vector3): { edge: MeshEdge; distance: number; pointOnEdge: Vector3; } | null; /** * Find edges near a point */ export declare function findEdgesNearPoint(mesh: Mesh, point: Vector3, distance: number): Array<{ edge: MeshEdge; distance: number; pointOnEdge: Vector3; }>; /** * Select edges by criteria */ export interface EdgeSelectionCriteria { /** * Minimum length */ minLength?: number; /** * Maximum length */ maxLength?: number; /** * Must be boundary edge */ boundary?: boolean; /** * Must be interior edge */ interior?: boolean; /** * Must be connected to vertex */ connectedTo?: string; /** * Maximum angle between faces */ maxAngle?: number; } /** * Select edges matching criteria */ export declare function selectEdgesByCriteria(mesh: Mesh, criteria: EdgeSelectionCriteria): MeshEdge[]; /** * Collapse edge (merge two vertices) */ export declare function collapseEdge(mesh: Mesh, edge: MeshEdge, mergeTo?: 'first' | 'second' | 'center'): { collapsed: boolean; mergedVertex: string; deletedFaces: string[]; }; /** * Subdivide edge (split into multiple segments) */ export declare function subdivideEdge(mesh: Mesh, edge: MeshEdge, segments?: number): string[]; /** * Get edge midpoint */ export declare function getEdgeMidpoint(mesh: Mesh, edge: MeshEdge): Vector3 | null; /** * Check if two edges are parallel */ export declare function areEdgesParallel(mesh: Mesh, edge1: MeshEdge, edge2: MeshEdge, tolerance?: number): boolean; /** * Check if two edges are connected (share a vertex) */ export declare function areEdgesConnected(edge1: MeshEdge, edge2: MeshEdge): boolean; /** * Get shared vertex between two edges */ export declare function getSharedVertex(edge1: MeshEdge, edge2: MeshEdge): string | null; //# sourceMappingURL=edge_operations.d.ts.map