# Are there any libraries for easier editing of geometry, like splitting edges, bisecting faces, etc?

**URL:** <https://discourse.threejs.org/t/are-there-any-libraries-for-easier-editing-of-geometry-like-splitting-edges-bisecting-faces-etc/74110>\
**Category:** Questions\
**Tags:** vertices, geometry\
**Created:** [November 18, 2024, 2:00am UTC](https://discourse.threejs.org/t/are-there-any-libraries-for-easier-editing-of-geometry-like-splitting-edges-bisecting-faces-etc/74110 "2024-11-18T02:00:21Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![dubois](https://avatars.discourse-cdn.com/v4/letter/d/e9c0ed/32.png) [@dubois](https://discourse.threejs.org/u/dubois)\
**Post date:** [November 29, 2024, 4:46am UTC](https://discourse.threejs.org/t/are-there-any-libraries-for-easier-editing-of-geometry-like-splitting-edges-bisecting-faces-etc/74110/8 "2024-11-29T04:46:50Z")

</div>

> [@Extract vertices in edge-connection order from BufferGeometry for "is inside polygon" check](https://discourse.threejs.org/t/extract-vertices-in-edge-connection-order-from-buffergeometry-for-is-inside-polygon-check/5088/4):
>
> Hi, You can do this using a half edge structure. class HalfEdge { constructor(){ this.twin = null this.a = null this.b = null } } const edges = [] triangles.forEach(triangle=\>{ triangle.forEach((vertex,vertexIndex)=\>{ const edge = new HalfEdge() edge.a = vertex edge.b = triangle[(vertexIndex + 1) % 3] edges.push(edge) }) //now every triangle has 3 edges, we need to find which one doesnt have a twin const edgeMap = {} //initialize the map vertices.for…

---

_[View the full topic](https://discourse.threejs.org/t/are-there-any-libraries-for-easier-editing-of-geometry-like-splitting-edges-bisecting-faces-etc/74110)._
