|
|
@@ -157,6 +157,7 @@ public class o0MagneticCalibrater//默认在无磁干扰环境下,有磁干扰
|
|
|
}
|
|
|
|
|
|
HashSet<Vector3> Point = default;
|
|
|
+ int PointMaxCount = 50;
|
|
|
Dictionary<(Vector3, Vector3), float> Distance = default;
|
|
|
public void AddPoint(Vector3 v)
|
|
|
{
|
|
|
@@ -256,7 +257,7 @@ public class o0MagneticCalibrater//默认在无磁干扰环境下,有磁干扰
|
|
|
if (Calibration)
|
|
|
{
|
|
|
AddPoint(v);
|
|
|
- if (Point.Count > 100)
|
|
|
+ if (Point.Count > PointMaxCount)
|
|
|
{
|
|
|
RemovePoint(MinDistancePoint());
|
|
|
_Radius = RadiusScale();
|
|
|
@@ -297,7 +298,7 @@ public class o0MagneticCalibrater//默认在无磁干扰环境下,有磁干扰
|
|
|
var v = i - _Center;
|
|
|
ScaleDistance.Add(new Vector3(v.x / _Radius.x, v.y / _Radius.y, v.z / _Radius.z).magnitude);
|
|
|
}
|
|
|
- while (ScaleDistance.Count < 100)
|
|
|
+ while (ScaleDistance.Count < PointMaxCount)
|
|
|
ScaleDistance.Add(0);
|
|
|
float average = 0;
|
|
|
foreach (var i in ScaleDistance)
|
|
|
@@ -307,7 +308,7 @@ public class o0MagneticCalibrater//默认在无磁干扰环境下,有磁干扰
|
|
|
foreach (var i in ScaleDistance)
|
|
|
variance += Mathf.Pow(average - i, 2);
|
|
|
variance /= ScaleDistance.Count;
|
|
|
- return Mathf.Pow((1 - variance / average), 10) * 100;
|
|
|
+ return Mathf.Pow((1 - variance / average), 10) * PointMaxCount;
|
|
|
//return variance;
|
|
|
}
|
|
|
}
|