Exemplo n.º 1
0
        public override MeshBase CreateMesh(GridderSource source)
        {
            PointGridderSource src           = (PointGridderSource)source;
            vec3 minvec3                     = new vec3();
            vec3 maxvec3                     = new vec3();
            bool isSet                       = false;
            PointPositionBuffer positions    = new PointPositionBuffer();
            PointRadiusBuffer   radiusBuffer = null;
            int    dimSize                   = src.DimenSize;
            Random random                    = new Random();

            // setup positions
            unsafe
            {
                positions.AllocMem(dimSize);
                var cells = (vec3 *)positions.Data;
                for (int gridIndex = 0; gridIndex < dimSize; gridIndex++)
                {
                    vec3 p = src.TranslateMatrix * src.Positions[gridIndex];
                    cells[gridIndex] = p;
                }
            }
            radiusBuffer = this.CreateRadiusBufferData(src, src.Radius);
            PointMeshGeometry3D mesh = new PointMeshGeometry3D(positions, radiusBuffer, dimSize);

            mesh.Max = src.TransformedActiveBounds.Max;
            mesh.Min = src.TransformedActiveBounds.Min;
            return(mesh);
        }
        public override MeshBase CreateMesh(GridderSource source)
        {
            PointGridderSource  src          = (PointGridderSource)source;
            PointPositionBuffer positions    = new PointPositionBuffer();
            PointRadiusBuffer   radiusBuffer = null;
            int dimSize = src.DimenSize;

            // setup positions
            unsafe
            {
                positions.AllocMem(dimSize);
                Vertex *cells = (Vertex *)positions.Data;
                for (int gridIndex = 0; gridIndex < dimSize; gridIndex++)
                {
                    Vertex p = src.Transform * src.Positions[gridIndex];
                    cells[gridIndex] = p;
                }
            }
            radiusBuffer = this.CreateRadiusBufferData(src, src.Radius);
            PointMeshGeometry3D mesh = new PointMeshGeometry3D(positions, radiusBuffer, dimSize);

            mesh.Max = src.TransformedActiveBounds.Max;
            mesh.Min = src.TransformedActiveBounds.Min;
            return(mesh);
        }
Exemplo n.º 3
0
 public override MeshBase CreateMesh(GridderSource source)
 {
     PointGridderSource src = (PointGridderSource)source;
     vec3 minvec3 = new vec3();
     vec3 maxvec3 = new vec3();
     bool isSet = false;
     PointPositionBuffer positions = new PointPositionBuffer();
     PointRadiusBuffer radiusBuffer = null;
     int dimSize = src.DimenSize;
     Random random = new Random();
     // setup positions
     unsafe
     {
         positions.AllocMem(dimSize);
         var cells = (vec3*)positions.Data;
         for (int gridIndex = 0; gridIndex < dimSize; gridIndex++)
         {
             vec3 p = src.TranslateMatrix * src.Positions[gridIndex];
             cells[gridIndex] = p;
         }
     }
     radiusBuffer = this.CreateRadiusBufferData(src, src.Radius);
     PointMeshGeometry3D mesh = new PointMeshGeometry3D(positions, radiusBuffer, dimSize);
     mesh.Max = src.TransformedActiveBounds.Max;
     mesh.Min = src.TransformedActiveBounds.Min;
     return mesh;
 }
        public override MeshBase CreateMesh(GridderSource source)
        {
            PointGridderSource src       = (PointGridderSource)source;
            Vertex             minVertex = new Vertex();
            Vertex             maxVertex = new Vertex();
            bool isSet = false;
            PointPositionBuffer positions    = new PointPositionBuffer();
            PointRadiusBuffer   radiusBuffer = null;
            int    dimSize = src.DimenSize;
            Random random  = new Random();

            // setup positions
            unsafe
            {
                positions.AllocMem(dimSize);
                Vertex *cells = (Vertex *)positions.Data;
                for (int gridIndex = 0; gridIndex < dimSize; gridIndex++)
                {
                    Vertex p = src.Positions[gridIndex];
                    cells[gridIndex] = p;
                    if (!isSet)
                    {
                        minVertex = p;
                        maxVertex = p;
                        isSet     = true;
                    }


                    if (src.IsActiveBlock(gridIndex))
                    {
                        minVertex = SimLab.SimGrid.helper.VertexHelper.MinVertex(minVertex, p);
                        maxVertex = SimLab.SimGrid.helper.VertexHelper.MaxVertex(maxVertex, p);
                    }
                }
            }
            radiusBuffer = this.CreateRadiusBufferData(src, src.Radius);
            PointMeshGeometry3D mesh = new PointMeshGeometry3D(positions, radiusBuffer, dimSize);

            mesh.Max = maxVertex;
            mesh.Min = minVertex;
            return(mesh);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="positions"></param>
 /// <param name="count">有多少个顶点</param>
 public PointMeshGeometry3D(PointPositionBuffer positions, PointRadiusBuffer radius, int count)
     : base(positions)
 {
     this.Radius = radius;
     this.Count  = count;
 }
Exemplo n.º 6
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="positions"></param>
 /// <param name="count">有多少个顶点</param>
 public PointMeshGeometry3D(PointPositionBuffer positions, PointRadiusBuffer radius, int count)
     : base(positions)
 {
     this.Radius = radius;
     this.Count = count;
 }