132 memcpy(r, a,
sizeof(
Matrix));
142 for (
auto &row : mat) {
143 for (
float &cell : row) {
144 double val = double(cell);
153 for (
auto &row : mat) {
154 for (
double &cell : row) {
169 for (
int i = 0;
i < 4;
i++) {
170 for (
int j = 0; j < 4; j++) {
171 float val = (transposed) ? matrix[j][
i] : matrix[
i][j];
172 if (precision >= 0) {
173 val =
floor(val *
pow(10, precision) + 0.5) /
pow(10, precision);
181 const bool transposed,
183 const bool inverted)
const
185 for (
int i = 0;
i < 4;
i++) {
186 for (
int j = 0; j < 4; j++) {
187 float val = (transposed) ? matrix[j][
i] : matrix[
i][j];
188 if (precision >= 0) {
189 val =
floor(val *
pow(10, precision) + 0.5) /
pow(10, precision);
202 for (
int i = 0;
i < 4;
i++) {
203 for (
int j = 0; j < 4; j++) {
void BKE_object_matrix_local_get(Object *ob, float r_mat[4][4])
double double_round(double x, int ndigits)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void mat4_decompose(float loc[3], float quat[4], float size[3], const float wmat[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
bool invert_m4(float mat[4][4])
void transpose_m4(float R[4][4])
void unit_m4(float m[4][4])
void quat_to_mat4(float m[4][4], const float q[4])
void quat_to_eul(float eul[3], const float quat[4])
void mul_qt_qtqt(float q[4], const float a[4], const float b[4])
void mat4_to_quat(float q[4], const float mat[4][4])
bool mat3_from_axis_conversion(int src_forward, int src_up, int dst_forward, int dst_up, float r_mat[3][3])
void quat_to_compatible_eul(float eul[3], const float oldrot[3], const float quat[4])
static const BC_global_forward_axis BC_DEFAULT_FORWARD
static const BC_global_up_axis BC_DEFAULT_UP
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static void transpose(Matrix &matrix)
float(& rotation() const)[3]
BCMatrix(BC_global_forward_axis global_forward_axis, BC_global_up_axis global_up_axis)
void add_transform(Matrix &to, const Matrix &transform, const Matrix &from, bool inverted=false)
void add_inverted_transform(Matrix &to, const Matrix &transform, const Matrix &from)
void set_transform(Object *ob)
float(& scale() const)[3]
void get_matrix(DMatrix &matrix, bool transposed=false, int precision=-1) const
float(& location() const)[3]
void apply_transform(Matrix &to, const Matrix &transform, const Matrix &from, bool inverse=false)
static void sanitize(Matrix &matrix, int precision)
bool in_range(const BCMatrix &other, float distance) const
void rotate_to(Matrix &mat_to)
MatBase< C, R > inverse(MatBase< C, R >) RET
float distance(VecOp< float, D >, VecOp< float, D >) RET
ccl_device_inline float2 fabs(const float2 a)