Maths 2D-3D Matrix
Posted: Sun Sep 10, 2006 8:14 pm
Code updated For 5.20+
Hello everyone. For one of my top secret project I need to create a 3D Matrix to store some data. I have added the 2D matrix and some basic operation at the same time.
You are free to use, edit or modify. I hope this code can be usefull for some one.
Regards
Guimauve
Hello everyone. For one of my top secret project I need to create a 3D Matrix to store some data. I have added the 2D matrix and some basic operation at the same time.
You are free to use, edit or modify. I hope this code can be usefull for some one.
Regards
Guimauve
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Matrice à 2 ou 3 Dimensions
; Fichier : Code Prototype à ajuster au besoin.
; Version : 1.0.0
; Programmation = OK
; Programmé par : Guimauve
; Date : 10-09-2006
; Mise à jour : 10-09-2006
; Codé avec PureBasic V4.00
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Array_Size = 5
Structure Vector
Coords.d[#Array_Size]
EndStructure
Structure Matrix2D
Lines.Vector[#Array_Size]
EndStructure
Structure Matrix3D
Stratums.Matrix2D[#Array_Size]
EndStructure
; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Access macros >>>>>
Macro AccessMatrix2D(MatrixA, i, j)
MatrixA\Lines[i]\Coords[j]
EndMacro
Macro AccessMatrix3D(MatrixA, i, j, k)
MatrixA\Stratums[i]\Lines[j]\Coords[k]
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Plus operator R = A + B >>>>>
Macro PlusMatrix2D(MatrixR, MatrixA, MatrixB)
For i = 0 To #Array_Size -1
For j = 0 To #Array_Size -1
AccessMatrix2D(MatrixR, i, j) = AccessMatrix2D(MatrixA, i, j) + AccessMatrix2D(MatrixB, i, j)
Next
Next
EndMacro
Macro PlusMatrix3D(MatrixR, MatrixA, MatrixB)
For i = 0 To #Array_Size -1
For j = 0 To #Array_Size -1
For k = 0 To #Array_Size -1
AccessMatrix3D(MatrixR, i, j, k) = AccessMatrix3D(MatrixA, i, j, k) + AccessMatrix3D(MatrixB, i, j, k)
Next
Next
Next
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Minus operator R = A - B >>>>>
Macro MinusMatrix2D(MatrixR, MatrixA, MatrixB)
For i = 0 To #Array_Size -1
For j = 0 To #Array_Size -1
AccessMatrix2D(MatrixR, i, j) = AccessMatrix2D(MatrixA, i, j) - AccessMatrix2D(MatrixB, i, j)
Next
Next
EndMacro
Macro MinusMatrix3D(MatrixR, MatrixA, MatrixB)
For i = 0 To #Array_Size -1
For j = 0 To #Array_Size -1
For k = 0 To #Array_Size -1
AccessMatrix3D(MatrixR, i, j, k) = AccessMatrix3D(MatrixA, i, j, k) - AccessMatrix3D(MatrixB, i, j, k)
Next
Next
Next
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Zero operator >>>>>
Macro ZeroMatrix2D(MatrixA)
RtlZeroMemory_(MatrixA, SizeOf(Matrix2D))
EndMacro
Macro ZeroMatrix3D(MatrixA)
RtlZeroMemory_(MatrixA, SizeOf(Matrix3D))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Copy operator From MatrixA to MatrixB >>>>>
Macro CopyMatrix2D(MatrixA, MatrixB)
CopyMemory(MatrixA, MatrixB, SizeOf(Matrix2D))
EndMacro
Macro CopyMatrix3D(MatrixA, MatrixB)
CopyMemory(MatrixA, MatrixB, SizeOf(Matrix3D))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Compare operator >>>>>
Macro CompareMatrix2D(MatrixA, MatrixB)
CompareMemory(MatrixA, MatrixB, SizeOf(Matrix2D))
EndMacro
Macro CompareMatrix3D(MatrixA, MatrixB)
CompareMemory(MatrixA, MatrixB, SizeOf(Matrix3D))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Read binary file >>>>>
Macro ReadMatrix2D(FileID, MatrixA)
ReadData(FileID, MatrixA, SizeOf(Matrix2D))
EndMacro
Macro ReadMatrix3D(FileID, MatrixA)
ReadData(FileID, MatrixA, SizeOf(Matrix3D))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Write binary file >>>>>
Macro WriteMatrix2D(FileID, MatrixA)
WriteData(FileID, MatrixA, SizeOf(Matrix2D))
EndMacro
Macro WriteMatrix3D(FileID, MatrixA)
WriteData(FileID, MatrixA, SizeOf(Matrix3D))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<