Blender V4.3
bmesh_edgeloop.hh File Reference

Go to the source code of this file.

Macros

#define BM_EDGELINK_NEXT(el_store, elink)
 
#define BM_EDGELOOP_NEXT(el_store)    (CHECK_TYPE_INLINE(el_store, BMEdgeLoopStore *), (BMEdgeLoopStore *)((LinkData *)el_store)->next)
 

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 : \
bool BM_edgeloop_is_closed(BMEdgeLoopStore *el_store)
ListBase * BM_edgeloop_verts_get(BMEdgeLoopStore *el_store)
#define NULL
static ulong * next
void * first

Definition at line 70 of file bmesh_edgeloop.hh.

Referenced by bridge_loop_pair().

◆ BM_EDGELOOP_NEXT

#define BM_EDGELOOP_NEXT ( el_store)     (CHECK_TYPE_INLINE(el_store, BMEdgeLoopStore *), (BMEdgeLoopStore *)((LinkData *)el_store)->next)

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 639 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 544 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 492 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 539 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 399 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 406 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 413 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()