예제 #1
0
 void OnGUI()
 {
     if (ShowGUI && GeoTools.isBuilding())
     {
         windowRect = GUI.Window(windowID, windowRect, new GUI.WindowFunction(TimerWindow), toolBoxUI_Language._ToolBoxWindowUI);
     }
 }
예제 #2
0
        public override int Build()
        {
            Tracks.Clear();

            Track track = new Track(++trackId, Tracktype.Airline);

            Node node;

            Osm.Segment segment = new Osm.Segment();
            segment.Tags.Add("ref", "North/South connection");

            Osm.Node osmNode;

            segment.Id = 1;

            // make a track with segment size of 96 meter. (180 segments North/South)
            for (int y = -MapSize / 2; y <= MapSize / 2; y += 96)
            {
                osmNode     = new Osm.Node();
                osmNode.Lat = GeoTools.DistanceToLat(lat, y);
                osmNode.Lon = lon;

                node = CreateNode(track, segment, osmNode, 0, y);

                track.Nodes.Add(node);
            }

            Tracks.Add(track);

            return(0);
        }
 private void OnGUI()
 {
     
     if (!StatMaster.levelSimulating && ShowGUI && GeoTools.isBuilding() && !StatMaster.inMenu)
     {
         windowRect = GUI.Window(windowID, windowRect, new GUI.WindowFunction(SceneWindow), sceneUI_Language._SceneWindowUI);
     }
             
 }
예제 #4
0
        public void CanCalculateDistanceFromLon()
        {
            double latCorrection = Math.Cos(lat * (Math.PI / 180));

            Assert.AreEqual(0.63, latCorrection, 0.01);

            double calcLong = GeoTools.DistanceToLon(lon, lat, 60 * GeoTools.NauticalMile * latCorrection);

            Assert.AreEqual(lon + 1, calcLong, 0.01);
        }
예제 #5
0
        public TrackCollection(double lat, double lon)
        {
            this.lat = lat;
            this.lon = lon;

            leftTopLat = GeoTools.DistanceToLat(lat, -MapSize / 2);
            leftTopLon = GeoTools.DistanceToLon(lon, lat, -MapSize / 2);

            rightBottomLat = GeoTools.DistanceToLat(lat, MapSize / 2);
            rightBottomLon = GeoTools.DistanceToLon(lon, lat, MapSize / 2);
        }
예제 #6
0
        public void CanCalculateLonDistance()
        {
            double latCorrection = Math.Cos(lat * (Math.PI / 180));
            double dist          = GeoTools.LonDistance(lon - 1, lon, lat);

            Assert.AreEqual(GeoTools.NauticalMile * -60 * latCorrection, dist);

            double leftTopLon = GeoTools.DistanceToLon(lon, lat, -MapSize / 2);

            dist = GeoTools.LonDistance(leftTopLon, lon, lat);
            Assert.AreEqual(-MapSize / 2, dist, 0.01);
        }
예제 #7
0
        public void CanCalculateLatDistance()
        {
            double dist = GeoTools.LatDistance(lat - 1, lat);

            Assert.AreEqual(GeoTools.NauticalMile * -60, dist);

            dist = GeoTools.LatDistance(lat + 1, lat);
            Assert.AreEqual(GeoTools.NauticalMile * 60, dist);

            double leftTopLat = GeoTools.DistanceToLat(lat, -MapSize / 2);

            dist = GeoTools.LatDistance(leftTopLat, lat);
            Assert.AreEqual(-MapSize / 2, dist, 0.01);
        }
예제 #8
0
        public void CanCalculateDistance()
        {
            double leftTopLat = GeoTools.DistanceToLat(lat, -MapSize / 2);
            double leftTopLon = GeoTools.DistanceToLon(lon, lat, -MapSize / 2);

            double rightBottomLat = GeoTools.DistanceToLat(lat, MapSize / 2);
            double rightBottomLon = GeoTools.DistanceToLon(lon, lat, MapSize / 2);

            double distance       = GeoTools.Distance(leftTopLat, leftTopLon, rightBottomLat, rightBottomLon);
            double mapHypothenysa = Math.Sqrt(2 * Math.Pow(MapSize, 2));

            Assert.AreEqual(24437.61f, mapHypothenysa, 0.01);
            Assert.AreEqual(distance, mapHypothenysa, 0.1);
        }
예제 #9
0
        protected virtual void AddSegmentToTrack(Track track, Segment segment)
        {
            foreach (Osm.Node node in segment.Nodes)
            {
                int x = (int)GeoTools.LonDistance(node.Lon, lon, lat);
                int y = (int)GeoTools.LatDistance(node.Lat, lat);

                // do not add segments that are outside the map
                if (!OnMap(x, y))
                {
                    // TODO: try to make outside connection
                    continue;
                }

                track.Nodes.Add(CreateNode(track, segment, node, x, y));
            }
        }
예제 #10
0
        public void CanCalculateDistanceFromLat()
        {
            double calcLat = GeoTools.DistanceToLat(lat, 60 * GeoTools.NauticalMile);

            Assert.AreEqual(lat + 1, calcLat, 0.01);
        }