Ported LinearTriangulate
This commit is contained in:
		
							parent
							
								
									f479cfc8fa
								
							
						
					
					
						commit
						b56a010725
					
				| @ -1,3 +1,5 @@ | |||||||
|  | using Vector3 = UnityEngine.Vector3; | ||||||
|  | 
 | ||||||
| public class Matrix { | public class Matrix { | ||||||
|     private readonly uint rows = 0; |     private readonly uint rows = 0; | ||||||
|     private readonly uint cols = 0; |     private readonly uint cols = 0; | ||||||
| @ -114,6 +116,28 @@ public class Matrix { | |||||||
|         return result; |         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) { |     public static float[] GetColumn(float[,] M, int col) { | ||||||
|         int rows = M.GetLength(0); |         int rows = M.GetLength(0); | ||||||
|         float[] column = new float[rows]; |         float[] column = new float[rows]; | ||||||
| @ -123,6 +147,21 @@ public class Matrix { | |||||||
|         return column; |         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) { |     public static float Dot(float[] a, float[] b) { | ||||||
|         float sum = 0; |         float sum = 0; | ||||||
|         for (int i = 0; i < a.Length; i++) sum += a[i] * b[i]; |         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; |         for (int i = 0; i < size; i++) I[i, i] = 1.0f; | ||||||
|         return I; |         return I; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
| } | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Pascal Serrarens
						Pascal Serrarens