public static void ChangeRingNode(RingNodes CurrentRN, bool isExpanding) { //First we find a new node (Expand or Collapse we start with expand) //Change this node with the other and change the clockwise and anticlockwise //Determine poisition of nodes //Sensor oldRingNode = CurrentRN.Node; Sensor newRingNode = FindNewRingNodeReplacement(CurrentRN); Sensor clock = CurrentRN.ClockWiseNeighbor; Sensor anti = CurrentRN.AntiClockWiseNeighbor; if (newRingNode != null) { //me,anti,clock RingNodes newNo = new RingNodes(newRingNode, CurrentRN.AntiClockWiseNeighbor, CurrentRN.ClockWiseNeighbor); //newNo.AnchorNode = CurrentRN.AnchorNode; newRingNode.RingNodesRule = newNo; ReplaceTwoNodes(CurrentRN, newNo); ClearOldRingNodeData(CurrentRN, newNo); AddRemoveArrows(CurrentRN, newNo); markNeighboringRingNods(); RingNodesFunctions r = new RingNodesFunctions(); r.DeterminePositionofAllNodes(); Console.WriteLine("Change {0} to {1}", CurrentRN.Node.ID, newRingNode.ID); } else { Console.WriteLine("Failed to change node {0}", CurrentRN.Node.ID); //Failed } }
public static void doLastCheck() { RingNodesFunctions r = new RingNodesFunctions(); r.lastCheck(); populateRingNodes(); markNeighboringRingNods(); r.DeterminePositionofAllNodes(); }
private void startBuilding() { bool takeNextPoint = true; SubsetOfHull.Push(SortedSetOfConvexNodes.Dequeue()); do { if (takeNextPoint) { SubsetOfHull.Push(SortedSetOfConvexNodes.Dequeue()); } ConvexHullNodes PointThree = SubsetOfHull.Pop(); ConvexHullNodes PointTwo = SubsetOfHull.Pop(); ConvexHullNodes PointOne = SubsetOfHull.Pop(); if (isClockwise(PointOne, PointTwo, PointThree)) { SubsetOfHull.Push(PointOne); SubsetOfHull.Push(PointTwo); SubsetOfHull.Push(PointThree); takeNextPoint = true; } else { SubsetOfHull.Push(PointOne); SubsetOfHull.Push(PointThree); if (SubsetOfHull.Count >= 3) { takeNextPoint = false; } } } while (SortedSetOfConvexNodes.Count > 0); // Console.WriteLine("Ending ****"); int c = SubsetOfHull.Count; do { ConvexHullNodes x = SubsetOfHull.Pop(); ConvexNodes.Add(x.node); // x.node.ShowComunicationRange(true); // Console.WriteLine(x.node.ID); } while (SubsetOfHull.Count > 0); RingNodesFunctions.doLastCheck(); }
public void ChangeRingNode(RingNodes CurrentRN) { MainCounter++; //First we find a new node (Expand or Collapse we start with expand) //Change this node with the other and change the clockwise and anticlockwise //Determine poisition of nodes //Sensor oldRingNode = CurrentRN.Node; myNewRingNodes.Clear(); Sensor newRingNode = FindNewRingNodeReplacement(CurrentRN); Sensor clock = CurrentRN.ClockWiseNeighbor; Sensor anti = CurrentRN.AntiClockWiseNeighbor; if (newRingNode != null) { if (PublicParamerters.IsExanding) { double distance = Operations.DistanceBetweenTwoPoints(newRingNode.CenterLocation, PublicParamerters.networkCenter); if (distance >= (PublicParamerters.clusterRadius * 1.6)) { PublicParamerters.IsExanding = false; } } else { double distance = Operations.DistanceBetweenTwoPoints(newRingNode.CenterLocation, PublicParamerters.networkCenter); if (distance <= (PublicParamerters.clusterRadius)) { PublicParamerters.IsExanding = true; } } //me,anti,clock //Now i have myNewRingNodes loop through there and fix everything RingNodes newNo = new RingNodes(newRingNode, CurrentRN.AntiClockWiseNeighbor, CurrentRN.ClockWiseNeighbor); myNewRingNodes.Add(newRingNode); CheckNewRingNode(newNo); ReplaceTwoNodes(CurrentRN, myNewRingNodes); foreach (Sensor newRN in myNewRingNodes) { if (newRN.RingNodesRule.AntiClockWiseNeighbor.ID == newRN.RingNodesRule.ClockWiseNeighbor.ID) { Console.WriteLine("Error in Change RingNode"); } newRN.RingNodesRule.AnchorNodes = CurrentRN.AnchorNodes; newRingNode.IsHightierNode = true; newRingNode.SetSinksAgentsForNewHighTierNode(CurrentRN.Node.GetAnchorNodesFromHighTierNodes); } // RingNodes newNo = new RingNodes(newRingNode, CurrentRN.AntiClockWiseNeighbor, CurrentRN.ClockWiseNeighbor); // newNo.AnchorNode = CurrentRN.AnchorNode; // newRingNode.RingNodesRule = newNo; // ReplaceTwoNodes(CurrentRN, newNo); if (!myNewRingNodes.Contains(CurrentRN.Node)) { ClearOldRingNodeData(CurrentRN); } //AddRemoveArrows(CurrentRN, newNo); RingNodesFunctions r = new RingNodesFunctions(); //markNeighboringRingNods(); UpdateInformation(); r.DeterminePositionofAllNodes(); // Console.WriteLine("Change {0} to {1}",CurrentRN.Node.ID,newRingNode.ID); } else { Console.WriteLine("Failed to change node {0}", CurrentRN.Node.ID); //Failed } }