93 lines
2.0 KiB
C#
93 lines
2.0 KiB
C#
using System;
|
|
|
|
namespace KdTree
|
|
{
|
|
// Token: 0x02000003 RID: 3
|
|
public struct HyperRect<T>
|
|
{
|
|
// Token: 0x17000001 RID: 1
|
|
// (get) Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250
|
|
// (set) Token: 0x06000002 RID: 2 RVA: 0x00002058 File Offset: 0x00000258
|
|
public T[] MinPoint
|
|
{
|
|
get
|
|
{
|
|
return this.minPoint;
|
|
}
|
|
set
|
|
{
|
|
this.minPoint = new T[value.Length];
|
|
value.CopyTo(this.minPoint, 0);
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000002 RID: 2
|
|
// (get) Token: 0x06000003 RID: 3 RVA: 0x00002075 File Offset: 0x00000275
|
|
// (set) Token: 0x06000004 RID: 4 RVA: 0x0000207D File Offset: 0x0000027D
|
|
public T[] MaxPoint
|
|
{
|
|
get
|
|
{
|
|
return this.maxPoint;
|
|
}
|
|
set
|
|
{
|
|
this.maxPoint = new T[value.Length];
|
|
value.CopyTo(this.maxPoint, 0);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000005 RID: 5 RVA: 0x0000209C File Offset: 0x0000029C
|
|
public static HyperRect<T> Infinite(int dimensions, ITypeMath<T> math)
|
|
{
|
|
HyperRect<T> hyperRect = default(HyperRect<T>);
|
|
hyperRect.MinPoint = new T[dimensions];
|
|
hyperRect.MaxPoint = new T[dimensions];
|
|
for (int i = 0; i < dimensions; i++)
|
|
{
|
|
hyperRect.MinPoint[i] = math.NegativeInfinity;
|
|
hyperRect.MaxPoint[i] = math.PositiveInfinity;
|
|
}
|
|
return hyperRect;
|
|
}
|
|
|
|
// Token: 0x06000006 RID: 6 RVA: 0x00002100 File Offset: 0x00000300
|
|
public T[] GetClosestPoint(T[] toPoint, ITypeMath<T> math)
|
|
{
|
|
T[] array = new T[toPoint.Length];
|
|
for (int i = 0; i < toPoint.Length; i++)
|
|
{
|
|
if (math.Compare(this.minPoint[i], toPoint[i]) > 0)
|
|
{
|
|
array[i] = this.minPoint[i];
|
|
}
|
|
else if (math.Compare(this.maxPoint[i], toPoint[i]) < 0)
|
|
{
|
|
array[i] = this.maxPoint[i];
|
|
}
|
|
else
|
|
{
|
|
array[i] = toPoint[i];
|
|
}
|
|
}
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x06000007 RID: 7 RVA: 0x00002198 File Offset: 0x00000398
|
|
public HyperRect<T> Clone()
|
|
{
|
|
return new HyperRect<T>
|
|
{
|
|
MinPoint = this.MinPoint,
|
|
MaxPoint = this.MaxPoint
|
|
};
|
|
}
|
|
|
|
// Token: 0x04000003 RID: 3
|
|
private T[] minPoint;
|
|
|
|
// Token: 0x04000004 RID: 4
|
|
private T[] maxPoint;
|
|
}
|
|
}
|