public Peer(TestRunWithConfiguration tc, RegistrationId registrationId, string name) { _tc = tc; _name = name; RegistrationId = registrationId; VectorValues = RegistrationIdDistance.GetVectorValues(_tc.CryptoLibrary, registrationId, _tc.NumberOfDimensions).Select(x => (float)x).ToArray(); }
unsafe void Test1Subroutine(ushort vector1_i, ushort vector2_i, short correct_d_i) { var d_i = RegistrationIdDistance.VectorComponentRoutine(vector1_i, vector2_i); Assert.IsTrue(correct_d_i == d_i); d_i = RegistrationIdDistance.VectorComponentRoutine(vector2_i, vector1_i); Assert.IsTrue(correct_d_i == d_i); }
public RegistrationIdDistance GetMinimalDistanceOfThisAndNeighborsToTarget(Peer target) { RegistrationIdDistance minDistance = RegistrationId.GetDistanceTo(_tc.CryptoLibrary, target.RegistrationId, _tc.NumberOfDimensions); foreach (var neighbor in Neighbors.Values) { var d = neighbor.RegistrationId.GetDistanceTo(_tc.CryptoLibrary, target.RegistrationId, _tc.NumberOfDimensions); if (minDistance.IsGreaterThan(d)) { minDistance = d; } } return(minDistance); }
void GetPosition(IVisiblePeer peer1, IVisiblePeer peer2, out Point p1, out Point p2) { var v1 = peer1.VectorValues; var x1 = v1[0]; var y1 = v1[1]; var v2 = peer2.VectorValues; var x2 = v2[0]; var y2 = v2[1]; RegistrationIdDistance.ProcessVectorInLoopedRegistrationIdSpace(x1, ref x2); RegistrationIdDistance.ProcessVectorInLoopedRegistrationIdSpace(y1, ref y2); p1 = new Point(margin + x1 * (canvas.ActualWidth - margin * 2), margin + y1 * (canvas.ActualHeight - margin * 2)); p2 = new Point(margin + x2 * (canvas.ActualWidth - margin * 2), margin + y2 * (canvas.ActualHeight - margin * 2)); }
public Peer GetMostFarNeighbor() { RegistrationIdDistance maxDistance = null; Peer mostFarNeighbor = null; foreach (var neighbor in Neighbors.Values) { var d = neighbor.RegistrationId.GetDistanceTo(_tc.CryptoLibrary, this.RegistrationId, _tc.NumberOfDimensions); if (maxDistance == null || d.IsGreaterThan(maxDistance)) { maxDistance = d; mostFarNeighbor = neighbor; } } return(mostFarNeighbor); }