119 quat[0] = oldquat[0];
122 quat[1] = oldquat[1];
125 quat[2] = oldquat[2];
128 quat[3] = oldquat[3];
133 float eul[3], oldeul[3], nquat[4], noldquat[4];
158 if ((nquat[0] < 0.0f && quat[0] > 0.0f) || (nquat[0] > 0.0f && quat[0] < 0.0f)) {
182 short protectflag,
float axis[3],
float *
angle,
const float oldAxis[3],
float oldAngle)
195 axis[0] = oldAxis[0];
198 axis[1] = oldAxis[1];
201 axis[2] = oldAxis[2];
206 float eul[3], oldeul[3];
225 if (
IS_EQF(axis[0], axis[1]) &&
IS_EQF(axis[1], axis[2])) {
271 for (con = td->
con; con; con = con->
next) {
273 ListBase targets = {
nullptr,
nullptr};
385 bool do_limit =
false;
388 for (con = td->
con; con; con = con->
next) {
412 if (do_limit ==
false) {
480 float scale_sign[3], scale_abs[3];
486 for (
i = 0;
i < 3;
i++) {
494 for (con = td->
con; con; con = con->
next) {
579 IFACE_(
"Rotation: %.2f%s %s"),
595 const float mat[3][3],
598 float vec[3], totmat[3][3], smat[3][3];
599 float eul[3], fmat[3][3], quat[4];
608 const float *gp_falloff =
static_cast<const float *
>(td->
extra);
609 if (gp_falloff !=
nullptr && *gp_falloff != 1.0f) {
610 float ident_mat[3][3];
704 float iquat[4], tquat[4];
793 float iquat[4], tquat[4];
848 const float mat[3][3],
896 IFACE_(
"Scale: %s : %s%s %s"),
905 IFACE_(
"Scale: %s : %s : %s%s %s"),
918 IFACE_(
"Scale X: %s Y: %s%s %s"),
927 IFACE_(
"Scale X: %s Y: %s Z: %s%s %s"),
954 if (
dot_v3v3(rmat[0], smat[0]) < 0.0f) {
957 if (
dot_v3v3(rmat[1], smat[1]) < 0.0f) {
960 if (
dot_v3v3(rmat[2], smat[2]) < 0.0f) {
968 const float mat[3][3])
972 float tmat[3][3], smat[3][3], center[3];
1007 if (td_ext->
scale) {
1016 float ob_scale_mat[3][3];
1085 const float *gp_falloff_ptr =
static_cast<const float *
>(td->
extra);
1086 const float gp_falloff = gp_falloff_ptr !=
nullptr ? *gp_falloff_ptr : 1.0f;
1092 float values_final_evil[4];
1097 float ratio = values_final_evil[0];
1098 float transformed_value = td->
ival *
fabs(ratio);
1282 float view_vector[3];
1284 return dot_v3v3(axis, view_vector) > 0.0f;
void BKE_constraint_custom_object_space_init(struct bConstraintOb *cob, struct bConstraint *con)
void BKE_constraint_targets_for_solving_get(struct Depsgraph *depsgraph, struct bConstraint *con, struct bConstraintOb *ob, struct ListBase *targets, float ctime)
const bConstraintTypeInfo * BKE_constraint_typeinfo_from_type(int type)
Object * CTX_data_active_object(const bContext *C)
#define CTX_DATA_COUNT(C, member)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
MINLINE float signf(float f)
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])
void mat3_to_rot_size(float rot[3][3], float size[3], const float mat3[3][3])
void size_to_mat4(float R[4][4], const float size[3])
void interp_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3], float t)
void mat4_to_size(float size[3], const float M[4][4])
#define mul_m3_series(...)
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void mat3_to_size(float size[3], const float M[3][3])
void mul_m4_m3m4(float R[4][4], const float A[3][3], const float B[4][4])
void mul_mat3_m4_v3(const float mat[4][4], float r[3])
void unit_m4(float m[4][4])
void sub_eul_euleul(float r_eul[3], float a[3], float b[3], short order)
void axis_angle_to_quat(float r[4], const float axis[3], float angle)
void quat_to_mat3(float m[3][3], const float q[4])
void mat3_to_quat(float q[4], const float mat[3][3])
void eulO_to_axis_angle(float axis[3], float *angle, const float eul[3], short order)
void quat_to_mat4(float m[4][4], const float q[4])
void mul_qt_fl(float q[4], float f)
void eul_to_quat(float quat[4], const float eul[3])
void axis_angle_to_mat4(float R[4][4], const float axis[3], float angle)
void eulO_to_mat4(float mat[4][4], const float e[3], short order)
void mat4_to_axis_angle(float axis[3], float *angle, const float mat[4][4])
void quat_to_eul(float eul[3], const float quat[4])
float normalize_qt_qt(float r[4], const float q[4])
void invert_qt_qt_normalized(float q1[4], const float q2[4])
void mat4_to_eulO(float eul[3], short order, const float m[4][4])
void mul_qt_qtqt(float q[4], const float a[4], const float b[4])
void quat_to_axis_angle(float axis[3], float *angle, const float q[4])
void axis_angle_to_eulO(float eul[3], short order, const float axis[3], float angle)
void mat4_to_quat(float q[4], const float mat[4][4])
void mat3_to_compatible_eulO(float eul[3], const float oldrot[3], short order, const float mat[3][3])
void eulO_to_mat3(float M[3][3], const float e[3], short order)
void add_eul_euleul(float r_eul[3], float a[3], float b[3], short order)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void mul_v3_v3(float r[3], const float a[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE bool is_zero_v4(const float v[4]) ATTR_WARN_UNUSED_RESULT
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 float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE bool is_zero_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void add_v3_v3(float r[3], const float a[3])
size_t size_t size_t BLI_snprintf_utf8(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
size_t BLI_snprintf_utf8_rlen(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
@ CONSTRAINT_TYPE_ROTLIMIT
@ CONSTRAINT_TYPE_DISTLIMIT
@ CONSTRAINT_TYPE_LOCLIMIT
@ CONSTRAINT_TYPE_SIZELIMIT
@ V3D_AROUND_CENTER_BOUNDS
@ V3D_AROUND_LOCAL_ORIGINS
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
ccl_device_inline float2 fabs(const float2 a)
T interpolate(const T &a, const T &b, const FactorT &t)
T max(const T &a, const T &b)
VecBase< float, 3 > float3
void(* evaluate_constraint)(struct bConstraint *con, struct bConstraintOb *cob, struct ListBase *targets)
struct bConstraint * next