Exemplo n.º 1
0
        /// <summary>
        /// 将点做映射,按照xoz面来影射点,为2维的弹体做准备
        /// </summary>
        /// <param name="points"></param>
        /// <returns></returns>
        private static vtkPoints ReflectPointsByXOZ(vtkPoints points)
        {
            vtkPoints tempPoints = vtkPoints.New();
            int       numPoints  = points.GetNumberOfPoints();

            //点数扩大两倍
            tempPoints.SetNumberOfPoints(numPoints * 2);
            //构造相应的点
            for (int i = 0; i < numPoints; i++)
            {
                double[] temp = points.GetPoint(i);
                tempPoints.SetPoint(numPoints * 2 - 1 - i, temp[0] * (-1), temp[1], temp[2]);//x坐标变为相反数
                tempPoints.SetPoint(i, temp[0], temp[1], temp[2]);
            }
            return(tempPoints);
        }
Exemplo n.º 2
0
        public void ReadDataByLine(string filename)
        {
            try
            {
                var dataStrings = File.ReadAllLines(filename);
                points = vtkPoints.New();
                points.SetNumberOfPoints(dataStrings.Length);

                var colorArray = vtkUnsignedCharArray.New();
                colorArray.SetNumberOfComponents(3);

                for (var i = 0; i < dataStrings.Length; i++)
                {
                    var data = dataStrings[i].Split(' ');

                    if (data.Length < 6)
                    {
                        continue;
                    }

                    points.SetPoint(i, int.Parse(data[0]), int.Parse(data[1]), int.Parse(data[2]));
                    colorArray.InsertNextTuple3(double.Parse(data[3]), double.Parse(data[4]), double.Parse(data[5]));
                }

                PolyData = vtkPolyData.New();
                PolyData.SetPoints(points);
                PolyData.GetPointData().SetScalars(colorArray);
                PolyData.Update();
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 3
0
Arquivo: Part.cs Projeto: ovevans/STAN
        /// <summary>
        /// Update Part Nodes position
        /// <list>
        /// <item><c>DB</c></item>
        /// <description> - Database with results (e.g. Nodal displacements, Element stress, etc.)</description>
        /// <item><c>inc</c></item>
        /// <description> - increment number for which you want to update</description>
        /// </list>
        /// </summary>
        public void UpdateNode(Database DB, int inc)
        {
            // Update Node position
            foreach (var node in Nodes)   // Update Points coordinates and assign default color
            {
                int id    = node.Key;
                int index = node.Value;

                Points.SetPoint(index,
                                DB.NodeLib[id].GetDisp(inc, 0) + DB.NodeLib[id].X,
                                DB.NodeLib[id].GetDisp(inc, 1) + DB.NodeLib[id].Y,
                                DB.NodeLib[id].GetDisp(inc, 2) + DB.NodeLib[id].Z);
            }
        }
Exemplo n.º 4
0
        public VTKDataModel(SimulationModel sm)
        {
            simModel = sm;

            int numCells = sm.Cells.Count;

            cellIDs = vtkIntArray.New();
            cellIDs.SetNumberOfComponents(1);
            cellIDs.SetNumberOfValues(numCells);
            cellIDs.SetName(cellIdsArrayName);

            cellTypes = vtkIntArray.New();
            cellTypes.SetNumberOfComponents(1);
            cellTypes.SetNumberOfValues(numCells);
            cellTypes.SetName(cellTypeArrayName);

            points = vtkPoints.New();
            points.SetNumberOfPoints(numCells);

            verts = vtkCellArray.New();
            verts.Allocate(verts.EstimateSize(1, numCells), 1000);
            verts.InsertNextCell(numCells);

            foreach (MotileCell cell in sm.Cells)
            {
                int i = cell.CellId;
                int c = cell.CellType;
                double[] p = cell.Position;
                points.SetPoint(i, p[0], p[1], p[2]);
                cellIDs.SetValue(i, i);
                cellTypes.SetValue(i, c);
                verts.InsertCellPoint(i);
            }

            poly = vtkPolyData.New();
            poly.SetPoints(points);
            poly.SetVerts(verts);
            poly.GetPointData().AddArray(cellIDs);
            poly.GetPointData().AddArray(cellTypes);
        }
Exemplo n.º 5
0
        private void PlanesIntersection()
        {
            vtkSphereSource sphereSource = vtkSphereSource.New();

            sphereSource.Update();

            double[] bounds = new double[6];
            bounds = sphereSource.GetOutput().GetBounds();

            vtkPoints box = vtkPoints.New();

            box.SetNumberOfPoints(8);

            double xMin, xMax, yMin, yMax, zMin, zMax;

            xMin = bounds[0]; xMax = bounds[1];
            yMin = bounds[2]; yMax = bounds[3];
            zMin = bounds[4]; zMax = bounds[5];

            box.SetPoint(0, xMax, yMin, zMax);
            box.SetPoint(1, xMax, yMin, zMin);
            box.SetPoint(2, xMax, yMax, zMin);
            box.SetPoint(3, xMax, yMax, zMax);
            box.SetPoint(4, xMin, yMin, zMax);
            box.SetPoint(5, xMin, yMin, zMin);
            box.SetPoint(6, xMin, yMax, zMin);
            box.SetPoint(7, xMin, yMax, zMax);

            vtkPlanesIntersection planesIntersection = vtkPlanesIntersection.New();

            planesIntersection.SetBounds(bounds[0], bounds[1], bounds[2], bounds[3], bounds[4], bounds[5]);
            int intersects = planesIntersection.IntersectsRegion(box);

            Debug.WriteLine("Intersects? " + ((intersects == 1) ? true : false).ToString());
            // nothing to visualize
        }
Exemplo n.º 6
0
        public CrossPackage(double size, vtkRenderer renderer)
        {
            //Console.WriteLine(string.Format("VTP文件 = {0}", vtpFile));
            vtkPolyData cursorPolyData = vtkPolyData.New();

            vtkPoints cursorPts = vtkPoints.New();

            cursorPts.SetNumberOfPoints(12);

            cursorPts.SetPoint(0, -size, -0, 0);
            cursorPts.SetPoint(1, size, -0, 0);
            cursorPts.SetPoint(2, size, 0, 0);
            cursorPts.SetPoint(3, -size, 0, 0);

            cursorPts.SetPoint(4, -0, size, 0);
            cursorPts.SetPoint(5, 0, size, 0);
            cursorPts.SetPoint(6, 0, -size, 0);
            cursorPts.SetPoint(7, -0, -size, 0);

            cursorPts.SetPoint(8, -0, 0, size);
            cursorPts.SetPoint(9, 0, 0, size);
            cursorPts.SetPoint(10, 0, 0, -size);
            cursorPts.SetPoint(11, -0, 0, -size);

            vtkCellArray cells = vtkCellArray.New();

            cells.InsertNextCell(3, VTKUtil.ConvertIntPtr(new long[] { 0, 1, 2 }));
            cells.InsertNextCell(3, VTKUtil.ConvertIntPtr(new long[] { 1, 2, 3 }));
            cells.InsertNextCell(3, VTKUtil.ConvertIntPtr(new long[] { 4, 5, 6 }));
            cells.InsertNextCell(3, VTKUtil.ConvertIntPtr(new long[] { 5, 6, 7 }));
            cells.InsertNextCell(3, VTKUtil.ConvertIntPtr(new long[] { 8, 9, 10 }));
            cells.InsertNextCell(3, VTKUtil.ConvertIntPtr(new long[] { 9, 10, 11 }));

            vtkCellArray lines = vtkCellArray.New();

            lines.InsertNextCell(2, VTKUtil.ConvertIntPtr(new long[] { 0, 1 }));
            lines.InsertNextCell(2, VTKUtil.ConvertIntPtr(new long[] { 6, 5 }));
            lines.InsertNextCell(2, VTKUtil.ConvertIntPtr(new long[] { 10, 9 }));

            cursorPolyData.SetPoints(cursorPts);
            cursorPolyData.SetVerts(cells);
            //CursorPolyData.SetPolys(cells);
            cursorPolyData.SetLines(lines);
            cursorPolyData.Update();

            PolyData = cursorPolyData;

            _polyDataMapper = vtkPolyDataMapper.New();
            _polyDataMapper.ScalarVisibilityOff();
            _polyDataMapper.SetInput(PolyData);
            _polyDataMapper.Update();

            actor = vtkActor.New();
            actor.SetMapper(_polyDataMapper);

            //marchingCubeActor.GetProperty().BackfaceCullingOn();
            //marchingCubeActor.GetProperty().FrontfaceCullingOn();
            //marchingCubeActor.GetProperty().BackfaceCullingOff();

            // now, tell the renderer our actors
            renderer.AddActor(actor);

            this._renderer = renderer;
        }