Exemplo n.º 1
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);
     }
 }
Exemplo n.º 2
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();
        }