37 const float mat_final[3][3],
38 const bool is_local_center)
49 if (is_local_center) {
64 float *gp_falloff =
static_cast<float *
>(td->
extra);
65 if (gp_falloff !=
nullptr) {
93 bool dir_flip =
false;
100 dir_flip = !dir_flip;
105 dir_flip = !dir_flip;
112 dir_flip = !dir_flip;
168 float axismat_inv[3][3];
171 cross_v3_v3v3(axismat_inv[1], axismat_inv[0], axismat_inv[2]);
175 float mat_final[3][3];
182 for (const int i : range) {
183 TransData *td = &tc->data[i];
184 if (td->flag & TD_SKIP) {
187 transdata_elem_shear(t, tc, td, mat_final, is_local_center);
196 if (axis < 0 || 1 < axis) {
202 for (
int i = 0;
i < tc->data_len;
i++, td++) {
212 uv[axis] =
uv[axis] + value *
uv[1 - axis] * (2 * axis - 1);
215 if (
uv[axis] < 0.0f || 1.0f <
uv[axis]) {
225 float value = vec[0];
227 vec_inside_bounds[0] = value;
230 float value_inside_bounds = vec_inside_bounds[0];
234 const int max_i = 32;
237 const float value_mid = (value_inside_bounds + value) / 2.0f;
238 if (
ELEM(value_mid, value_inside_bounds, value)) {
242 value_inside_bounds = value_mid;
249 vec_inside_bounds[0] = value_inside_bounds;
250 vec[0] = value_inside_bounds;
347 custom_data->data =
nullptr;
351 custom_data->
op = op;
void mul_m3_v3(const float M[3][3], float r[3])
void copy_m3_m3(float m1[3][3], const float m2[3][3])
void unit_m3(float m[3][3])
bool invert_m3_m3(float inverse[3][3], const float mat[3][3])
#define mul_m3_series(...)
void mul_mat3_m4_v3(const float mat[4][4], float r[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void add_v2_v2(float r[2], const float a[2])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void negate_v3(float r[3])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE float normalize_v2(float n[2])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
#define SNPRINTF_UTF8(dst, format,...)
void ED_area_status_text(ScrArea *area, const char *str)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void parallel_for(const IndexRange range, const int64_t grain_size, const Function &function, const TaskSizeHints &size_hints=detail::TaskSizeHints_Static(1))
struct wmOperatorType * type