/// <summary> /// Add a node to this storm. /// /// STM is temporary until globalstate is ported over /// /// create NodeInformation class later /// </summary> public void AddNode(int Intensity, string Type, Point Pos, int Pressure, StormTypeManager TEMP__ST2Manager) // String in this case bad but swnabhfabg { Node NewNode = new Node(); // Determine intensity. NewNode.Intensity = Intensity; // Get node type. NewNode.NodeType = TEMP__ST2Manager.GetStormTypeWithName(Type); // Get id. NewNode.Id = NodeList.Count; if (Pressure < 0) { Error.Throw("Warning", "Pressure cannot be less than zero!", ErrorSeverity.Warning, 400); } else { NewNode.Pressure = Pressure; } // dumb but it works! RelativePositionConverter RPC = new RelativePositionConverter(); NewNode.Position = (RelativePosition)RPC.Convert(Pos, typeof(RelativePosition), null, null); Logging.Log($"Adding node"); // Add. NodeList.Add(NewNode); }
public RelativePosition FromCoordinateToRelativeNodePosition(Coordinate Coord, Point WindowSize) { Debug.Assert(Coord.Directions.Count == 2); double LowX = CoordsLower.Coordinates.X; double LowY = CoordsLower.Coordinates.Y; double HighX = CoordsHigher.Coordinates.X; double HighY = CoordsHigher.Coordinates.Y; // convert to absolute coordinate foreach (CardinalDirection CD in CoordsLower.Directions) { switch (CD) { case CardinalDirection.W: LowX = -LowX; continue; case CardinalDirection.S: LowY = -LowY; continue; } } // convert to absolute coordinate foreach (CardinalDirection CD in CoordsHigher.Directions) { switch (CD) { case CardinalDirection.W: HighX = -HighX; continue; case CardinalDirection.S: HighY = -HighY; continue; } } // get the multiplier from the coordshigher. double PreFinalX = 0.991823613; double PreFinalY = 0.991823613; if (HighX > LowX) { PreFinalX = Coord.Coordinates.X / (HighX - LowX); } else { PreFinalX = Coord.Coordinates.X / (LowX - HighX); } if (HighY > LowY) { PreFinalY = Coord.Coordinates.Y / (HighY - LowY); } else { PreFinalY = Coord.Coordinates.Y / (LowY - HighY); } if (PreFinalX == 0.991823613 || PreFinalY == 0.991823613) { Error.Throw("Error", "Error translating coordinates - internal ATCF import error", ErrorSeverity.Error, 320); return(new RelativePosition(0.991823613, 0.991823613)); } // atcf fix Point FinalPos = new Point(WindowSize.Y * PreFinalY, WindowSize.X * PreFinalX); RelativePositionConverter RPC = new RelativePositionConverter(); RelativePosition RP = (RelativePosition)RPC.Convert(FinalPos, typeof(RelativePosition), null, null); return(RP); }