43 float angle_a, angle_b;
54 diff = (angle_a + angle_b) /
float(
M_PI * 2);
61 float edge_vecs[4][3];
86 float area_min, area_max, area_a, area_b;
92 area_min =
min_ff(area_a, area_b);
93 area_max =
max_ff(area_a, area_b);
95 diff = area_max ? (1.0f - (area_min / area_max)) : 1.0f;
105 BLI_assert(
e->l->f->len == 3 &&
e->l->radial_next->f->len == 3);
107 r_v_quad[0] =
e->l->v;
108 r_v_quad[1] =
e->l->prev->v;
109 r_v_quad[2] =
e->l->next->v;
110 r_v_quad[3] =
e->l->radial_next->prev->v;
141 cd_offset += delimit_data->
cd_size)
165 BMFace *f_a =
e->l->f, *f_b =
e->l->radial_next->f;
179 if (delimit_data->
do_mat && (f_a->
mat_nr != f_b->mat_nr)) {
198 float edge_vecs[4][3];
226 for (i = 0; i < delimit_data->
cdata_len; i++) {
239#define EDGE_MARK (1 << 0)
241#define FACE_OUT (1 << 0)
242#define FACE_INPUT (1 << 2)
246 float angle_face, angle_shape;
255 uint totedge_tag = 0;
264 if (angle_face <
DEG2RADF(180.0f)) {
274 if (angle_shape <
DEG2RADF(180.0f)) {
317 if (totedge_tag == 0) {
345 for (i = 0; i < totedge; i++) {
350 l_b =
e->l->radial_next;
CustomData interface, see also DNA_customdata_types.h.
int CustomData_sizeof(eCustomDataType type)
int CustomData_get_n_offset(const CustomData *data, eCustomDataType type, int n)
int CustomData_number_of_layers(const CustomData *data, eCustomDataType type)
MINLINE float max_ff(float a, float b)
MINLINE float min_ff(float a, float b)
int is_quad_flip_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
float area_tri_v3(const float v1[3], const float v2[3], const float v3[3])
float normal_tri_v3(float n[3], const float v1[3], const float v2[3], const float v3[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], float limit) ATTR_WARN_UNUSED_RESULT
float angle_normalized_v3v3(const float v1[3], const float v2[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v3(float n[3])
int BLI_sortutil_cmp_float(const void *a_, const void *b_)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
Read Guarded memory(de)allocation.
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
ATTR_WARN_UNUSED_RESULT BMesh * bm
BMFace * BM_faces_join_pair(BMesh *bm, BMLoop *l_a, BMLoop *l_b, const bool do_del)
Faces Join Pair.
#define BMO_edge_flag_test(bm, e, oflag)
#define BMO_edge_flag_enable(bm, e, oflag)
float BMO_slot_float_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
void BMO_slot_buffer_from_enabled_flag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, char htype, short oflag)
#define BMO_face_flag_enable(bm, e, oflag)
#define BMO_ITER(ele, iter, slot_args, slot_name, restrict_flag)
#define BMO_face_flag_test(bm, e, oflag)
bool BMO_slot_bool_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
bool BM_edge_is_contiguous_loop_cd(const BMEdge *e, const int cd_loop_type, const int cd_loop_offset)
bool BM_edge_face_pair(BMEdge *e, BMFace **r_fa, BMFace **r_fb)
BLI_INLINE bool BM_edge_is_contiguous(const BMEdge *e) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
BLI_INLINE bool BM_edge_is_manifold(const BMEdge *e) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMLoop * l_b
void bmo_join_triangles_exec(BMesh *bm, BMOperator *op)
static void bm_edge_to_quad_verts(const BMEdge *e, const BMVert *r_v_quad[4])
static bool bm_edge_is_contiguous_loop_cd_all(const BMEdge *e, const DelimitData_CD *delimit_data)
static float quad_calc_error(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
static float bm_edge_is_delimit(const BMEdge *e, const DelimitData *delimit_data)
static bool bm_edge_delimit_cdata(CustomData *ldata, eCustomDataType type, DelimitData_CD *r_delim_cd)
IMETHOD Vector diff(const Vector &a, const Vector &b, double dt)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
static void error(const char *str)
struct BMOpSlot slots_out[BMO_OP_MAX_SLOTS]
struct BMOpSlot slots_in[BMO_OP_MAX_SLOTS]