// 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); } }
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); } }
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) }); } }
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); } } }
/// <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); } }
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); }
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); } }
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(); }
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) }); }