Blender V4.5
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 float * BM_edgeloop_normal_get (BMEdgeLoopStore *el_store)
const float * BM_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)
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(), BM_edgeloop_calc_normal_aligned(), 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_edgeloop_calc_normal_aligned(), 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)

◆ 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(), BM_edgeloop_copy(), MEM_mallocN(), and BMEdgeLoopStore::verts.

Referenced by BM_edgeloop_copy(), and bridge_loop_pair().

◆ BM_edgeloop_edges_get()

◆ BM_edgeloop_expand()

◆ BM_edgeloop_flip()

◆ BM_edgeloop_free()

◆ BM_edgeloop_from_verts()

◆ BM_edgeloop_is_closed()

◆ BM_edgeloop_length_get()

◆ BM_edgeloop_normal_get()

const float * BM_edgeloop_normal_get ( BMEdgeLoopStore * el_store)

◆ BM_edgeloop_overlap_check()

◆ BM_edgeloop_verts_get()

◆ BM_mesh_edgeloops_calc_center()

void BM_mesh_edgeloops_calc_center ( BMesh * bm,
ListBase * eloops )

◆ BM_mesh_edgeloops_calc_normal()

void BM_mesh_edgeloops_calc_normal ( BMesh * bm,
ListBase * eloops )

◆ BM_mesh_edgeloops_calc_normal_aligned()

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

◆ BM_mesh_edgeloops_calc_order()

◆ BM_mesh_edgeloops_find()

◆ BM_mesh_edgeloops_find_path()

◆ BM_mesh_edgeloops_free()