Blender V5.0
bmesh_edgeloop.hh File Reference
#include "bmesh_class.hh"

Go to the source code of this file.

Macros

#define BM_EDGELINK_NEXT(el_store, elink)
#define BM_EDGELOOP_NEXT(el_store)

Functions

int BM_mesh_edgeloops_find (BMesh *bm, ListBase *r_eloops, bool(*test_fn)(BMEdge *, void *user_data), void *user_data)
bool BM_mesh_edgeloops_find_path (BMesh *bm, ListBase *r_eloops, bool(*test_fn)(BMEdge *, void *user_data), void *user_data, BMVert *v_src, BMVert *v_dst)
void BM_mesh_edgeloops_free (ListBase *eloops)
void BM_mesh_edgeloops_calc_center (BMesh *bm, ListBase *eloops)
void BM_mesh_edgeloops_calc_normal (BMesh *bm, ListBase *eloops)
void BM_mesh_edgeloops_calc_normal_aligned (BMesh *bm, ListBase *eloops, const float no_align[3])
void BM_mesh_edgeloops_calc_order (BMesh *bm, ListBase *eloops, bool use_normals)
BMEdgeLoopStoreBM_edgeloop_copy (BMEdgeLoopStore *el_store)
BMEdgeLoopStoreBM_edgeloop_from_verts (BMVert **v_arr, int v_arr_tot, bool is_closed)
void BM_edgeloop_free (BMEdgeLoopStore *el_store)
bool BM_edgeloop_is_closed (BMEdgeLoopStore *el_store)
int BM_edgeloop_length_get (BMEdgeLoopStore *el_store)
ListBaseBM_edgeloop_verts_get (BMEdgeLoopStore *el_store)
const floatBM_edgeloop_normal_get (BMEdgeLoopStore *el_store)
const floatBM_edgeloop_center_get (BMEdgeLoopStore *el_store)
void BM_edgeloop_edges_get (BMEdgeLoopStore *el_store, BMEdge **e_arr)
void BM_edgeloop_calc_center (BMesh *bm, BMEdgeLoopStore *el_store)
bool BM_edgeloop_calc_normal (BMesh *bm, BMEdgeLoopStore *el_store)
bool BM_edgeloop_calc_normal_aligned (BMesh *bm, BMEdgeLoopStore *el_store, const float no_align[3])
void BM_edgeloop_flip (BMesh *bm, BMEdgeLoopStore *el_store)
void BM_edgeloop_expand (BMesh *bm, BMEdgeLoopStore *el_store, int el_store_len, bool split, GSet *split_edges)
bool BM_edgeloop_overlap_check (BMEdgeLoopStore *el_store_a, BMEdgeLoopStore *el_store_b)

Macro Definition Documentation

◆ BM_EDGELINK_NEXT

#define BM_EDGELINK_NEXT ( el_store,
elink )
Value:
(elink)->next ? \
(elink)->next : \
NULL)
bool BM_edgeloop_is_closed(BMEdgeLoopStore *el_store)
ListBase * BM_edgeloop_verts_get(BMEdgeLoopStore *el_store)
static ulong * next
void * first

Definition at line 72 of file bmesh_edgeloop.hh.

Referenced by bridge_loop_pair().

◆ BM_EDGELOOP_NEXT

#define BM_EDGELOOP_NEXT ( el_store)
Value:
(CHECK_TYPE_INLINE(el_store, BMEdgeLoopStore *), (BMEdgeLoopStore *)((LinkData *)el_store)->next)
#define CHECK_TYPE_INLINE(val, type)

Definition at line 78 of file bmesh_edgeloop.hh.

Referenced by bm_edgering_pair_calc(), bm_edgering_pair_interpolate(), and bm_edgering_pair_subdiv().

Function Documentation

◆ BM_edgeloop_calc_center()

◆ BM_edgeloop_calc_normal()

◆ BM_edgeloop_calc_normal_aligned()

