mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 08:44:19 -04:00
add shear_mat
This commit is contained in:
parent
633409b2bf
commit
5808fe2b1f
@ -610,6 +610,13 @@ decompose_matrix(const FLOATNAME(LMatrix3) &mat,
|
||||
fabs(new_mat(1, 0)) + fabs(new_mat(1, 2)) +
|
||||
fabs(new_mat(2, 0)) + fabs(new_mat(2, 1))) < 0.0001;
|
||||
|
||||
/*
|
||||
if (!has_no_shear) {
|
||||
linmath_cat.info() << "shear:\n";
|
||||
new_mat.write(linmath_cat.info(false), 2);
|
||||
}
|
||||
*/
|
||||
|
||||
return has_no_shear;
|
||||
}
|
||||
|
||||
|
@ -1077,7 +1077,7 @@ rotate_mat_normaxis(FLOATTYPE angle, const FLOATNAME(LVecBase3) &axis,
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE_LINMATH FLOATNAME(LMatrix3) FLOATNAME(LMatrix3)::
|
||||
scale_mat(const FLOATNAME(LVecBase3) &scale) {
|
||||
return FLOATNAME(LMatrix3)(scale[0], 0.0f, 0.0f,
|
||||
return FLOATNAME(LMatrix3)(scale._v.v._0, 0.0f, 0.0f,
|
||||
0.0f, scale._v.v._1, 0.0f,
|
||||
0.0f, 0.0f, scale._v.v._2);
|
||||
}
|
||||
@ -1095,6 +1095,32 @@ scale_mat(FLOATTYPE sx, FLOATTYPE sy, FLOATTYPE sz) {
|
||||
0.0f, 0.0f, sz);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: LMatrix::shear_mat
|
||||
// Access: Public, Static
|
||||
// Description: Returns a matrix that applies the indicated
|
||||
// shear in each of the three planes.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE_LINMATH FLOATNAME(LMatrix3) FLOATNAME(LMatrix3)::
|
||||
shear_mat(const FLOATNAME(LVecBase3) &shear) {
|
||||
return FLOATNAME(LMatrix3)(1.0f, 0.0f, 0.0f,
|
||||
shear._v.v._0, 1.0f, 0.0f,
|
||||
shear._v.v._1, shear._v.v._2, 1.0f);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: LMatrix::shear_mat
|
||||
// Access: Public, Static
|
||||
// Description: Returns a matrix that applies the indicated
|
||||
// shear in each of the three planes.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE_LINMATH FLOATNAME(LMatrix3) FLOATNAME(LMatrix3)::
|
||||
shear_mat(FLOATTYPE shxy, FLOATTYPE shxz, FLOATTYPE shyz) {
|
||||
return FLOATNAME(LMatrix3)(1.0f, 0.0f, 0.0f,
|
||||
shxy, 1.0f, 0.0f,
|
||||
shxz, shyz, 1.0f);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: LMatrix3::almost_equal
|
||||
// Access: Public
|
||||
|
@ -157,6 +157,11 @@ PUBLISHED:
|
||||
static INLINE_LINMATH FLOATNAME(LMatrix3)
|
||||
scale_mat(FLOATTYPE sx, FLOATTYPE sy, FLOATTYPE sz);
|
||||
|
||||
static INLINE_LINMATH FLOATNAME(LMatrix3)
|
||||
shear_mat(const FLOATNAME(LVecBase3) &shear);
|
||||
static INLINE_LINMATH FLOATNAME(LMatrix3)
|
||||
shear_mat(FLOATTYPE shxy, FLOATTYPE shxz, FLOATTYPE shyz);
|
||||
|
||||
static const FLOATNAME(LMatrix3) &convert_mat(CoordinateSystem from,
|
||||
CoordinateSystem to);
|
||||
|
||||
|
@ -1318,9 +1318,9 @@ rotate_mat_normaxis(FLOATTYPE angle, const FLOATNAME(LVecBase3) &axis,
|
||||
INLINE_LINMATH FLOATNAME(LMatrix4) FLOATNAME(LMatrix4)::
|
||||
scale_mat(const FLOATNAME(LVecBase3) &scale) {
|
||||
return FLOATNAME(LMatrix4)(scale._v.v._0, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, scale._v.v._1, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, scale._v.v._2, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
0.0f, scale._v.v._1, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, scale._v.v._2, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
|
||||
@ -1332,11 +1332,10 @@ scale_mat(const FLOATNAME(LVecBase3) &scale) {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE_LINMATH FLOATNAME(LMatrix4) FLOATNAME(LMatrix4)::
|
||||
scale_mat(FLOATTYPE sx, FLOATTYPE sy, FLOATTYPE sz) {
|
||||
return FLOATNAME(LMatrix4)(
|
||||
sx, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, sy, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, sz, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
return FLOATNAME(LMatrix4)(sx, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, sy, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, sz, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -1347,11 +1346,38 @@ scale_mat(FLOATTYPE sx, FLOATTYPE sy, FLOATTYPE sz) {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE_LINMATH FLOATNAME(LMatrix4) FLOATNAME(LMatrix4)::
|
||||
scale_mat(FLOATTYPE scale) {
|
||||
return FLOATNAME(LMatrix4)(
|
||||
scale, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, scale, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, scale, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
return FLOATNAME(LMatrix4)(scale, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, scale, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, scale, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: LMatrix::shear_mat
|
||||
// Access: Public, Static
|
||||
// Description: Returns a matrix that applies the indicated
|
||||
// shear in each of the three planes.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE_LINMATH FLOATNAME(LMatrix4) FLOATNAME(LMatrix4)::
|
||||
shear_mat(const FLOATNAME(LVecBase3) &shear) {
|
||||
return FLOATNAME(LMatrix4)(1.0f, 0.0f, 0.0f, 0.0f,
|
||||
shear._v.v._0, 1.0f, 0.0f, 0.0f,
|
||||
shear._v.v._1, shear._v.v._2, 1.0f, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: LMatrix::shear_mat
|
||||
// Access: Public, Static
|
||||
// Description: Returns a matrix that applies the indicated
|
||||
// shear in each of the three planes.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE_LINMATH FLOATNAME(LMatrix4) FLOATNAME(LMatrix4)::
|
||||
shear_mat(FLOATTYPE shxy, FLOATTYPE shxz, FLOATTYPE shyz) {
|
||||
return FLOATNAME(LMatrix4)(1.0f, 0.0f, 0.0f, 0.0f,
|
||||
shxy, 1.0f, 0.0f, 0.0f,
|
||||
shxz, shyz, 1.0f, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
@ -152,6 +152,11 @@ PUBLISHED:
|
||||
INLINE_LINMATH static FLOATNAME(LMatrix4)
|
||||
scale_mat(FLOATTYPE scale);
|
||||
|
||||
static INLINE_LINMATH FLOATNAME(LMatrix4)
|
||||
shear_mat(const FLOATNAME(LVecBase3) &shear);
|
||||
static INLINE_LINMATH FLOATNAME(LMatrix4)
|
||||
shear_mat(FLOATTYPE shxy, FLOATTYPE shxz, FLOATTYPE shyz);
|
||||
|
||||
INLINE_LINMATH static const FLOATNAME(LMatrix4) &y_to_z_up_mat();
|
||||
INLINE_LINMATH static const FLOATNAME(LMatrix4) &z_to_y_up_mat();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user