Пример #1
0
        // I got tired of writing these loops

        public static void AddRange(this Visual3DCollection collection, IEnumerable <Visual3D> visuals)
        {
            foreach (Visual3D visual in visuals)
            {
                collection.Add(visual);
            }
        }
Пример #2
0
        private void GenerateAndAddShapeToCollection(List <Point3D> points, List <int> pointIndexes, Brush vertColor, Visual3DCollection collection)
        {
            // add all points (vertices)
            foreach (var point in points)
            {
                var vert = CreateVertex(point, vertColor);
                collection.Add(vert);
            }

            // add all lines (edges)
            for (int i = 0; i < pointIndexes.Count; i += 2)
            {
                var line = CreateLine(points[pointIndexes[i]], points[pointIndexes[i + 1]]);
                collection.Add(line);
            }
        }
Пример #3
0
 private void AddCubes(Visual3DCollection c, Brush brush, double x)
 {
     for (double y = -5; y <= 5; y += 10)
     {
         c.Add(new CubeVisual3D {
             Fill = brush, Center = new Point3D(x, y, 0)
         });
     }
 }
Пример #4
0
 private static void PopulateChildVisuals(Variation v, string visualName, Visual3DCollection visualChildren)
 {
     if (v[visualName + "0"] != null)
     {
         Visual3D[] children = MakeVisuals(v, visualName);
         foreach (Visual3D v3d in children)
         {
             visualChildren.Add(v3d);
         }
     }
 }
Пример #5
0
 /// <summary>
 /// Sort Modelgroups in Farthest to Closest order, to enable transparency
 /// Should be applied whenever the scene is significantly re-oriented
 /// </summary>
 public static void AlphaSort(Point3D CameraPosition, Visual3DCollection Models)
 {
     ArrayList list = new ArrayList();
     foreach (Visual3D model in Models)
     {
         double distance = (Point3D.Subtract(CameraPosition, ((ModelUIElement3D)model).Model.Bounds.Location )).Length;
         list.Add(new ModelDistance(distance, model));
     }
     list.Sort(new DistanceComparer(SortDirection.FarToNear));
     Models.Clear();
     foreach (ModelDistance modelDistance in list)
     {
         Models.Add(modelDistance.model);
     }
 }
Пример #6
0
        public void AddToScene(Visual3DCollection elementGroup)
        {
            //pointDrawer.ElementGroup = elementGroup;

            meshGeneratorBase = new Petzold.Media3D.SphereMesh();
            sphere            = meshGeneratorBase.Geometry;
            //Color materialColor = new DiffuseMaterial(new SolidColorBrush(value));
            material = new DiffuseMaterial(new SolidColorBrush(Colors.AliceBlue));

            //foreach (IPosition3D position in position3DSet)
            //{
            //    //pointDrawer.Add(position.GetX(),
            //    //    position.GetY(),
            //    //    position.GetZ());

            //    GeometryModel3D geometryModel3D = new GeometryModel3D(sphere, material);
            //    Transform3DGroup transform3DGroup = new Transform3DGroup();
            //    transform3DGroup.Children.Add(new ScaleTransform3D(0.5, 0.5, 0.5));
            //    TranslateTransform3D translateTransform3D = new TranslateTransform3D(
            //        position.GetX(), position.GetY(), position.GetZ());
            //    transform3DGroup.Children.Add(translateTransform3D);
            //    geometryModel3D.Transform = transform3DGroup;
            //    modelGroup.Children.Add(geometryModel3D);
            //}

            //ModelVisual3D modelVisual3D = new ModelVisual3D();
            //modelVisual3D.Content = modelGroup;
            //elementGroup.Add(modelVisual3D);

            MeshGeometry3D positionSetMesh = new MeshGeometry3D();
            MeshGeometry3D sphereMesh      = new Sphere().Geometry;

            foreach (IPosition3D position in position3DSet)
            {
                MeshGeometry3D mesh = WPF3DHelper.Translate(sphereMesh, new Vector3D(
                                                                position.GetX(), position.GetY(), position.GetZ()));

                WPF3DHelper.CombineTo(positionSetMesh, mesh);
            }

            GeometryModel3D positionSetModel = new GeometryModel3D(positionSetMesh, material);

            ModelVisual3D modelVisual3D = new ModelVisual3D();

            modelVisual3D.Content = positionSetModel;
            elementGroup.Add(modelVisual3D);
        }
Пример #7
0
        public static void CopyChildren(Visual3DCollection targetCollection, Visual3DCollection sourceCollection)
        {
            foreach (Visual3D item in sourceCollection)
            {
                Visual3D      newVisual3D = (Visual3D)Activator.CreateInstance(item.GetType());
                ModelVisual3D newModel    = (newVisual3D as ModelVisual3D);
                if (newModel != null)
                {
                    ModelVisual3D sourceModel = (ModelVisual3D)item;
                    newModel.Content   = sourceModel.Content;
                    newModel.Transform = sourceModel.Transform;

                    CopyChildren(newModel.Children, sourceModel.Children);
                }
                targetCollection.Add(newVisual3D);
            }
        }
Пример #8
0
        void UpdateMeshResolution(short resolution, double sampling_interval)
        {
            // ------------------------------
            // Adjust cursor size
            // ------------------------------
            CursorScaleB.ScaleX = CursorScaleB.ScaleY = CursorScaleB.ScaleZ = Math.PI / 8 / resolution;

            // ------------------------------
            // Create pixelization scheme
            // ------------------------------
            pixelization            = new Healpix.Healpix();
            pixelization.Resolution = resolution;

            // ------------------------------
            // Create border lines
            // ------------------------------
            border = new HealpixBorder();
            try
            {
                border.SamplingInterval = sampling_interval;
                border.Resolution       = resolution;
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }

            Visual3DCollection elements = BorderContainer.Children;

            elements.Clear();
            int n = border.GetNumberOfBorderLines();

            for (int i = 0; i < n; i++)
            {
                WirePolyline line = new WirePolyline();
                line.Points    = border.GetAsCartesianCoord(i);
                line.Color     = Colors.Black;
                line.Thickness = border.GetBorderThickness(i);
                elements.Add(line);
            }

            UpdateMapMesh();
        }
Пример #9
0
 private void AddCubes(Visual3DCollection c, Brush brush, double x)
 {
     for (double y = -5; y <= 5; y += 10)
         c.Add(new CubeVisual3D { Fill = brush, Center = new Point3D(x, y, 0) });
 }