/** * Vertex Operations * * Comprehensive vertex manipulation operations for meshes */ import { Mesh } from '../geometry/mesh'; import { Vector3 } from './transform'; /** * Move vertices by offset */ export declare function moveVertices(mesh: Mesh, vertexKeys: string[], offset: Vector3): void; /** * Move vertices to specific positions */ export declare function setVertexPositions(mesh: Mesh, positions: Record): void; /** * Scale vertices around a pivot point */ export declare function scaleVertices(mesh: Mesh, vertexKeys: string[], scale: Vector3, pivot?: Vector3): void; /** * Rotate vertices around a pivot point */ export declare function rotateVertices(mesh: Mesh, vertexKeys: string[], rotation: Vector3, pivot?: Vector3): void; /** * Delete vertices and clean up faces/edges */ export declare function deleteVertices(mesh: Mesh, vertexKeys: string[]): { deletedVertices: number; deletedFaces: string[]; }; /** * Split edge by adding a vertex */ export declare function splitEdge(mesh: Mesh, edge: [string, string], ratio?: number): string; /** * Duplicate vertices */ export declare function duplicateVertices(mesh: Mesh, vertexKeys: string[]): Record; /** * Get vertex position */ export declare function getVertexPosition(mesh: Mesh, vertexKey: string): Vector3 | null; /** * Get vertex positions for multiple vertices */ export declare function getVertexPositions(mesh: Mesh, vertexKeys: string[]): Record; /** * Get center of vertices */ export declare function getVerticesCenter(mesh: Mesh, vertexKeys: string[]): Vector3; /** * Get distance between two vertices */ export declare function getVertexDistance(mesh: Mesh, vkey1: string, vkey2: string): number; /** * Find vertices within distance of a point */ export declare function findVerticesNearPoint(mesh: Mesh, point: Vector3, distance: number): string[]; /** * Find nearest vertex to a point */ export declare function findNearestVertex(mesh: Mesh, point: Vector3): { vertexKey: string; distance: number; } | null; /** * Get faces that use a vertex */ export declare function getFacesUsingVertex(mesh: Mesh, vertexKey: string): string[]; /** * Get edges connected to a vertex */ export declare function getEdgesConnectedToVertex(mesh: Mesh, vertexKey: string): Array<[string, string]>; /** * Get vertices connected to a vertex (via edges) */ export declare function getConnectedVertices(mesh: Mesh, vertexKey: string): string[]; /** * Check if vertex is orphaned (not used by any face) */ export declare function isVertexOrphaned(mesh: Mesh, vertexKey: string): boolean; /** * Remove orphaned vertices */ export declare function removeOrphanedVertices(mesh: Mesh): number; /** * Auto-fix geometry after vertex operations * Removes degenerate faces, orphaned vertices, etc. */ export declare function autoFixGeometry(mesh: Mesh): { removedFaces: number; removedVertices: number; }; /** * Recalculate normals for vertices * Updates face normals and optionally vertex normals */ export declare function recalculateNormals(mesh: Mesh): void; /** * Get vertex normal (average of face normals) */ export declare function getVertexNormal(mesh: Mesh, vertexKey: string): Vector3; /** * Set vertex UV coordinates */ export declare function setVertexUV(mesh: Mesh, vertexKey: string, uv: [number, number], faceKeys?: string[]): void; /** * Get vertex UV coordinates (from first face that uses it) */ export declare function getVertexUV(mesh: Mesh, vertexKey: string): [number, number] | null; /** * Interpolate UV for new vertex on edge */ export declare function interpolateVertexUV(mesh: Mesh, vertexKey: string, edge: [string, string], ratio?: number): [number, number] | null; /** * Select vertices by criteria */ export interface VertexSelectionCriteria { /** * Minimum distance from point */ nearPoint?: { point: Vector3; distance: number; }; /** * Must be orphaned */ orphaned?: boolean; /** * Must be used by specific face */ usedByFace?: string; /** * Must be connected to specific vertex */ connectedTo?: string; } /** * Select vertices matching criteria */ export declare function selectVerticesByCriteria(mesh: Mesh, criteria: VertexSelectionCriteria): string[]; //# sourceMappingURL=vertex_operations.d.ts.map