67 add_transform(this->matrix, mat.matrix, this->matrix, inverted);
76 const Matrix &transform,
91 const Matrix &transform,
131void BCMatrix::copy(Matrix &r, Matrix &a)
134 memcpy(r, a,
sizeof(Matrix));
144 for (
auto &row : mat) {
145 for (
float &cell : row) {
146 double val =
double(cell);
155 for (
auto &row : mat) {
156 for (
double &cell : row) {
171 for (
int i = 0; i < 4; i++) {
172 for (
int j = 0; j < 4; j++) {
173 float val = (transposed) ? matrix[j][i] : matrix[i][j];
174 if (precision >= 0) {
175 val =
floor(val *
pow(10, precision) + 0.5) /
pow(10, precision);
183 const bool transposed,
185 const bool inverted)
const
187 for (
int i = 0; i < 4; i++) {
188 for (
int j = 0; j < 4; j++) {
189 float val = (transposed) ? matrix[j][i] : matrix[i][j];
190 if (precision >= 0) {
191 val =
floor(val *
pow(10, precision) + 0.5) /
pow(10, precision);
204 for (
int i = 0; i < 4; i++) {
205 for (
int j = 0; j < 4; j++) {
206 if (
fabs(other.matrix[i][j] - matrix[i][j]) > distance) {
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 unit_m4(float m[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 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
typedef double(DMatrix)[4][4]
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
btMatrix3x3 inverse() const
Return the inverse of the matrix.
static void transpose(Matrix &matrix)
float(& rotation() const)[3]
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)
pow(value.r - subtrahend, 2.0)") .do_static_compilation(true)
draw_view in_light_buf[] float
ccl_device_inline float2 floor(const float2 a)
ccl_device_inline float2 fabs(const float2 a)