Blender V4.5
blender::geometry::quad Namespace Reference

Enumerations

enum class  QuadDirection : int8_t { Edge_0_2 = 0 , Edge_1_3 = 1 }

Functions

static QuadDirection calc_quad_direction_beauty (const float3 &v0, const float3 &v1, const float3 &v2, const float3 &v3)
static void calc_quad_directions (const Span< float3 > positions, const Span< int > face_offsets, const Span< int > corner_verts, const TriangulateQuadMode quad_mode, MutableSpan< QuadDirection > directions)
static void calc_corner_tris (const Span< int > face_offsets, const Span< QuadDirection > directions, MutableSpan< int3 > corner_tris)
static void calc_corner_tris (const Span< float3 > positions, const OffsetIndices< int > src_faces, const Span< int > src_corner_verts, const IndexMask &quads, const TriangulateQuadMode quad_mode, MutableSpan< int3 > corner_tris)
static void calc_edges (const Span< int > quad_corner_verts, MutableSpan< int2 > new_quad_edges)
static void calc_quad_corner_edges (const Span< int > src_corner_edges, const Span< int3 > corner_tris, const int edges_start, MutableSpan< int > corner_edges)
static void calc_edges (const Span< int > src_corner_edges, const Span< int3 > corner_tris, const Span< int > corner_verts, const int edges_start, MutableSpan< int2 > edges, MutableSpan< int > quad_corner_edges)
template<typename T>
static void copy_quad_data_to_tris (const Span< T > src, const IndexMask &quads, MutableSpan< T > dst)
static void copy_quad_data_to_tris (const GSpan src, const IndexMask &quads, GMutableSpan dst)

Enumeration Type Documentation

◆ QuadDirection

#Edge_0_2 #Edge_1_3 3 ----— 2 3 ----— 2 | 1 / | | \ 1 | | / | | \ | | / | | \ | | / 0 | | 0 \ | 0 ----— 1 0 ----— 1

Enumerator
Edge_0_2 
Edge_1_3 

Definition at line 110 of file mesh_triangulate.cc.

Function Documentation

◆ calc_corner_tris() [1/2]

◆ calc_corner_tris() [2/2]

void blender::geometry::quad::calc_corner_tris ( const Span< int > face_offsets,
const Span< QuadDirection > directions,
MutableSpan< int3 > corner_tris )
static

◆ calc_edges() [1/2]

void blender::geometry::quad::calc_edges ( const Span< int > quad_corner_verts,
MutableSpan< int2 > new_quad_edges )
static

Each triangulated quad creates one additional edge in the result mesh, between the two triangles. The corner_verts are just the corners of the quads, and the edges are just the new edges for these quads.

Definition at line 235 of file mesh_triangulate.cc.

References i, blender::Span< T >::size(), blender::Span< T >::slice(), and verts.

Referenced by calc_edges(), and blender::geometry::mesh_triangulate().

◆ calc_edges() [2/2]

void blender::geometry::quad::calc_edges ( const Span< int > src_corner_edges,
const Span< int3 > corner_tris,
const Span< int > corner_verts,
const int edges_start,
MutableSpan< int2 > edges,
MutableSpan< int > quad_corner_edges )
static

◆ calc_quad_corner_edges()

void blender::geometry::quad::calc_quad_corner_edges ( const Span< int > src_corner_edges,
const Span< int3 > corner_tris,
const int edges_start,
MutableSpan< int > corner_edges )
static

Definition at line 245 of file mesh_triangulate.cc.

References blender::Span< T >::index_range().

Referenced by calc_edges().

◆ calc_quad_direction_beauty()

QuadDirection blender::geometry::quad::calc_quad_direction_beauty ( const float3 & v0,
const float3 & v1,
const float3 & v2,
const float3 & v3 )
static
Note
This behavior is meant to be the same as BM_verts_calc_rotate_beauty. The order of vertices requires special attention.

Definition at line 119 of file mesh_triangulate.cc.

References BLI_polyfill_edge_calc_rotate_beauty__area(), Edge_0_2, Edge_1_3, is_quad_flip_v3(), UNLIKELY, and v2.

Referenced by calc_quad_directions().

◆ calc_quad_directions()

◆ copy_quad_data_to_tris() [1/2]

void blender::geometry::quad::copy_quad_data_to_tris ( const GSpan src,
const IndexMask & quads,
GMutableSpan dst )
static

◆ copy_quad_data_to_tris() [2/2]

template<typename T>
void blender::geometry::quad::copy_quad_data_to_tris ( const Span< T > src,
const IndexMask & quads,
MutableSpan< T > dst )
static