Exemple #1
0
        public void Update()
        {
            // 更新地形
            if (_data == null)
            {
                return;
            }
            _model.Data = new double[_data.Length];
            for (int i = 0; i < _model.Height; i++)
            {
                for (int j = 0; j < _model.Width; j++)
                {
                    _model.Data[i * _model.Width + j] = _data[(_model.Height - i - 1) * _model.Width + j] * VerticalMagnification;
                }
            }
            _model.MinimumZ = _model.Data.Min();
            _model.MaximumZ = _model.Data.Max();
            switch (TextureType)
            {
            case TextureType.Elevation:
                var et = new ElevationTexture();
                if (ElevationBrush != null)
                {
                    et.Brush = ElevationBrush;
                }
                _model.Texture = et;
                break;

            case TextureType.Slope:
                var st = new SlopeTexture(18);
                if (SlopeBrush != null)
                {
                    st.Brush = SlopeBrush;
                }
                _model.Texture = st;
                break;
            }
            _visualChild.Content = _model.CreateModel(2);

            // 更新道路
            for (int i = 0; i < _roads.Count; i++)
            {
                var roadModel = new RoadModel
                {
                    RoadColor = RoadColor,
                    Offset    = _model.Offset
                };

                var road = new Road
                {
                    Width  = _roads[i].Width,
                    Points = new Point3D[_roads[i].Points.Length]
                };

                for (int j = 0; j < _roads[i].Points.Length; j++)
                {
                    road.Points[j]   = _roads[i].Points[j];
                    road.Points[j].Z = _roads[i].Points[j].Z * VerticalMagnification;
                }
                _roadChilds[i].Content = roadModel.createRoadModel(road);
            }
        }
        /// <summary>
        /// Updates the model.
        /// </summary>
        private void UpdateModel()
        {
            var r = new TerrainModel();
            r.Load(this.Source);

            // r.Texture = new SlopeDirectionTexture(0);
            r.Texture = new SlopeTexture(8);

            // r.Texture = new MapTexture(@"D:\tmp\CraterLake.png") { Left = r.Left, Right = r.Right, Top = r.Top, Bottom = r.Bottom };
            this.visualChild.Content = r.CreateModel(2);
        }