You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenMesh中split_edge操作后如何获取新边及边的朝向?

OpenMesh split_edge分割后获取新边及朝向说明

获取新生成的边段

OpenMesh的split_edge函数虽然不直接返回新边,但它会返回新插入顶点的VertexHandle,我们可以通过这个顶点结合原边的两个顶点来定位新边:

  1. 先记录原边的两个顶点:
    EdgeHandle orig_edge = ...; // 目标分割边
    HalfedgeHandle h = mesh.halfedge_handle(orig_edge, 0);
    VertexHandle v_start = mesh.from_vertex_handle(h);
    VertexHandle v_end = mesh.to_vertex_handle(h);
    
  2. 执行分割操作,得到中点的顶点句柄:
    VertexHandle v_mid = mesh.split_edge(orig_edge);
    
  3. 通过顶点配对查找新边:
    EdgeHandle edge1 = mesh.find_edge(v_start, v_mid);
    EdgeHandle edge2 = mesh.find_edge(v_mid, v_end);
    
    也可以遍历中点v_mid的所有邻边,筛选出连接v_start和v_end的两条边——这种方法在顶点邻边数量较少时更稳妥,毕竟分割后必然存在这两条关联边。

新边的朝向

分割后的两条新边会延续原边的初始方向逻辑:

  • 第一条新边(原起点→中点)的方向和原边的初始半边方向完全一致:原边的第一个半边(halfedge_handle(orig_edge, 0))会被修改为指向中点,保持从原起点出发的方向。
  • 第二条新边(中点→原终点)的方向是原边方向的自然延续,新增的半边会从中点指向原终点,和原边的初始朝向保持顺向传递。

简单总结:如果原边初始朝向是A→B,分割后会得到A→M和M→B两条新边,二者的朝向都和原边初始朝向保持一致的顺向逻辑。

内容的提问来源于stack exchange,提问作者allo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:57:33