daily update on 20230309 by nitload youmu
This commit is contained in:
@@ -73,13 +73,7 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static Matrix2x2 operator *(Colum2D colum, Vec2D vec)
|
||||
{
|
||||
return new Matrix2x2(
|
||||
colum.X * vec.X, colum.X * vec.Y,
|
||||
colum.Y * vec.X, colum.Y * vec.Y
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public static Colum2D operator *(Colum2D colum, float x)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct Colum3D : IEquatable<Colum3D>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public float X;
|
||||
[FieldOffset(4)]
|
||||
public float Y;
|
||||
[FieldOffset(8)]
|
||||
public float Z;
|
||||
|
||||
public Colum3D(float x, float y, float z)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
Z = z;
|
||||
}
|
||||
|
||||
bool IEquatable<Colum3D>.Equals(Colum3D other)
|
||||
{
|
||||
if (this.GetHashCode() != other.GetHashCode())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.X == other.X
|
||||
&& this.Y == other.Y
|
||||
&& this.Z == other.Z;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj.GetType() != typeof(Colum3D))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.Equals((Colum3D)obj);
|
||||
}
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(X, Y, Z);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{X}\t{Y}\t{Z}";
|
||||
}
|
||||
|
||||
public static bool operator ==(Colum3D vec1, Colum3D vec2)
|
||||
{
|
||||
return vec1.X == vec2.X
|
||||
&& vec1.Y == vec2.Y
|
||||
&& vec1.Z == vec2.Z;
|
||||
}
|
||||
|
||||
public static bool operator !=(Colum3D vec1, Colum3D vec2)
|
||||
{
|
||||
return !(vec1.X == vec2.X
|
||||
&& vec1.Y == vec2.Y
|
||||
&& vec1.Z == vec2.Z);
|
||||
}
|
||||
|
||||
public static Colum3D operator +(Colum3D vec1, Colum3D vec2)
|
||||
{
|
||||
return new Colum3D(
|
||||
vec1.X + vec2.X,
|
||||
vec1.Y + vec2.Y,
|
||||
vec1.Z + vec2.Z
|
||||
);
|
||||
}
|
||||
|
||||
public static Colum3D operator -(Colum3D vec1, Colum3D vec2)
|
||||
{
|
||||
return new Colum3D(
|
||||
vec1.X - vec2.X,
|
||||
vec1.Y - vec2.Y,
|
||||
vec1.Z - vec2.Z
|
||||
);
|
||||
}
|
||||
|
||||
public static float operator *(Colum3D vec1, Colum3D vec2)
|
||||
{
|
||||
return
|
||||
vec1.X * vec2.X
|
||||
+ vec1.Y + vec2.Y
|
||||
+ vec1.Z + vec2.Z;
|
||||
}
|
||||
|
||||
public static Colum3D operator *(Colum3D vec, float x)
|
||||
{
|
||||
return new Colum3D(
|
||||
vec.X * x,
|
||||
vec.Y * x,
|
||||
vec.Z * x
|
||||
);
|
||||
}
|
||||
|
||||
public static Colum3D operator /(Colum3D vec, float x)
|
||||
{
|
||||
return new Colum3D(
|
||||
vec.X / x,
|
||||
vec.Y / x,
|
||||
vec.Z / x
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.Contracts;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct Colum4D:IEquatable<Colum4D>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public float X;
|
||||
[FieldOffset(4)]
|
||||
public float Y;
|
||||
[FieldOffset(8)]
|
||||
public float Z;
|
||||
[FieldOffset(12)]
|
||||
public float W;
|
||||
|
||||
public Colum4D(float x, float y, float z, float w)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
Z = z;
|
||||
W = w;
|
||||
}
|
||||
|
||||
public bool Equals(Colum4D other)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return base.Equals(obj);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return base.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ namespace StgSharp.Math
|
||||
[FieldOffset(8)]
|
||||
public Vec2D row2;
|
||||
|
||||
|
||||
public Matrix2x2(Vec2D c0, Vec2D c1)
|
||||
{
|
||||
row1 = c0;
|
||||
@@ -71,63 +72,25 @@ namespace StgSharp.Math
|
||||
return $"{row1}\n{row2}";
|
||||
}
|
||||
|
||||
public static Matrix2x2 operator +(Matrix2x2 array1, Matrix2x2 array2)
|
||||
public static Matrix2x2 operator +(Matrix2x2 matrix1 , Matrix2x2 matrix2)
|
||||
{
|
||||
return new Matrix2x2(
|
||||
array1.row1 + array2.row1,
|
||||
array1.row2 + array2.row2
|
||||
matrix1.row1 + matrix2.row1,
|
||||
matrix1.row2 + matrix2.row2
|
||||
);
|
||||
}
|
||||
|
||||
public static Matrix2x2 operator -(Matrix2x2 array1, Matrix2x2 array2)
|
||||
public static Matrix2x2 operator -(Matrix2x2 matrix1, Matrix2x2 matrix2)
|
||||
{
|
||||
return new Matrix2x2(
|
||||
array1.row1 - array2.row1,
|
||||
array1.row2 - array2.row2
|
||||
matrix1.row1 - matrix2.row1,
|
||||
matrix1.row2 - matrix2.row2
|
||||
);
|
||||
}
|
||||
|
||||
public static unsafe Matrix2x2 operator *(Matrix2x2 array1, Matrix2x2 array2)
|
||||
{
|
||||
float* a11 = &array1.row1.X;
|
||||
float* a12 = a11++ ;
|
||||
float* a21 = a12++ ;
|
||||
float* a22 = a21++ ;
|
||||
|
||||
|
||||
float* b11 = &array2.row1.X ;
|
||||
float* b12 = b11++ ;
|
||||
float* b21 = b12++ ;
|
||||
float* b22 = b21++ ;
|
||||
|
||||
var s1 = *a21 + *a22;
|
||||
var s2 = s1 - *a11;
|
||||
var s3 = *a11 - *a21;
|
||||
var s4 = *a12 - s2;
|
||||
|
||||
var t1 = *b12 - *b11;
|
||||
var t2 = *b22 - t1;
|
||||
var t3 = *b22 - *b12;
|
||||
var t4 = t2 - *b21;
|
||||
|
||||
var m1 = *a11 * *b11;
|
||||
var m2 = *a12 * *b11;
|
||||
var m3 = s4 * *b22;
|
||||
var m4 = *a22 * t4;
|
||||
var m5 = s1 * t1;
|
||||
var m6 = s2 * t2;
|
||||
var m7 = s3 * t3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix2x2(u1,u5,u6,u7);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,15 @@ namespace StgSharp.Math
|
||||
row2 = r2;
|
||||
}
|
||||
|
||||
public Matrix2x3(
|
||||
float r11, float r12, float r13,
|
||||
float r21, float r22, float r23
|
||||
)
|
||||
{
|
||||
row1 = new Vec3D(r11, r12, r13);
|
||||
row2 = new Vec3D(r21, r22, r23);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
@@ -60,19 +69,19 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
public static Matrix2x3 operator +(Matrix2x3 array1, Matrix2x3 array2)
|
||||
public static Matrix2x3 operator +(Matrix2x3 matrix1, Matrix2x3 matrix2)
|
||||
{
|
||||
return new Matrix2x3(
|
||||
array1.row1 + array2.row1,
|
||||
array1.row2 + array2.row2
|
||||
matrix1.row1 + matrix2.row1,
|
||||
matrix1.row2 + matrix2.row2
|
||||
);
|
||||
}
|
||||
|
||||
public static Matrix2x3 operator -(Matrix2x3 array1, Matrix2x3 array2)
|
||||
public static Matrix2x3 operator -(Matrix2x3 matrix1, Matrix2x3 matrix2)
|
||||
{
|
||||
return new Matrix2x3(
|
||||
array1.row1 - array2.row1,
|
||||
array1.row2 - array2.row2
|
||||
matrix1.row1 - matrix2.row1,
|
||||
matrix1.row2 - matrix2.row2
|
||||
);
|
||||
}
|
||||
|
||||
@@ -92,51 +101,7 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static unsafe Matrix2x2 operator *(Matrix2x3 array1, Matrix3x2 array2)
|
||||
{
|
||||
float* p1 = &array1.row1.X;
|
||||
float* p2 = &array2.row2.X;
|
||||
|
||||
Vec2D a11 = new Vec2D(*(p1 + 0), *(p1 + 1));
|
||||
Vec2D a12 = new Vec2D(*(p1 + 2), 0);
|
||||
Vec2D a21 = new Vec2D(*(p1 + 3), *(p1 + 4));
|
||||
Vec2D a22 = new Vec2D(*(p1 + 5), 0);
|
||||
|
||||
Colum2D b11 = new Colum2D(*(p2 + 0), *(p2 + 2));
|
||||
Colum2D b12 = new Colum2D(*(p2 + 1), *(p2 + 3));
|
||||
Colum2D b21 = new Colum2D(*(p2 + 4), 0);
|
||||
Colum2D b22 = new Colum2D(*(p2 + 5), 0);
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = a11 * b11;
|
||||
var m2 = a12 * b11;
|
||||
var m3 = s4 * b22;
|
||||
var m4 = a22 * t4;
|
||||
var m5 = s1 * t1;
|
||||
var m6 = s2 * t2;
|
||||
var m7 = s3 * t3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix2x2(
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,14 @@ namespace StgSharp.Math
|
||||
row2 = r2;
|
||||
}
|
||||
|
||||
|
||||
public Matrix2x4(
|
||||
float a11, float a12, float a13, float a14,
|
||||
float a21, float a22, float a23, float a24
|
||||
)
|
||||
{
|
||||
row1 = new Vec4D(a11,a12,a13,a14);
|
||||
row2 = new Vec4D(a21,a22,a23,a24);
|
||||
}
|
||||
|
||||
public bool Equals(Matrix2x4 other)
|
||||
{
|
||||
@@ -61,19 +68,19 @@ namespace StgSharp.Math
|
||||
return $"{this.row1}\n{this.row2}";
|
||||
}
|
||||
|
||||
public static Matrix2x4 operator +(Matrix2x4 array1,Matrix2x4 array2)
|
||||
public static Matrix2x4 operator +(Matrix2x4 matrix1 ,Matrix2x4 matrix2)
|
||||
{
|
||||
return new Matrix2x4(
|
||||
array1.row1 + array2.row1,
|
||||
array1.row2 + array2.row2
|
||||
matrix1.row1 + matrix2.row1,
|
||||
matrix1.row2 + matrix2.row2
|
||||
) ;
|
||||
}
|
||||
|
||||
public static Matrix2x4 operator -(Matrix2x4 array1, Matrix2x4 array2)
|
||||
public static Matrix2x4 operator -(Matrix2x4 matrix1, Matrix2x4 matrix2)
|
||||
{
|
||||
return new Matrix2x4(
|
||||
array1.row1 - array2.row1,
|
||||
array1.row2 - array2.row2
|
||||
matrix1.row1 - matrix2.row1,
|
||||
matrix1.row2 - matrix2.row2
|
||||
);
|
||||
}
|
||||
|
||||
@@ -93,48 +100,6 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static unsafe Matrix2x2 operator *(Matrix2x4 array1,Matrix4x2 array2)
|
||||
{
|
||||
float* p1 = &array1.row1.X;
|
||||
float* p2 = &array2.row2.X;
|
||||
|
||||
Vec2D a11 = new Vec2D(*(p1 + 0), *(p1 + 2));
|
||||
Vec2D a12 = new Vec2D(*(p1 + 1), *(p1 + 3));
|
||||
Vec2D a21 = new Vec2D(*(p1 + 4), *(p1 + 6));
|
||||
Vec2D a22 = new Vec2D(*(p1 + 5), *(p1 + 7));
|
||||
|
||||
Colum2D b11 = new Colum2D(*(p2 + 0), *(p2 + 1));
|
||||
Colum2D b12 = new Colum2D(*(p2 + 2), *(p2 + 3));
|
||||
Colum2D b21 = new Colum2D(*(p2 + 4), *(p2 + 5));
|
||||
Colum2D b22 = new Colum2D(*(p2 + 6), *(p2 + 7));
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = a11 * b11;
|
||||
var m2 = a12 * b11;
|
||||
var m3 = s4 * b22;
|
||||
var m4 = a22 * t4;
|
||||
var m5 = s1 * t1;
|
||||
var m6 = s2 * t2;
|
||||
var m7 = s3 * t3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix2x2(u1,u5,u6,u7);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,18 @@ namespace StgSharp.Math
|
||||
row2= r2;
|
||||
row3= r3;
|
||||
}
|
||||
|
||||
public Matrix3x2(
|
||||
float a11, float a12,
|
||||
float a21, float a22,
|
||||
float a31, float a32
|
||||
)
|
||||
{
|
||||
row1 = new Vec2D(a11, a12);
|
||||
row2 = new Vec2D(a21, a22);
|
||||
row3 = new Vec2D(a31, a32);
|
||||
}
|
||||
|
||||
bool IEquatable<Matrix3x2>.Equals(Matrix3x2 other)
|
||||
{
|
||||
if (this.GetHashCode() != other.GetHashCode())
|
||||
@@ -63,23 +75,21 @@ namespace StgSharp.Math
|
||||
return $"{row1}\n{row2}\n{row3}";
|
||||
}
|
||||
|
||||
public static unsafe Matrix3x3 operator *(Matrix3x2 array1, Matrix3x2 array2)
|
||||
public static Matrix3x2 operator +(Matrix3x2 matrix1, Matrix3x2 matrix2)
|
||||
{
|
||||
float* p1 = &array1.row1.X;
|
||||
float* p2 = &array2.row2.X;
|
||||
return new Matrix3x2(
|
||||
matrix1.row1 + matrix2.row1,
|
||||
matrix1.row2 + matrix2.row2,
|
||||
matrix1.row3 + matrix2.row3
|
||||
);
|
||||
}
|
||||
|
||||
Matrix2x2 a11 = new Matrix2x2();
|
||||
|
||||
return new Matrix3x3(
|
||||
*(p1 + 0) * *(p2 + 0) + *(p1 + 1) * *(p2 + 3),
|
||||
*(p1 + 0) * *(p2 + 1) + *(p1 + 1) * *(p2 + 4),
|
||||
*(p1 + 0) * *(p2 + 2) + *(p1 + 1) * *(p2 + 5),
|
||||
*(p1 + 2) * *(p2 + 0) + *(p1 + 3) * *(p2 + 3),
|
||||
*(p1 + 2) * *(p2 + 1) + *(p1 + 3) * *(p2 + 4),
|
||||
*(p1 + 2) * *(p2 + 2) + *(p1 + 3) * *(p2 + 5),
|
||||
*(p1 + 4) * *(p2 + 0) + *(p1 + 5) * *(p2 + 3),
|
||||
*(p1 + 4) * *(p2 + 1) + *(p1 + 5) * *(p2 + 4),
|
||||
*(p1 + 4) * *(p2 + 2) + *(p1 + 5) * *(p2 + 5)
|
||||
public static Matrix3x2 operator -(Matrix3x2 matrix1, Matrix3x2 matrix2)
|
||||
{
|
||||
return new Matrix3x2(
|
||||
matrix1.row1 - matrix2.row1,
|
||||
matrix1.row2 - matrix2.row2,
|
||||
matrix1.row3 - matrix2.row3
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
@@ -79,69 +77,51 @@ namespace StgSharp.Math
|
||||
|
||||
|
||||
|
||||
public static bool operator ==(Matrix3x3 array1, Matrix3x3 array2)
|
||||
public static bool operator ==(Matrix3x3 matrix1, Matrix3x3 matrix2)
|
||||
{
|
||||
return array1.Equals(array2);
|
||||
return matrix1.Equals(matrix2);
|
||||
}
|
||||
|
||||
public static bool operator !=(Matrix3x3 array1, Matrix3x3 array2)
|
||||
public static bool operator !=(Matrix3x3 matrix1, Matrix3x3 matrix2)
|
||||
{
|
||||
return !array1.Equals(array2);
|
||||
return !matrix1.Equals(matrix2);
|
||||
}
|
||||
|
||||
public static Matrix3x3 operator +(Matrix3x3 array1, Matrix3x3 array2)
|
||||
public static Matrix3x3 operator +(Matrix3x3 matrix1, Matrix3x3 matrix2)
|
||||
{
|
||||
return new Matrix3x3(
|
||||
array1.row1.X + array2.row1.X,
|
||||
array1.row1.Y + array2.row1.Y,
|
||||
array1.row1.Z + array2.row1.Z,
|
||||
matrix1.row1.X + matrix2.row1.X,
|
||||
matrix1.row1.Y + matrix2.row1.Y,
|
||||
matrix1.row1.Z + matrix2.row1.Z,
|
||||
|
||||
array1.row2.X + array2.row2.X,
|
||||
array1.row2.Y + array2.row2.Y,
|
||||
array1.row2.Z + array2.row2.Z,
|
||||
matrix1.row2.X + matrix2.row2.X,
|
||||
matrix1.row2.Y + matrix2.row2.Y,
|
||||
matrix1.row2.Z + matrix2.row2.Z,
|
||||
|
||||
array1.row3.X + array2.row3.X,
|
||||
array1.row3.Y + array2.row3.Y,
|
||||
array1.row3.Z + array2.row3.Z
|
||||
matrix1.row3.X + matrix2.row3.X,
|
||||
matrix1.row3.Y + matrix2.row3.Y,
|
||||
matrix1.row3.Z + matrix2.row3.Z
|
||||
);
|
||||
}
|
||||
|
||||
public static Matrix3x3 operator -(Matrix3x3 array1, Matrix3x3 array2)
|
||||
public static Matrix3x3 operator -(Matrix3x3 matrix1, Matrix3x3 matrix2)
|
||||
{
|
||||
return new Matrix3x3(
|
||||
array1.row1.X - array2.row1.X,
|
||||
array1.row1.Y - array2.row1.Y,
|
||||
array1.row1.Z - array2.row1.Z,
|
||||
matrix1.row1.X - matrix2.row1.X,
|
||||
matrix1.row1.Y - matrix2.row1.Y,
|
||||
matrix1.row1.Z - matrix2.row1.Z,
|
||||
|
||||
array1.row2.X - array2.row2.X,
|
||||
array1.row2.Y - array2.row2.Y,
|
||||
array1.row2.Z - array2.row2.Z,
|
||||
matrix1.row2.X - matrix2.row2.X,
|
||||
matrix1.row2.Y - matrix2.row2.Y,
|
||||
matrix1.row2.Z - matrix2.row2.Z,
|
||||
|
||||
array1.row3.X - array2.row3.X,
|
||||
array1.row3.Y - array2.row3.Y,
|
||||
array1.row3.Z - array2.row3.Z
|
||||
matrix1.row3.X - matrix2.row3.X,
|
||||
matrix1.row3.Y - matrix2.row3.Y,
|
||||
matrix1.row3.Z - matrix2.row3.Z
|
||||
);
|
||||
}
|
||||
|
||||
public static unsafe Matrix3x3 operator *(Matrix3x3 array1,Matrix3x3 array2)
|
||||
{
|
||||
float* p1 = &array1.row1.X;
|
||||
float* p2 = &array2.row1.X;
|
||||
|
||||
|
||||
|
||||
return new Matrix3x3(
|
||||
*(p1 + 0) * *(p2 + 0) + *(p1 + 1) * *(p2 + 3) + *(p1 + 2) * *(p2 + 6),
|
||||
*(p1 + 0) * *(p2 + 1) + *(p1 + 1) * *(p2 + 4) + *(p1 + 2) * *(p2 + 7),
|
||||
*(p1 + 0) * *(p2 + 2) + *(p1 + 1) * *(p2 + 5) + *(p1 + 2) * *(p2 + 8),
|
||||
*(p1 + 3) * *(p2 + 0) + *(p1 + 4) * *(p2 + 3) + *(p1 + 5) * *(p2 + 6),
|
||||
*(p1 + 3) * *(p2 + 1) + *(p1 + 4) * *(p2 + 4) + *(p1 + 5) * *(p2 + 7),
|
||||
*(p1 + 3) * *(p2 + 2) + *(p1 + 4) * *(p2 + 5) + *(p1 + 5) * *(p2 + 8),
|
||||
*(p1 + 6) * *(p2 + 0) + *(p1 + 7) * *(p2 + 3) + *(p1 + 2) * *(p2 + 6),
|
||||
*(p1 + 6) * *(p2 + 1) + *(p1 + 7) * *(p2 + 4) + *(p1 + 2) * *(p2 + 7),
|
||||
*(p1 + 6) * *(p2 + 2) + *(p1 + 7) * *(p2 + 5) + *(p1 + 2) * *(p2 + 8)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public static Matrix3x3 operator *(Matrix3x3 array, float x)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct Matrix3x4:IEquatable<Matrix3x4>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public Vec4D row1;
|
||||
[FieldOffset(16)]
|
||||
public Vec4D row2;
|
||||
[FieldOffset(32)]
|
||||
public Vec4D row3;
|
||||
|
||||
public Matrix3x4(
|
||||
Vec4D r1, Vec4D r2, Vec4D r3
|
||||
)
|
||||
{
|
||||
this.row1 = r1;
|
||||
this.row2 = r2;
|
||||
this.row3 = r3;
|
||||
}
|
||||
|
||||
public Matrix3x4(
|
||||
float a11, float a12, float a13, float a14,
|
||||
float a21, float a22, float a23, float a24,
|
||||
float a31, float a32, float a33, float a34
|
||||
)
|
||||
{
|
||||
row1 = new Vec4D(a11,a12,a13,a14);
|
||||
row2 = new Vec4D(a21,a22,a23,a24);
|
||||
row3 = new Vec4D(a31,a32,a33,a34);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj.GetType() != typeof(Matrix3x4))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.Equals((Matrix3x4)obj);
|
||||
}
|
||||
}
|
||||
|
||||
bool IEquatable<Matrix3x4>.Equals(Matrix3x4 other)
|
||||
{
|
||||
if (this.GetHashCode() != other.GetHashCode())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.row1 == other.row1
|
||||
&& this.row2 == other.row2
|
||||
&& this.row3 == other.row3;
|
||||
}
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(this.row1,this.row2,this.row3);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{this.row1}\n{this.row2}\n{this.row3}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,19 @@ namespace StgSharp.Math
|
||||
row4 = r4;
|
||||
}
|
||||
|
||||
public Matrix4x2(
|
||||
float a11, float a12,
|
||||
float a21, float a22,
|
||||
float a31, float a32,
|
||||
float a41, float a42
|
||||
)
|
||||
{
|
||||
row1 = new Vec2D(a11, a12);
|
||||
row2 = new Vec2D(a21, a22);
|
||||
row3 = new Vec2D(a31, a32);
|
||||
row4 = new Vec2D(a41, a42);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
@@ -66,53 +79,6 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
public static unsafe Matrix4x4 operator *(Matrix4x2 array1,Matrix4x2 array2)
|
||||
{
|
||||
float* p1 = &array1.row1.X;
|
||||
float* p2 = &array2.row1.X;
|
||||
|
||||
Colum2D a11 = new Colum2D(*(p1 + 0), *(p1 + 2));
|
||||
Colum2D a12 = new Colum2D(*(p1 + 1), *(p1 + 3));
|
||||
Colum2D a21 = new Colum2D(*(p1 + 4), *(p1 + 6));
|
||||
Colum2D a22 = new Colum2D(*(p1 + 5), *(p1 + 7));
|
||||
|
||||
Vec2D b11 = new Vec2D(*(p2 + 0), *(p2 + 1));
|
||||
Vec2D b12 = new Vec2D(*(p2 + 2), *(p2 + 3));
|
||||
Vec2D b21 = new Vec2D(*(p2 + 4), *(p2 + 5));
|
||||
Vec2D b22 = new Vec2D(*(p2 + 6), *(p2 + 7));
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = a11 * b11;
|
||||
var m2 = a12 * b11;
|
||||
var m3 = s4 * b22;
|
||||
var m4 = a22 * t4;
|
||||
var m5 = s1 * t1;
|
||||
var m6 = s2 * t2;
|
||||
var m7 = s3 * t3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix4x4(
|
||||
new Vec4D(u1.row1, u5.row1),
|
||||
new Vec4D(u1.row2, u5.row2),
|
||||
new Vec4D(u6.row1, u7.row1),
|
||||
new Vec4D(u6.row2, u7.row2)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct Matrix4x3:IEquatable<Matrix4x3>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public Vec3D row1;
|
||||
[FieldOffset(12)]
|
||||
public Vec3D row2;
|
||||
[FieldOffset(24)]
|
||||
public Vec3D row3;
|
||||
[FieldOffset(36)]
|
||||
public Vec3D row4;
|
||||
|
||||
public Matrix4x3(
|
||||
float a11, float a12, float a13,
|
||||
float a21, float a22, float a23,
|
||||
float a31, float a32, float a33,
|
||||
float a41, float a42, float a43
|
||||
)
|
||||
{
|
||||
row1 = new Vec3D(a11, a12, a13);
|
||||
row2 = new Vec3D(a21, a22, a23);
|
||||
row3 = new Vec3D(a31, a32, a33);
|
||||
row4 = new Vec3D(a41, a42, a43);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj.GetType() != typeof(Matrix4x3))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.Equals((Matrix4x3)obj);
|
||||
}
|
||||
}
|
||||
|
||||
bool IEquatable<Matrix4x3>.Equals(Matrix4x3 other)
|
||||
{
|
||||
if (this.GetHashCode() != other.GetHashCode())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.row1 == other.row1
|
||||
&& this.row2 == other.row2
|
||||
&& this.row3 == other.row3
|
||||
&& this.row4 == other.row4;
|
||||
}
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return base.ToString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -33,9 +33,9 @@ namespace StgSharp.Math
|
||||
)
|
||||
{
|
||||
row1 = new Vec4D(a11, a12, a13, a14);
|
||||
row2 = new Vec4D(a11, a12, a13, a14);
|
||||
row3 = new Vec4D(a11, a12, a13, a14);
|
||||
row4 = new Vec4D(a11, a12, a13, a14);
|
||||
row2 = new Vec4D(a21, a22, a23, a24);
|
||||
row3 = new Vec4D(a31, a32, a33, a34);
|
||||
row4 = new Vec4D(a41, a42, a43, a44);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
@@ -68,23 +68,23 @@ namespace StgSharp.Math
|
||||
return $"{this.row1}\n{this.row2}\n{this.row3}\n{this.row4}";
|
||||
}
|
||||
|
||||
public static Matrix4x4 operator +(Matrix4x4 array1, Matrix4x4 array2)
|
||||
public static Matrix4x4 operator +(Matrix4x4 matrix1, Matrix4x4 matrix2)
|
||||
{
|
||||
return new Matrix4x4(
|
||||
array1.row1 + array2.row1,
|
||||
array1.row2 + array2.row2,
|
||||
array1.row3 + array2.row3,
|
||||
array1.row4 + array2.row4
|
||||
matrix1.row1 + matrix2.row1,
|
||||
matrix1.row2 + matrix2.row2,
|
||||
matrix1.row3 + matrix2.row3,
|
||||
matrix1.row4 + matrix2.row4
|
||||
);
|
||||
}
|
||||
|
||||
public static Matrix4x4 operator -(Matrix4x4 array1, Matrix4x4 array2)
|
||||
public static Matrix4x4 operator -(Matrix4x4 matrix1, Matrix4x4 matrix2)
|
||||
{
|
||||
return new Matrix4x4(
|
||||
array1.row1 - array2.row1,
|
||||
array1.row2 - array2.row2,
|
||||
array1.row3 - array2.row3,
|
||||
array1.row4 - array2.row4
|
||||
matrix1.row1 - matrix2.row1,
|
||||
matrix1.row2 - matrix2.row2,
|
||||
matrix1.row3 - matrix2.row3,
|
||||
matrix1.row4 - matrix2.row4
|
||||
);
|
||||
}
|
||||
|
||||
@@ -98,54 +98,7 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static unsafe Matrix4x4 operator *(Matrix4x4 array1, Matrix4x4 array2)
|
||||
{
|
||||
float* p1 = &array1.row1.X;
|
||||
float* p2 = &array2.row1.X;
|
||||
|
||||
Matrix2x2 a11 = new Matrix2x2(*p1,*(p1 + 1),*(p1 + 4),*(p1 + 5));
|
||||
Matrix2x2 a12 = new Matrix2x2(*(p1 + 2), *(p1 + 3),*(p1 + 6),*(p1 + 7));
|
||||
Matrix2x2 a21 = new Matrix2x2(*(p1 + 8), *(p1 + 9),*(p1 + 12),*(p1 + 13));
|
||||
Matrix2x2 a22 = new Matrix2x2(*(p1 + 10), *(p1 + 11),*(p1 + 14),*(p1 + 15));
|
||||
|
||||
Matrix2x2 b11 = new Matrix2x2(*p1, *(p1 + 1), *(p1 + 4), *(p1 + 5));
|
||||
Matrix2x2 b12 = new Matrix2x2(*(p1 + 2), *(p1 + 3), *(p1 + 6), *(p1 + 7));
|
||||
Matrix2x2 b21 = new Matrix2x2(*(p1 + 8), *(p1 + 9), *(p1 + 12), *(p1 + 13));
|
||||
Matrix2x2 b22 = new Matrix2x2(*(p1 + 10), *(p1 + 11), *(p1 + 14), *(p1 + 15));
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = a11 * b11;
|
||||
var m2 = a12 * b11;
|
||||
var m3 = s4 * b22;
|
||||
var m4 = a22 * t4;
|
||||
var m5 = s1 * t1;
|
||||
var m6 = s2 * t2;
|
||||
var m7 = s3 * t3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix4x4(
|
||||
new Vec4D(u1.row1,u5.row1),
|
||||
new Vec4D(u1.row2,u5.row2),
|
||||
new Vec4D(u6.row1,u7.row1),
|
||||
new Vec4D(u6.row2,u7.row2)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -77,17 +77,7 @@ namespace StgSharp.Math
|
||||
|
||||
public static Vec2D operator -(Vec2D vec1, Vec2D vec2)
|
||||
{
|
||||
return new Vec2D(vec1.X + vec2.X, vec1.Y + vec2.Y);
|
||||
}
|
||||
|
||||
public static float operator *(Vec2D vec1, Vec2D vec2)
|
||||
{
|
||||
return vec1.X * vec2.X + vec1.Y*vec2.Y;
|
||||
}
|
||||
|
||||
public static float operator *(Vec2D vec, Colum2D colum)
|
||||
{
|
||||
return vec.X * colum.Y + vec.Y * colum.X;
|
||||
return new Vec2D(vec1.X - vec2.X, vec1.Y - vec2.Y);
|
||||
}
|
||||
|
||||
public static Vec2D operator *(Vec2D vec, float x)
|
||||
|
||||
@@ -20,23 +20,23 @@ namespace StgSharp.Math
|
||||
[FieldOffset(12)]
|
||||
public float W;
|
||||
|
||||
|
||||
[FieldOffset(0)]
|
||||
public Vec2D Point1;
|
||||
[FieldOffset(8)]
|
||||
public Vec2D Point2;
|
||||
|
||||
public Vec4D(float x,float y,float z,float w)
|
||||
|
||||
public Vec4D(float a1,float a2,float a3,float a4)
|
||||
{
|
||||
Point1 = new Vec2D();
|
||||
Point2 = new Vec2D();
|
||||
Point1= default(Vec2D);
|
||||
Point2= default(Vec2D);
|
||||
|
||||
X = x;
|
||||
Y = y;
|
||||
Z = z;
|
||||
W = w;
|
||||
X = a1;
|
||||
Y = a2;
|
||||
Z = a3;
|
||||
W = a4;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Vec4D(Vec2D p1,Vec2D p2)
|
||||
{
|
||||
X= 0;
|
||||
@@ -47,6 +47,7 @@ namespace StgSharp.Math
|
||||
Point1= p1;
|
||||
Point2 = p2;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
@@ -71,9 +72,10 @@ namespace StgSharp.Math
|
||||
}
|
||||
else
|
||||
{
|
||||
return
|
||||
this.Point1 == other.Point1
|
||||
&& this.Point2 == other.Point2;
|
||||
return this.X == other.X
|
||||
&& this.Y == other.Y
|
||||
&& this.Z == other.Z
|
||||
&& this.W == other.Z;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +86,7 @@ namespace StgSharp.Math
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{X}\t{Y}\t{Y}\t{Y}";
|
||||
return $"{X}\t{Y}\t{Z}\t{W}";
|
||||
}
|
||||
|
||||
public static bool operator ==(Vec4D vec1, Vec4D vec2)
|
||||
|
||||
@@ -16,23 +16,23 @@ namespace StgSharp.Math
|
||||
{
|
||||
float* p = &array.row1.X;
|
||||
|
||||
Matrix2x2 array1 = new Matrix2x2(
|
||||
Matrix2x2 matrix1 = new Matrix2x2(
|
||||
*(p + 4), *(p + 5),
|
||||
*(p + 7), *(p + 8)
|
||||
);
|
||||
Matrix2x2 array2 = new Matrix2x2(
|
||||
Matrix2x2 matrix2 = new Matrix2x2(
|
||||
*(p + 3), *(p + 5),
|
||||
*(p + 6), *(p + 8)
|
||||
);
|
||||
Matrix2x2 array3 = new Matrix2x2(
|
||||
Matrix2x2 matrix3 = new Matrix2x2(
|
||||
*(p + 3), *(p + 4),
|
||||
*(p + 6), *(p + 7)
|
||||
);
|
||||
|
||||
return
|
||||
*p * Det(array1)
|
||||
- *(p + 1) * Det(array2)
|
||||
+ *(p + 2) * Det(array3)
|
||||
*p * Det(matrix1)
|
||||
- *(p + 1) * Det(matrix2)
|
||||
+ *(p + 2) * Det(matrix3)
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace StgSharp.Math
|
||||
public static float GetAngle(Vec2D vec1, Vec2D vec2)
|
||||
{
|
||||
return Calc.ACos(
|
||||
vec1 * vec2
|
||||
vec1 .multiple(vec2)
|
||||
/ (vec1.GetLength() * vec2.GetLength())
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6,10 +6,11 @@ namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Vector
|
||||
{
|
||||
|
||||
/*
|
||||
public static Vec2D GetVector(Vec4D pointPair)
|
||||
{
|
||||
return pointPair.Point2-pointPair.Point1;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,615 @@ namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class VectorCalc
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="colum"></param>
|
||||
/// <param name="vec"></param>
|
||||
/// <returns></returns>
|
||||
public static Matrix2x2 multiple(this Colum2D colum, Vec2D vec)
|
||||
{
|
||||
return new Matrix2x2(
|
||||
colum.X * vec.X, colum.X * vec.Y,
|
||||
colum.Y * vec.X, colum.Y * vec.Y
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="vec1"></param>
|
||||
/// <param name="vec2"></param>
|
||||
/// <returns></returns>
|
||||
public static float multiple(this Vec2D vec1, Vec2D vec2)
|
||||
{
|
||||
return vec1.X * vec2.X + vec1.Y * vec2.Y;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="vec"></param>
|
||||
/// <param name="colum"></param>
|
||||
/// <returns></returns>
|
||||
public static float multiple(this Vec2D vec, Colum2D colum)
|
||||
{
|
||||
return vec.X * colum.X + vec.Y * colum.Y;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="vec"></param>
|
||||
/// <param name="matrix"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Vec2D multiple(this Vec2D vec, Matrix2x2 matrix)
|
||||
{
|
||||
return new Vec2D(
|
||||
vec.X * matrix.row1.X + vec.Y * matrix.row2.X,
|
||||
vec.X * matrix.row1.Y + vec.Y * matrix.row2.Y
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix"></param>
|
||||
/// <param name="colum"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Colum2D multiple(this Matrix2x2 matrix, Colum2D colum)
|
||||
{
|
||||
float* p1 = &matrix.row1.X;
|
||||
float* p2 = &colum.X;
|
||||
|
||||
return new Colum2D(
|
||||
*(p1 + 0) * *(p2 + 0) + *(p1 + 1) * *(p2 + 1),
|
||||
*(p1 + 2) * *(p2 + 0) + *(p1 + 3) * *(p2 + 1)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix2x2 multiple(this Matrix2x2 matrix1, Matrix2x2 matrix2)
|
||||
{
|
||||
float* a11 = &matrix1.row1.X;
|
||||
float* a12 = &matrix1.row1.Y;
|
||||
float* a21 = &matrix1.row2.X;
|
||||
float* a22 = &matrix1.row2.Y;
|
||||
|
||||
float* b11 = &matrix2.row1.X;
|
||||
float* b12 = &matrix2.row1.Y;
|
||||
float* b21 = &matrix2.row2.X;
|
||||
float* b22 = &matrix2.row2.Y;
|
||||
|
||||
var s1 = *a21 + *a22;
|
||||
var s2 = s1 - *a11;
|
||||
var s3 = *a11 - *a21;
|
||||
var s4 = *a12 - s2;
|
||||
|
||||
Console.WriteLine($"{s1}\t{s2}\t{s3}\t{s4}\n");
|
||||
|
||||
var t1 = *b12 - *b11;
|
||||
var t2 = *b22 - t1;
|
||||
var t3 = *b22 - *b12;
|
||||
var t4 = t2 - *b21;
|
||||
|
||||
var m1 = *a11 * *b11;
|
||||
var m2 = *a12 * *b21;
|
||||
var m3 = s4 * *b22;
|
||||
var m4 = *a22 * t4;
|
||||
var m5 = s1 * t1;
|
||||
var m6 = s2 * t2;
|
||||
var m7 = s3 * t3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix2x2(u1, u5, u6, u7);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix2x3 multiple(this Matrix2x2 matrix1, Matrix2x3 matrix2)
|
||||
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
float a11 = *p1;
|
||||
float a12 = *(p1 + 1);
|
||||
float a21 = *(p1 + 2);
|
||||
float a22 = *(p1 + 3);
|
||||
|
||||
Vec2D b11 = new Vec2D(*(p2 + 0), *(p2 + 1));
|
||||
Vec2D b12 = new Vec2D(*(p2 + 2), 0);
|
||||
Vec2D b21 = new Vec2D(*(p2 + 3), *(p2 + 4));
|
||||
Vec2D b22 = new Vec2D(*(p2 + 5), 0);
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = b11 * a11;
|
||||
var m2 = b21 * a12;
|
||||
var m3 = b22 * s4;
|
||||
var m4 = t4 * a22;
|
||||
var m5 = t1 * s1;
|
||||
var m6 = t2 * s2;
|
||||
var m7 = t3 * s3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix2x3(
|
||||
u1.X, u1.Y, u5.X,
|
||||
u6.X, u6.Y, u7.X
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix2x4 multiple(this Matrix2x2 matrix1, Matrix2x4 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
float a11 = *p1;
|
||||
float a12 = *(p1 + 1);
|
||||
float a21 = *(p1 + 2);
|
||||
float a22 = *(p1 + 3);
|
||||
|
||||
Vec2D b11 = new Vec2D(*(p2 + 0), *(p2 + 1));
|
||||
Vec2D b12 = new Vec2D(*(p2 + 2), *(p2 + 3));
|
||||
Vec2D b21 = new Vec2D(*(p2 + 4), *(p2 + 5));
|
||||
Vec2D b22 = new Vec2D(*(p2 + 6), *(p2 + 7));
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = b11 * a11;
|
||||
var m2 = b21 * a12;
|
||||
var m3 = b22 * s4;
|
||||
var m4 = t4 * a22;
|
||||
var m5 = t1 * s1;
|
||||
var m6 = t2 * s2;
|
||||
var m7 = t3 * s3;
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix2x4(
|
||||
u1.X, u1.Y, u5.X, u5.Y,
|
||||
u6.X, u6.Y, u7.X, u7.Y
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix"></param>
|
||||
/// <param name="vec"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Colum2D multiple(this Matrix2x3 matrix, Colum3D vec)
|
||||
{
|
||||
return new Colum2D(
|
||||
matrix.row1.X * vec.X + matrix.row1.Y * vec.Y + matrix.row1.Z * vec.Z,
|
||||
matrix.row2.X * vec.X + matrix.row2.Y * vec.Y + matrix.row2.Z * vec.Z
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix2x2 multiple(this Matrix2x3 matrix1, Matrix3x2 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
Matrix2x2 a1 = new Matrix2x2(*(p1 + 0), *(p1 + 1), *(p1 + 3), *(p1 + 4));
|
||||
Colum2D a2 = new Colum2D(*(p1 + 2), *(p1 + 5));
|
||||
|
||||
Matrix2x2 b1 = new Matrix2x2(*(p2 + 0), *(p2 + 1), *(p2 + 2), *(p2 + 3));
|
||||
Vec2D b2 = new Vec2D(*(p2 + 4), *(p2 + 5));
|
||||
|
||||
return a1.multiple(b1) + a2.multiple(b2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix2x2 multiple(this Matrix2x4 matrix1, Matrix4x2 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
Vec2D a11 = new Vec2D(*(p1 + 0), *(p1 + 1));
|
||||
Vec2D a12 = new Vec2D(*(p1 + 2), *(p1 + 3));
|
||||
Vec2D a21 = new Vec2D(*(p1 + 4), *(p1 + 5));
|
||||
Vec2D a22 = new Vec2D(*(p1 + 6), *(p1 + 7));
|
||||
|
||||
Colum2D b11 = new Colum2D(*(p2 + 0), *(p2 + 2));
|
||||
Colum2D b12 = new Colum2D(*(p2 + 1), *(p2 + 3));
|
||||
Colum2D b21 = new Colum2D(*(p2 + 4), *(p2 + 6));
|
||||
Colum2D b22 = new Colum2D(*(p2 + 5), *(p2 + 7));
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = a11.multiple(b11);
|
||||
var m2 = a12.multiple(b21);
|
||||
var m3 = s4.multiple(b22);
|
||||
var m4 = a22.multiple(t4);
|
||||
var m5 = s1.multiple(t1);
|
||||
var m6 = s2.multiple(t2);
|
||||
var m7 = s3.multiple(t3);
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix2x2(u1, u5, u6, u7);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix2x3 multiple(this Matrix2x4 matrix1, Matrix4x3 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
return new Matrix2x3(
|
||||
getMatrixMember(p1,p2), getMatrixMember(p1, p2+1), getMatrixMember(p1, p2+2),
|
||||
getMatrixMember(p1+4, p2), getMatrixMember(p1+4, p2+1), getMatrixMember(p1+4, p2 + 2)
|
||||
);
|
||||
|
||||
static float getMatrixMember(float* p1, float* p2)
|
||||
{
|
||||
float result = 0;
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
result += *p1 * *p2;
|
||||
p1 += 1;
|
||||
p2 += 3;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static unsafe Matrix3x3 multiple(this Matrix3x2 matrix1, Matrix2x3 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row2.X;
|
||||
|
||||
Matrix2x2 a1 = new Matrix2x2(*(p1 + 0), *(p1 + 1), *(p1 + 2), *(p1 + 3));
|
||||
Vec2D a2 = new Vec2D(*(p1 + 4), *(p1 + 5));
|
||||
|
||||
Matrix2x2 b1 = new Matrix2x2(*(p2 + 0), *(p2 + 1), *(p2 + 3), *(p2 + 4));
|
||||
Colum2D b2 = new Colum2D(*(p2 + 2), *(p2 + 5));
|
||||
|
||||
var m11 = a1.multiple(b1);
|
||||
var m12 = a1.multiple(b2);
|
||||
var m21 = a2.multiple(b1);
|
||||
var m22 = a2.multiple(b2);
|
||||
|
||||
float* p3 = &m11.row1.X;
|
||||
|
||||
return new Matrix3x3(
|
||||
*(p1 + 0), *(p1 + 1),m12.X,
|
||||
*(p1 + 2), *(p1 + 3),m12.Y,
|
||||
m21.X, m21.X, m22
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix3x3 multiple(this Matrix3x3 matrix1, Matrix3x3 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
Matrix2x2 a11 = new Matrix2x2(*(p1 + 0), *(p1 + 1), *(p1 + 3), *(p1 + 4));
|
||||
Colum2D a12 = new Colum2D(*(p1 + 2), *(p1 + 5));
|
||||
Vec2D a21 = new Vec2D(*(p1 + 6), *(p1 + 7));
|
||||
float a22 = *(p1 + 8);
|
||||
|
||||
Matrix2x2 b11 = new Matrix2x2(*(p2 + 0), *(p2 + 1), *(p2 + 3), *(p2 + 4));
|
||||
Colum2D b12 = new Colum2D(*(p2 + 2), *(p2 + 5));
|
||||
Vec2D b21 = new Vec2D(*(p2 + 6), *(p2 + 7));
|
||||
float b22 = *(p2 + 8);
|
||||
|
||||
var c11 = a11.multiple(b11) + a12.multiple(b21);
|
||||
var c12 = a11.multiple(b12) + a12 * b22;
|
||||
var c21 = a21.multiple(b11) + b21 * a22;
|
||||
var c22 = a21.multiple(b12) + a22 * b22;
|
||||
|
||||
float* p = &(c11.row1.X);
|
||||
|
||||
return new Matrix3x3(
|
||||
*(p + 0), *(p + 1), c12.X,
|
||||
*(p + 2), *(p + 3), c12.Y,
|
||||
c21.X, c21.Y, c22
|
||||
);
|
||||
}
|
||||
|
||||
public static unsafe Matrix3x2 multiple(this Matrix3x4 matrix1, Matrix4x2 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
Matrix2x2 a11 = new Matrix2x2(*(p1 + 0), *(p1 + 1), *(p1 + 4), *(p1 + 5));
|
||||
Matrix2x2 a12 = new Matrix2x2(*(p1 + 2), *(p1 + 3), *(p1 + 6), *(p1 + 7));
|
||||
Vec2D a21 = new Vec2D(*(p1 + 8), *(p1 + 9));
|
||||
Vec2D a22 = new Vec2D(*(p1 + 10), *(p1 + 11));
|
||||
|
||||
Matrix2x2 b1 = new Matrix2x2(*(p2 + 0), *(p2 + 1), *(p2 + 2), *(p2 + 3));
|
||||
Matrix2x2 b2 = new Matrix2x2(*(p2 + 4), *(p2 + 5), *(p2 + 6), *(p2 + 7));
|
||||
|
||||
var c1 = a11.multiple(b1) + a12.multiple(b1);
|
||||
var c2 = a21.multiple(b2) + a22.multiple(b2);
|
||||
|
||||
return new Matrix3x2(c1.row1,c1.row2,c2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix3x3 multiple(this Matrix3x4 matrix1, Matrix4x3 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
Matrix2x2 a11 = new Matrix2x2(
|
||||
*(p1 + 0), *(p1 + 1), *(p1 + 4), *(p1 + 5)
|
||||
);
|
||||
Matrix2x2 a12 = new Matrix2x2(
|
||||
*(p1 + 2), *(p1 + 3), *(p1 + 6), *(p1 + 7)
|
||||
);
|
||||
Vec2D a21 = new Vec2D(*(p1 + 8), *(p1 + 9));
|
||||
Vec2D a22 = new Vec2D(*(p1 + 10), *(p1 + 11));
|
||||
|
||||
Matrix2x2 b11 = new Matrix2x2(
|
||||
*(p2 + 0), *(p2 + 1), *(p2 + 3), *(p2 + 4)
|
||||
);
|
||||
Colum2D b12 = new Colum2D(*(p2 + 2), *(p2 + 5));
|
||||
Matrix2x2 b21 = new Matrix2x2(
|
||||
*(p2 + 6), *(p2 + 7), *(p2 + 9), *(p2 + 10)
|
||||
);
|
||||
Colum2D b22 = new Colum2D(*(p2 + 8), *(p2 + 11));
|
||||
|
||||
var c11 = a11.multiple(b11) + a12.multiple(b21);
|
||||
var c12 = a11.multiple(b12) + a12.multiple(b22);
|
||||
var c21 = a21.multiple(b11) + a22.multiple(b21);
|
||||
var c22 = a21.multiple(b12) + a22.multiple(b22);
|
||||
|
||||
float* pc1 = &c11.row1.X;
|
||||
|
||||
return new Matrix3x3(
|
||||
*(pc1 + 0), *(pc1 + 1), c12.X,
|
||||
*(pc1 + 2), *(pc1 + 3), c12.Y,
|
||||
c21.X, c21.Y, c22
|
||||
);
|
||||
}
|
||||
|
||||
public static unsafe Matrix3x4 multiple(this Matrix3x4 matrix1, Matrix4x4 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
var a11 = new Matrix2x2(matrix1.row1.Point1,matrix1.row2.Point1);
|
||||
var a12 = new Matrix2x2(matrix1.row1.Point2,matrix1.row2.Point2);
|
||||
var a21 = matrix1.row3.Point1;
|
||||
var a22 = matrix1.row3.Point2;
|
||||
|
||||
var b11 = new Matrix2x2(matrix2.row1.Point1, matrix2.row2.Point1);
|
||||
var b12 = new Matrix2x2(matrix2.row1.Point2, matrix2.row2.Point2);
|
||||
var b21 = new Matrix2x2(matrix2.row3.Point1, matrix2.row4.Point1);
|
||||
var b22 = new Matrix2x2(matrix2.row3.Point2, matrix2.row4.Point2);
|
||||
|
||||
var c1 = a11.multiple(b11) + a12.multiple(b21);
|
||||
var c2 = a11.multiple(b12) + a12.multiple(b22);
|
||||
var c3 = a21.multiple(b11) + a22.multiple(b21);
|
||||
var c4 = a21.multiple(b12) + a22.multiple(b22);
|
||||
|
||||
return new Matrix3x4(
|
||||
new Vec4D(c1.row1,c2.row1),
|
||||
new Vec4D(c1.row2,c2.row2),
|
||||
new Vec4D(c3,c4)
|
||||
) ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix4x4 multiple(this Matrix4x2 matrix1, Matrix2x4 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
Colum2D a11 = new Colum2D(*(p1 + 0), *(p1 + 2));
|
||||
Colum2D a12 = new Colum2D(*(p1 + 1), *(p1 + 3));
|
||||
Colum2D a21 = new Colum2D(*(p1 + 4), *(p1 + 6));
|
||||
Colum2D a22 = new Colum2D(*(p1 + 5), *(p1 + 7));
|
||||
|
||||
Vec2D b11 = new Vec2D(*(p2 + 0), *(p2 + 1));
|
||||
Vec2D b12 = new Vec2D(*(p2 + 2), *(p2 + 3));
|
||||
Vec2D b21 = new Vec2D(*(p2 + 4), *(p2 + 5));
|
||||
Vec2D b22 = new Vec2D(*(p2 + 6), *(p2 + 7));
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = a11.multiple(b11);
|
||||
var m2 = a12.multiple(b21);
|
||||
var m3 = s4.multiple(b22);
|
||||
var m4 = a22.multiple(t4);
|
||||
var m5 = s1.multiple(t1);
|
||||
var m6 = s2.multiple(t2);
|
||||
var m7 = s3.multiple(t3);
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix4x4(
|
||||
new Vec4D(u1.row1.X, u1.row1.Y, u5.row1.X, u5.row1.Y),
|
||||
new Vec4D(u1.row2.X, u1.row2.Y, u5.row2.X, u5.row2.Y),
|
||||
new Vec4D(u6.row1.X, u6.row1.Y, u7.row1.X, u7.row1.Y),
|
||||
new Vec4D(u6.row2.X, u6.row2.Y, u7.row2.X, u7.row2.Y)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="matrix1"></param>
|
||||
/// <param name="matrix2"></param>
|
||||
/// <returns></returns>
|
||||
public static unsafe Matrix4x4 multiple(this Matrix4x4 matrix1, Matrix4x4 matrix2)
|
||||
{
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
Matrix2x2 a11 = new Matrix2x2(*p1, *(p1 + 1), *(p1 + 4), *(p1 + 5));
|
||||
Matrix2x2 a12 = new Matrix2x2(*(p1 + 2), *(p1 + 3), *(p1 + 6), *(p1 + 7));
|
||||
Matrix2x2 a21 = new Matrix2x2(*(p1 + 8), *(p1 + 9), *(p1 + 12), *(p1 + 13));
|
||||
Matrix2x2 a22 = new Matrix2x2(*(p1 + 10), *(p1 + 11), *(p1 + 14), *(p1 + 15));
|
||||
|
||||
Matrix2x2 b11 = new Matrix2x2(*p1, *(p1 + 1), *(p1 + 4), *(p1 + 5));
|
||||
Matrix2x2 b12 = new Matrix2x2(*(p1 + 2), *(p1 + 3), *(p1 + 6), *(p1 + 7));
|
||||
Matrix2x2 b21 = new Matrix2x2(*(p1 + 8), *(p1 + 9), *(p1 + 12), *(p1 + 13));
|
||||
Matrix2x2 b22 = new Matrix2x2(*(p1 + 10), *(p1 + 11), *(p1 + 14), *(p1 + 15));
|
||||
|
||||
var s1 = a21 + a22;
|
||||
var s2 = s1 - a11;
|
||||
var s3 = a11 - a21;
|
||||
var s4 = a12 - s2;
|
||||
|
||||
var t1 = b12 - b11;
|
||||
var t2 = b22 - t1;
|
||||
var t3 = b22 - b12;
|
||||
var t4 = t2 - b21;
|
||||
|
||||
var m1 = a11.multiple(b11);
|
||||
var m2 = a12.multiple(b21);
|
||||
var m3 = s4.multiple(b22);
|
||||
var m4 = a22.multiple(t4);
|
||||
var m5 = s1.multiple(t1);
|
||||
var m6 = s2.multiple(t2);
|
||||
var m7 = s3.multiple(t3);
|
||||
|
||||
var u1 = m1 + m2;
|
||||
var u2 = m1 + m6;
|
||||
var u3 = u2 + m7;
|
||||
var u4 = u2 + m5;
|
||||
var u5 = u4 + m3;
|
||||
var u6 = u3 - m4;
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new Matrix4x4(
|
||||
new Vec4D(u1.row1.X, u1.row1.Y, u5.row1.X, u5.row1.Y),
|
||||
new Vec4D(u1.row2.X, u1.row2.Y, u5.row2.X, u5.row2.Y),
|
||||
new Vec4D(u6.row1.X, u6.row1.Y, u7.row1.X, u7.row1.Y),
|
||||
new Vec4D(u6.row2.X, u6.row2.Y, u7.row2.X, u7.row2.Y)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -43,5 +43,125 @@
|
||||
<param name="y"></param>
|
||||
<returns>Returns the value of x^y</returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Colum2D,StgSharp.Math.Vec2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="colum"></param>
|
||||
<param name="vec"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Vec2D,StgSharp.Math.Vec2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="vec1"></param>
|
||||
<param name="vec2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Vec2D,StgSharp.Math.Colum2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="vec"></param>
|
||||
<param name="colum"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Vec2D,StgSharp.Math.Matrix2x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="vec"></param>
|
||||
<param name="matrix"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Colum2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix"></param>
|
||||
<param name="colum"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Matrix2x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Matrix2x3)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Matrix2x4)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x3,StgSharp.Math.Colum3D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix"></param>
|
||||
<param name="vec"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x3,StgSharp.Math.Matrix3x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x4,StgSharp.Math.Matrix4x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x4,StgSharp.Math.Matrix4x3)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix3x3,StgSharp.Math.Matrix3x3)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix4x2,StgSharp.Math.Matrix2x4)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix4x4,StgSharp.Math.Matrix4x4)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
@@ -1 +1 @@
|
||||
f462f03e342399957b6cf64914e0bf4b0a78ac84
|
||||
0b8c0a7b886549f6ada3150538cfdb0d2275591c
|
||||
|
||||
@@ -31,3 +31,8 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\obj\Debug\netstandard2.1\refint\StgSharp.dll
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\obj\Debug\netstandard2.1\StgSharp.xml
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\obj\Debug\netstandard2.1\StgSharp.pdb
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\bin\Debug\netstandard2.1\StgSharp.deps.json
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\bin\Debug\netstandard2.1\StgSharp.dll
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\bin\Debug\netstandard2.1\StgSharp.pdb
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\bin\Debug\netstandard2.1\StgSharp.xml
|
||||
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp\obj\Debug\netstandard2.1\ref\StgSharp.dll
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -43,5 +43,125 @@
|
||||
<param name="y"></param>
|
||||
<returns>Returns the value of x^y</returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Colum2D,StgSharp.Math.Vec2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="colum"></param>
|
||||
<param name="vec"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Vec2D,StgSharp.Math.Vec2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="vec1"></param>
|
||||
<param name="vec2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Vec2D,StgSharp.Math.Colum2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="vec"></param>
|
||||
<param name="colum"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Vec2D,StgSharp.Math.Matrix2x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="vec"></param>
|
||||
<param name="matrix"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Colum2D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix"></param>
|
||||
<param name="colum"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Matrix2x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Matrix2x3)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x2,StgSharp.Math.Matrix2x4)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x3,StgSharp.Math.Colum3D)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix"></param>
|
||||
<param name="vec"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x3,StgSharp.Math.Matrix3x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x4,StgSharp.Math.Matrix4x2)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix2x4,StgSharp.Math.Matrix4x3)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix3x3,StgSharp.Math.Matrix3x3)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix4x2,StgSharp.Math.Matrix2x4)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StgSharp.Math.VectorCalc.multiple(StgSharp.Math.Matrix4x4,StgSharp.Math.Matrix4x4)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="matrix1"></param>
|
||||
<param name="matrix2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user