Blender V4.3
BCMath.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "BKE_object.hh"
12#include "BLI_math_rotation.h"
13#include "BLI_math_vector.h"
14#include "BlenderTypes.h"
15
16class BCQuat {
17 private:
18 mutable Quat q;
19
20 public:
21 BCQuat(const BCQuat &other)
22 {
23 copy_v4_v4(q, other.q);
24 }
25
26 BCQuat(Quat &other)
27 {
28 copy_v4_v4(q, other);
29 }
30
32 {
33 unit_qt(q);
34 }
35
36 Quat &quat()
37 {
38 return q;
39 }
40
41 void rotate_to(Matrix &mat_to);
42};
43
44class BCMatrix {
45
46 private:
47 mutable float matrix[4][4];
48 mutable float size[3];
49 mutable float rot[3];
50 mutable float loc[3];
51 mutable float q[4];
52
53 void unit();
54 void copy(Matrix &r, Matrix &a);
55
56 public:
57 float (&location() const)[3];
58 float (&rotation() const)[3];
59 float (&scale() const)[3];
60 float (&quat() const)[4];
61
62 BCMatrix(BC_global_forward_axis global_forward_axis, BC_global_up_axis global_up_axis);
63 BCMatrix(const BCMatrix &mat);
64 BCMatrix(Matrix &mat);
65 BCMatrix(Object *ob);
66 BCMatrix();
67
72 void get_matrix(DMatrix &matrix, bool transposed = false, int precision = -1) const;
73 void get_matrix(Matrix &matrix,
74 bool transposed = false,
75 int precision = -1,
76 bool inverted = false) const;
77 void set_transform(Object *ob);
78 void set_transform(Matrix &mat);
79 void add_transform(Matrix &to,
80 const Matrix &transform,
81 const Matrix &from,
82 bool inverted = false);
83 void apply_transform(Matrix &to,
84 const Matrix &transform,
85 const Matrix &from,
86 bool inverse = false);
87 void add_inverted_transform(Matrix &to, const Matrix &transform, const Matrix &from);
88 void add_transform(const Matrix &matrix, bool inverted = false);
89 void add_transform(const BCMatrix &matrix, bool inverted = false);
90 void apply_transform(const BCMatrix &matrix, bool inverted = false);
91
92 bool in_range(const BCMatrix &other, float distance) const;
93
94 static void sanitize(Matrix &matrix, int precision);
95 static void sanitize(DMatrix &matrix, int precision);
96 static void transpose(Matrix &matrix);
97};
General operations, lookup, etc. for blender objects.
void unit_qt(float q[4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
BC_global_up_axis
BC_global_forward_axis
btMatrix3x3 inverse() const
Return the inverse of the matrix.
btMatrix3x3 transpose() const
Return the transpose of the matrix.
float(& rotation() const)[3]
Definition BCMath.cpp:219
void add_transform(Matrix &to, const Matrix &transform, const Matrix &from, bool inverted=false)
Definition BCMath.cpp:75
void add_inverted_transform(Matrix &to, const Matrix &transform, const Matrix &from)
Definition BCMath.cpp:106
void set_transform(Object *ob)
Definition BCMath.cpp:113
float(& scale() const)[3]
Definition BCMath.cpp:224
void get_matrix(DMatrix &matrix, bool transposed=false, int precision=-1) const
Definition BCMath.cpp:169
float(& location() const)[3]
Definition BCMath.cpp:214
float(& quat() const)[4]
Definition BCMath.cpp:229
void apply_transform(Matrix &to, const Matrix &transform, const Matrix &from, bool inverse=false)
Definition BCMath.cpp:90
BCMatrix()
Definition BCMath.cpp:45
static void sanitize(Matrix &matrix, int precision)
Definition BCMath.cpp:142
bool in_range(const BCMatrix &other, float distance) const
Definition BCMath.cpp:202
void rotate_to(Matrix &mat_to)
Definition BCMath.cpp:12
BCQuat(const BCQuat &other)
Definition BCMath.h:21
BCQuat(Quat &other)
Definition BCMath.h:26
Quat & quat()
Definition BCMath.h:36
BCQuat()
Definition BCMath.h:31
draw_view in_light_buf[] float