bool BM_edgeloop_calc_normal_aligned ( BMesh * bm,
BMEdgeLoopStore * el_store,
const float no_align[3] )

For open loops that are straight lines, calculating the normal as if it were a polygon is meaningless.

Instead use an alignment vector and calculate the normal based on that.

Definition at line 637 of file bmesh_edgeloop.cc.

References add_v3_v3(), cross, cross_v3_v3v3(), EDGELOOP_EPS, ListBase::first, ListBase::last, LinkData::next, BMEdgeLoopStore::no, NODE_AS_CO, normalize_v3(), sub_v3_v3v3(), UNLIKELY, BMEdgeLoopStore::verts, and zero_v3().

Referenced by bm_edgering_pair_interpolate(), BM_mesh_edgeloops_calc_normal_aligned(), and bridge_loop_pair().

◆ BM_edgeloop_center_get()

const float * BM_edgeloop_center_get ( BMEdgeLoopStore * el_store)

Definition at line 542 of file bmesh_edgeloop.cc.

References BMEdgeLoopStore::co.

Referenced by bm_edgering_pair_interpolate(), and bridge_loop_pair().

◆ BM_edgeloop_copy()

BMEdgeLoopStore * BM_edgeloop_copy ( BMEdgeLoopStore * el_store)

Copy a single edge-loop.

Returns
new edge-loops.

Definition at line 490 of file bmesh_edgeloop.cc.

References BLI_duplicatelist(), MEM_mallocN(), and BMEdgeLoopStore::verts.

Referenced by bridge_loop_pair().

◆ BM_edgeloop_edges_get()

void BM_edgeloop_edges_get ( BMEdgeLoopStore * el_store,
BMEdge ** e_arr )

◆ BM_edgeloop_expand()

◆ BM_edgeloop_flip()

◆ BM_edgeloop_free()

void BM_edgeloop_free ( BMEdgeLoopStore * el_store)

◆ BM_edgeloop_from_verts()

BMEdgeLoopStore * BM_edgeloop_from_verts ( BMVert ** v_arr,
int v_arr_tot,
bool is_closed )

◆ BM_edgeloop_is_closed()

◆ BM_edgeloop_length_get()

◆ BM_edgeloop_normal_get()

const float * BM_edgeloop_normal_get ( BMEdgeLoopStore * el_store)

Definition at line 537 of file bmesh_edgeloop.cc.

References BMEdgeLoopStore::no.

Referenced by bm_edgering_pair_interpolate(), and bridge_loop_pair().

◆ BM_edgeloop_overlap_check()

bool BM_edgeloop_overlap_check ( BMEdgeLoopStore * el_store_a,
BMEdgeLoopStore * el_store_b )

◆ BM_edgeloop_verts_get()

◆ BM_mesh_edgeloops_calc_center()

void BM_mesh_edgeloops_calc_center ( BMesh * bm,
ListBase * eloops )

Definition at line 397 of file bmesh_edgeloop.cc.

References bm, BM_edgeloop_calc_center(), and LISTBASE_FOREACH.

Referenced by bmo_bridge_loops_exec().

◆ BM_mesh_edgeloops_calc_normal()

void BM_mesh_edgeloops_calc_normal ( BMesh * bm,
ListBase * eloops )

Definition at line 404 of file bmesh_edgeloop.cc.

References bm, BM_edgeloop_calc_normal(), and LISTBASE_FOREACH.

Referenced by bmo_bridge_loops_exec().

◆ BM_mesh_edgeloops_calc_normal_aligned()

void BM_mesh_edgeloops_calc_normal_aligned ( BMesh * bm,
ListBase * eloops,
const float no_align[3] )

Definition at line 411 of file bmesh_edgeloop.cc.

References bm, BM_edgeloop_calc_normal_aligned(), and LISTBASE_FOREACH.

◆ BM_mesh_edgeloops_calc_order()

◆ BM_mesh_edgeloops_find()

◆ BM_mesh_edgeloops_find_path()

◆ BM_mesh_edgeloops_free()