22 for (
int i = 0; i < 4; i++) {
24 float pivotsize =
M[i][i];
27 pivotsize = -pivotsize;
29 for (
int j = i + 1; j < 4; j++) {
35 if (tmp > pivotsize) {
45 for (
int j = 0; j < 4; j++) {
49 M[i][j] =
M[pivot][j];
53 R[i][j] =
R[pivot][j];
58 for (
int j = i + 1; j < 4; j++) {
59 float f =
M[j][i] /
M[i][i];
61 for (
int k = 0; k < 4; k++) {
62 M[j][k] -= f *
M[i][k];
63 R[j][k] -= f *
R[i][k];
69 for (
int i = 3; i >= 0; --i) {
75 for (
int j = 0; j < 4; j++) {
80 for (
int j = 0; j < i; j++) {
83 for (
int k = 0; k < 4; k++) {
84 M[j][k] -= f *
M[i][k];
85 R[j][k] -= f *
R[i][k];
96 float M[4][4],
R[4][4];
98 memcpy(
R, &tfmR,
sizeof(
R));
99 memcpy(
M, &tfm,
sizeof(
M));
105 memcpy(&tfmR,
R,
sizeof(
R));
120 double trace = (
double)(tfm[0][0] + tfm[1][1] + tfm[2][2]);
124 double s =
sqrt(trace + 1.0);
126 qt.w = (
float)(s / 2.0);
129 qt.x = (
float)((
double)(tfm[2][1] - tfm[1][2]) * s);
130 qt.y = (
float)((
double)(tfm[0][2] - tfm[2][0]) * s);
131 qt.z = (
float)((
double)(tfm[1][0] - tfm[0][1]) * s);
136 if (tfm[1][1] > tfm[i][i])
138 if (tfm[2][2] > tfm[i][i])
144 double s =
sqrt((
double)(tfm[i][i] - (tfm[j][j] + tfm[k][k])) + 1.0);
151 double w = (
double)(tfm[k][j] - tfm[j][k]) * s;
152 q[j] = (
double)(tfm[j][i] + tfm[i][j]) * s;
153 q[k] = (
double)(tfm[k][i] + tfm[i][k]) * s;
184 for (
int i = 0; i < 3; i++)
185 for (
int j = 0; j < 4; j++)
186 Rnext[i][j] = 0.5f * (
R[i][j] + Rit[i][j]);
189 for (
int i = 0; i < 3; i++) {
191 fabsf(
R[i][0] - Rnext[i][0]) +
fabsf(
R[i][1] - Rnext[i][1]) +
192 fabsf(
R[i][2] - Rnext[i][2]));
197 }
while (iteration < 100 && norm > 1e-4f);
206 decomp->
y.w = scale.
x.x;
218 shear.
z =
dot(colx, coly);
219 coly -= shear.
z * colx;
222 shear.
y =
dot(colx, colz);
223 colz -= shear.
y * colx;
224 shear.
x =
dot(coly, colz);
225 colz -= shear.
x * coly;
240 decomp->
y.w = scale.
x;
249 for (
size_t i = 0; i <
size; i++) {
255 if (
dot(decomp[i - 1].
x, decomp[i].
x) < 0.0f)
256 decomp[i].
x = -decomp[i].
x;
267 for (
size_t i = 0; i <
size; i++) {
274 decomp[i].
x = decomp[i - 1].
x;
276 else if (i <
size - 1) {
277 decomp[i].
x = decomp[i + 1].
x;
285 1.0f / (viewplane.
top - viewplane.
bottom),
typedef float(TangentPoint)[2]
typedef double(DMatrix)[4][4]
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SIMD_FORCE_INLINE btScalar norm() const
Return the norm (length) of the vector.
#define CCL_NAMESPACE_END
ccl_device_inline Transform projection_to_transform(const ProjectionTransform &a)
ccl_device_inline ProjectionTransform projection_identity()
ccl_device_inline ProjectionTransform projection_transpose(const ProjectionTransform &a)
T dot(const vec_base< T, Size > &a, const vec_base< T, Size > &b)
T safe_divide(const T &a, const T &b)