Implement Matrix4x4::ShearX ShearY ShearZ D3DOrthoProjLH D3DOrthoProjRH D3DPerspProjLH
This commit is contained in:
@@ -651,9 +651,9 @@ namespace J3ML::LinearAlgebra {
|
||||
|
||||
Vector4 Matrix4x4::Row(int i) const { return GetRow(i);}
|
||||
|
||||
Vector4 Matrix4x4::Col3(int i) const { return GetColumn3(i);}
|
||||
Vector3 Matrix4x4::Col3(int i) const { return GetColumn3(i);}
|
||||
|
||||
Vector4 Matrix4x4::Row3(int i) const { return GetRow3(i);}
|
||||
Vector3 Matrix4x4::Row3(int i) const { return GetRow3(i);}
|
||||
|
||||
Vector3 Matrix4x4::TransformDir(float tx, float ty, float tz) const
|
||||
{
|
||||
@@ -764,4 +764,56 @@ namespace J3ML::LinearAlgebra {
|
||||
return copy;
|
||||
}
|
||||
|
||||
Vector4 &Matrix4x4::Row(int row) {
|
||||
assert(row >= 0);
|
||||
assert(row < Rows);
|
||||
return reinterpret_cast<Vector4 &> (elems[row]);
|
||||
}
|
||||
|
||||
Vector3 &Matrix4x4::Row3(int row) {
|
||||
assert(row >= 0);
|
||||
assert(row < Rows);
|
||||
return reinterpret_cast<Vector3 &> (elems[row]);
|
||||
}
|
||||
|
||||
Vector4 Matrix4x4::Column(int index) const { return GetColumn(index);}
|
||||
|
||||
Vector3 Matrix4x4::GetScale() const {
|
||||
return Vector3(
|
||||
GetColumn3(0).Length(),
|
||||
GetColumn3(1).Length(),
|
||||
GetColumn3(2).Length());
|
||||
}
|
||||
|
||||
Matrix4x4 Matrix4x4::ShearX(float yFactor, float zFactor) {
|
||||
return Matrix4x4(1.f, yFactor, zFactor, 0.f,
|
||||
0.f, 1.f, 0.f, 0.f,
|
||||
0.f, 0.f, 1.f, 0.f,
|
||||
0.f, 0.f, 0.f, 1.f);
|
||||
}
|
||||
|
||||
Matrix4x4 Matrix4x4::ShearY(float xFactor, float zFactor) /// [similarOverload: ShearX] [hideIndex]
|
||||
{
|
||||
return Matrix4x4(1.f, 0.f, 0.f, 0.f,
|
||||
xFactor, 1.f, zFactor, 0.f,
|
||||
0.f, 0.f, 1.f, 0.f,
|
||||
0.f, 0.f, 0.f, 1.f);
|
||||
}
|
||||
|
||||
Matrix4x4 Matrix4x4::ShearZ(float xFactor, float yFactor) /// [similarOverload: ShearX] [hideIndex]
|
||||
{
|
||||
return Matrix4x4(1.f, 0.f, 0.f, 0.f,
|
||||
0.f, 1.f, 0.f, 0.f,
|
||||
xFactor, yFactor, 1.f, 0.f,
|
||||
0.f, 0.f, 0.f, 1.f);
|
||||
}
|
||||
|
||||
Matrix4x4 Matrix4x4::D3DPerspProjLH(float n, float f, float h, float v) {
|
||||
Matrix4x4 p;
|
||||
p[0][0] = 2.f * n / h; p[0][1] = 0; p[0][2] = 0; p[0][3] = 0.f;
|
||||
p[1][0] = 0; p[1][1] = 2.f * n / v; p[1][2] = 0; p[1][3] = 0.f;
|
||||
p[2][0] = 0; p[2][1] = 0; p[2][2] = f / (f-n); p[2][3] = n * f / (n-f);
|
||||
p[3][0] = 0; p[3][1] = 0; p[3][2] = 1.f; p[3][3] = 0.f;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user