Ported LinearTriangulate
This commit is contained in:
		
							parent
							
								
									f479cfc8fa
								
							
						
					
					
						commit
						b56a010725
					
				| @ -1,3 +1,5 @@ | ||||
| using Vector3 = UnityEngine.Vector3; | ||||
| 
 | ||||
| public class Matrix { | ||||
|     private readonly uint rows = 0; | ||||
|     private readonly uint cols = 0; | ||||
| @ -114,6 +116,28 @@ public class Matrix { | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     public static Vector3 MultiplyMatrixVector3(float[,] A, Vector3 v) { | ||||
|         return new Vector3() { | ||||
|             x = A[0, 0] * v.x + A[0, 1] * v.y + A[0, 2] * v.z, | ||||
|             y = A[1, 0] * v.x + A[1, 1] * v.y + A[1, 2] * v.z, | ||||
|             z = A[2, 0] * v.x + A[2, 1] * v.y + A[2, 2] * v.z | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     public static float[,] MultiplyMatrixScalar(float[,] A, float s) { | ||||
|         int rows = A.GetLength(0); | ||||
|         int cols = A.GetLength(1); | ||||
|         float[,] result = new float[rows, cols]; | ||||
| 
 | ||||
|         for (int i = 0; i < rows; i++) { | ||||
|             for (int j = 0; j < cols; j++) { | ||||
|                 result[i, j] += A[i, j] * s; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     public static float[] GetColumn(float[,] M, int col) { | ||||
|         int rows = M.GetLength(0); | ||||
|         float[] column = new float[rows]; | ||||
| @ -123,6 +147,21 @@ public class Matrix { | ||||
|         return column; | ||||
|     } | ||||
| 
 | ||||
|     public static Vector3 GetRow3(float[,] M, int rowIx) { | ||||
|         int cols = M.GetLength(1); | ||||
|         Vector3 row = new(); | ||||
|         row.x = M[rowIx, 0]; | ||||
|         row.y = M[rowIx, 1]; | ||||
|         row.z = M[rowIx, 2]; | ||||
|         return row; | ||||
|     } | ||||
| 
 | ||||
|     public static void SetRow3(float[,] M, int rowIx, Vector3 v) { | ||||
|         M[rowIx, 0] = v.x; | ||||
|         M[rowIx, 1] = v.y; | ||||
|         M[rowIx, 2] = v.z; | ||||
|     } | ||||
| 
 | ||||
|     public static float Dot(float[] a, float[] b) { | ||||
|         float sum = 0; | ||||
|         for (int i = 0; i < a.Length; i++) sum += a[i] * b[i]; | ||||
| @ -134,4 +173,5 @@ public class Matrix { | ||||
|         for (int i = 0; i < size; i++) I[i, i] = 1.0f; | ||||
|         return I; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Pascal Serrarens
						Pascal Serrarens