Added initial imu processing
This commit is contained in:
parent
87744740d4
commit
b10929619d
@ -4,9 +4,9 @@ using Vector3 = UnityEngine.Vector3;
|
||||
using Vector2 = UnityEngine.Vector2;
|
||||
|
||||
public readonly struct Slice {
|
||||
public int start { get; }
|
||||
public int stop { get; }
|
||||
public Slice(int start, int stop) {
|
||||
public uint start { get; }
|
||||
public uint stop { get; }
|
||||
public Slice(uint start, uint stop) {
|
||||
this.start = start;
|
||||
this.stop = stop;
|
||||
}
|
||||
@ -101,6 +101,9 @@ public class Matrix2 {
|
||||
return new Matrix2(resultData);
|
||||
// double checked code
|
||||
}
|
||||
public Matrix2 transposed {
|
||||
get => Transpose();
|
||||
}
|
||||
|
||||
public static Matrix2 operator -(Matrix2 m) {
|
||||
float[,] result = new float[m.nRows, m.nCols];
|
||||
@ -195,13 +198,13 @@ public class Matrix2 {
|
||||
public Matrix2 Slice(Slice slice) {
|
||||
return Slice(slice.start, slice.stop);
|
||||
}
|
||||
public Matrix2 Slice(int from, int to) {
|
||||
public Matrix2 Slice(uint from, uint to) {
|
||||
if (from < 0 || to >= this.nRows)
|
||||
throw new System.ArgumentException("Slice index out of range.");
|
||||
|
||||
float[,] result = new float[to - from, this.nCols];
|
||||
int resultRowIx = 0;
|
||||
for (int rowIx = from; rowIx < to; rowIx++) {
|
||||
for (uint rowIx = from; rowIx < to; rowIx++) {
|
||||
for (int colIx = 0; colIx < this.nCols; colIx++) {
|
||||
result[resultRowIx, colIx] = this.data[rowIx, colIx];
|
||||
}
|
||||
@ -210,16 +213,35 @@ public class Matrix2 {
|
||||
|
||||
return new Matrix2(result);
|
||||
}
|
||||
public Matrix2 Slice(Slice rowRange, Slice colRange) {
|
||||
return Slice((rowRange.start, rowRange.stop), (colRange.start, colRange.stop));
|
||||
}
|
||||
|
||||
public Matrix2 Slice((uint start, uint stop) rowRange, (uint start, uint stop) colRange) {
|
||||
float[,] result = new float[rowRange.stop - rowRange.start, colRange.stop - colRange.start];
|
||||
|
||||
uint resultRowIx = 0;
|
||||
uint resultColIx = 0;
|
||||
for (uint i = rowRange.start; i < rowRange.stop; i++) {
|
||||
for (uint j = colRange.start; j < colRange.stop; j++)
|
||||
result[resultRowIx, resultColIx] = this.data[i, j];
|
||||
}
|
||||
return new Matrix2(result);
|
||||
}
|
||||
|
||||
public void UpdateSlice(Slice slice, Matrix2 m) {
|
||||
int mRowIx = 0;
|
||||
for (int rowIx = slice.start; rowIx < slice.stop; rowIx++) {
|
||||
for (uint rowIx = slice.start; rowIx < slice.stop; rowIx++) {
|
||||
for (int colIx = 0; colIx < this.nCols; colIx++)
|
||||
this.data[rowIx, colIx] = m.data[mRowIx, colIx];
|
||||
}
|
||||
}
|
||||
public void UpdateSlice(Slice rowRange, Slice colRange, Matrix2 m) {
|
||||
for (int i = rowRange.start; i < rowRange.stop; i++) {
|
||||
for (int j = colRange.start; j < colRange.stop; j++)
|
||||
UpdateSlice((rowRange.start, rowRange.stop), (colRange.start, colRange.stop), m);
|
||||
}
|
||||
public void UpdateSlice((uint start, uint stop) rowRange, (uint start, uint stop) colRange, Matrix2 m) {
|
||||
for (uint i = rowRange.start; i < rowRange.stop; i++) {
|
||||
for (uint j = colRange.start; j < colRange.stop; j++)
|
||||
this.data[i, j] = m.data[i - rowRange.start, j - colRange.stop];
|
||||
}
|
||||
}
|
||||
@ -401,20 +423,20 @@ public class Matrix1 {
|
||||
public Matrix1 Slice(Slice range) {
|
||||
return Slice(range.start, range.stop);
|
||||
}
|
||||
public Matrix1 Slice(int from, int to) {
|
||||
public Matrix1 Slice(uint from, uint to) {
|
||||
if (from < 0 || to >= this.magnitude)
|
||||
throw new System.ArgumentException("Slice index out of range.");
|
||||
|
||||
float[] result = new float[to - from];
|
||||
int resultIx = 0;
|
||||
for (int ix = from; ix < to; ix++)
|
||||
for (uint ix = from; ix < to; ix++)
|
||||
result[resultIx++] = this.data[ix];
|
||||
|
||||
return new Matrix1(result);
|
||||
}
|
||||
public void UpdateSlice(Slice slice, Matrix1 v) {
|
||||
int vIx = 0;
|
||||
for (int ix = slice.start; ix < slice.stop; ix++, vIx++)
|
||||
for (uint ix = slice.start; ix < slice.stop; ix++, vIx++)
|
||||
this.data[ix] = v.data[vIx];
|
||||
}
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
using Quaternion = UnityEngine.Quaternion;
|
||||
namespace Passer.LinearAlgebra {
|
||||
|
||||
public class QuaternionOf<T> {
|
||||
@ -26,7 +27,7 @@ namespace Passer.LinearAlgebra {
|
||||
}
|
||||
}
|
||||
|
||||
public class Quaternion : QuaternionOf<float> {
|
||||
public Quaternion(float x, float y, float z, float w) : base(x, y, z, w) { }
|
||||
}
|
||||
// public class Quaternion : QuaternionOf<float> {
|
||||
// public Quaternion(float x, float y, float z, float w) : base(x, y, z, w) { }
|
||||
// }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user