daily update on 20230309 by nitload youmu

This commit is contained in:
Nitload
2023-03-10 01:57:31 +08:00
parent 11cdd85b3b
commit 561196bed2
53 changed files with 1491 additions and 360 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -7
View File
@@ -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)
{
+123
View File
@@ -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
);
}
}
}
+49
View File
@@ -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();
}
}
}
+9 -46
View File
@@ -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);
}
}
}
+16 -51
View File
@@ -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(
);
}
}
}
+15 -50
View File
@@ -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);
}
}
}
+25 -15
View File
@@ -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
);
}
+25 -45
View File
@@ -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)
{
+83
View File
@@ -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}";
}
}
}
+14 -48
View File
@@ -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)
);
}
}
}
+77
View File
@@ -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();
}
}
}
+14 -61
View File
@@ -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)
);
}
}
+1 -11
View File
@@ -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)
+16 -14
View File
@@ -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)
+6 -6
View File
@@ -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)
;
}
}
+1 -1
View File
@@ -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)
);
}
}
}
@@ -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
@@ -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>
+8 -1
View File
@@ -7,8 +7,15 @@ internal class Program
{
private unsafe static void Main(string[] args)
{
var a = new Matrix3x4(1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6);
var b = new Matrix4x3(1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6);
var c = new Colum2D(1, 2);
var d = new Vec2D(1, 2);
var e = new Vec3D(1,2,3);
Console.WriteLine(a);
Console.WriteLine("\n");
Console.WriteLine(a.multiple(b));
}
}
@@ -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 @@
3655dd388a44aa06ff12e220d674702ff529842b
70ee143f101c68f31939cbfec5000b9894b6dc91
@@ -48,3 +48,32 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\.Net\Stg
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\.Net\StgSharpDebug\bin\Debug\net6.0\runtimes\osx-x86\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\.Net\StgSharpDebug\bin\Debug\net6.0\runtimes\win-x64\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\.Net\StgSharpDebug\bin\Debug\net6.0\runtimes\win-x86\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.csproj.AssemblyReference.cache
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.AssemblyInfoInputs.cache
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.AssemblyInfo.cs
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.csproj.CoreCompileInputs.cache
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\refint\StgSharpDebug.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.pdb
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharpDebug.exe
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharpDebug.deps.json
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharpDebug.runtimeconfig.json
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharpDebug.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharpDebug.pdb
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\GLFWDotNet.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\win-x64\native\glfw3.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\win-x86\native\glfw3.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\linux-x64\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\linux-x86\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\osx-x64\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\osx-x86\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\win-x64\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\runtimes\win-x86\lib\netstandard2.1\Steamworks.NET.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharp.dll
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharp.pdb
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\Debug\net6.0\StgSharp.xml
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.csproj.CopyComplete
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\StgSharpDebug.genruntimeconfig.cache
D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\Debug\net6.0\ref\StgSharpDebug.dll
@@ -1 +1 @@
33e257f8ecaa3bfbc209f4ef81f95ad4e8b75140
a9b27855a09b37d2383b24daf1d8cece33fa658d