示例#1
0
        public static Map3DModel Map2DTo3DModel(Map2DModel map2D, double upperZValue, double lowerZValue)
        {
            Map3DModel map3D = new Map3DModel();

            map3D.Id   = map2D.Id;
            map3D.Name = map2D.Name;

            map3D.MinLongitude = map2D.MinLongitude;
            map3D.MaxLongitude = map2D.MaxLongitude;
            map3D.MinLatitude  = map2D.MinLatitude;
            map3D.MaxLatitude  = map2D.MaxLatitude;

            List <CylinderVisual3DModel> cylinderVisual3DModelList = new List <CylinderVisual3DModel>();

            map3D.Geometries = cylinderVisual3DModelList;

            Rect rect = GetBoundaryRectOfMap2D(map2D);

            foreach (List <Point> map2DPathFeaturePoints in map2D.GeometryPointList)
            {
                List <Point> cleanPointList = CleanPointList(map2DPathFeaturePoints);
                //CylinderVisual3DModel cylinderVisual3DModel = Visual2DTo3DHelper.Closed2DAreaToCylinderVisual3DModel(cleanPointList, upperZValue, lowerZValue);
                CylinderVisual3DModel cylinderVisual3DModel = Visual2DTo3DHelper.Closed2DAreaToCylinderVisual3DModel(cleanPointList, upperZValue, lowerZValue, rect);
                if (cylinderVisual3DModel != null)
                {
                    cylinderVisual3DModelList.Add(cylinderVisual3DModel);
                }
            }

            map3D.Materials = new List <List <Material3DModel> >();
            for (int i = 0; i < map2D.GeometryPointList.Count; i++)
            {
                List <Material3DModel> materialList = new List <Material3DModel>()
                {
                    new Material3DModel()
                    {
                        MaterialType = MaterialType.ColorDiffuse, MaterialData = Color.FromArgb(0x99, 0x00, 0xff, 0xff)
                    },
                    new Material3DModel()
                    {
                        MaterialType = MaterialType.ColorDiffuse, MaterialData = Color.FromArgb(0x99, 0x00, 0xff, 0xff)
                    },
                    new Material3DModel()
                    {
                        MaterialType = MaterialType.ColorDiffuse, MaterialData = Color.FromArgb(0xff, 0x48, 0x3d, 0x88)
                    }
                };

                map3D.Materials.Add(materialList);
            }

            return(map3D);
        }
示例#2
0
        private List <Map3DModel> Map2DTo3DData(List <Map2DModel> map2DModelList)
        {
            Rect rect = GetMap3DModelsBoundaryRect(map2DModelList);

            double zoomFactor = InflateMap2DShapeInBoundaryRectCenter(map2DModelList, rect);

            List <Map3DModel> map3DModelList = new List <Map3DModel>();

            for (int i = 0; i < map2DModelList.Count; i++)
            {
                Map3DModel map3D = Map2DTo3DHelper.Map2DTo3DModel(map2DModelList[i], 0, -10);
                map3D.ZoomFactor = zoomFactor;

                map3DModelList.Add(map3D);
            }

            return(map3DModelList);
        }
示例#3
0
        public static ContainerUIElement3D Map3DModelToUIElement3D(Map3DModel map3D)
        {
            List <Viewport2DVisual3D> visual3DList = new List <Viewport2DVisual3D>();

            for (int i = 0; i < map3D.Geometries.Count; i++)
            {
                CylinderVisual3DModel cylinderVisual3DModel = map3D.Geometries[i];

                DiffuseMaterial imageMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(new Uri(string.Format(@"Images\MapTextures\{0}.png", "1"), UriKind.Relative))));
                //MeshGeometry3D upperGeometry3D = Visual3DCreateHelper.CreateGeometry3D(cylinderVisual3DModel.UpperUndersurface);
                //Material upperMaterial = Visual3DCreateHelper.CreateMaterial3D(map3D.Materials[i][0]);

                //MaterialGroup mg = new MaterialGroup();
                //mg.Children.Add(upperMaterial);
                ////mg.Children.Add(imageMaterial);

                //Viewport2DVisual3D upperVisual3D = Visual3DCreateHelper.CreateVisual3D(upperGeometry3D, mg);
                //visual3DList.Add(upperVisual3D);

                MeshGeometry3D lowerGeometry3D = Visual3DCreateHelper.CreateGeometry3D(cylinderVisual3DModel.LowerUndersurface);
                Material       lowerMaterial   = Visual3DCreateHelper.CreateMaterial3D(map3D.Materials[i][1]);
                MaterialGroup  mg1             = new MaterialGroup();
                mg1.Children.Add(lowerMaterial);
                //mg1.Children.Add(imageMaterial);
                Viewport2DVisual3D lowerVisual3D = Visual3DCreateHelper.CreateVisual3D(lowerGeometry3D, mg1);
                visual3DList.Add(lowerVisual3D);


                MeshGeometry3D     sideGeometry3D = Visual3DCreateHelper.CreateGeometry3D(cylinderVisual3DModel.SideSurface);
                Material           sideMaterial   = Visual3DCreateHelper.CreateMaterial3D(map3D.Materials[i][2]);
                Viewport2DVisual3D sideVisual3D   = Visual3DCreateHelper.CreateVisual3D(sideGeometry3D, sideMaterial);
                visual3DList.Add(sideVisual3D);
            }
            ContainerUIElement3D uIElement3D = Visual3DCreateHelper.CreateUIElement3D(visual3DList);

            return(uIElement3D);
        }