コード例 #1
0
        public void GetDisplacement(int col, int row, out float dx, out float dy, MeshDisplacementReference reference)
        {
            dx = 0;
            dy = 0;

            if (row < _rows && col < _cols)
            {
                switch (reference)
                {
                case MeshDisplacementReference.Node:

                    dx = _mesh_vertices[row * _cols + col].X - col * _cell_w;
                    dy = _mesh_vertices[row * _cols + col].Y - row * _cell_h;

                    break;

                case MeshDisplacementReference.TopLeft:

                    dx = _mesh_vertices[row * _cols + col].X;
                    dy = _mesh_vertices[row * _cols + col].Y;

                    break;

                case MeshDisplacementReference.Center:

                    dx = _mesh_vertices[row * _cols + col].X - _cell_w * (_cols - 1) / 2;
                    dy = _mesh_vertices[row * _cols + col].Y - _cell_h * (_rows - 1) / 2;

                    break;
                }
            }
        }
コード例 #2
0
        public void SetDisplacement(int col, int row, float dx, float dy, MeshDisplacementReference reference)
        {
            if (row < _rows && col < _cols)
            {
                switch (reference)
                {
                case MeshDisplacementReference.Node:

                    dx += col * _cell_w;
                    dy += row * _cell_h;

                    break;

                case MeshDisplacementReference.TopLeft:
                    break;

                case MeshDisplacementReference.Center:

                    dx += _cell_w * (_cols - 1) / 2;
                    dy += _cell_h * (_rows - 1) / 2;

                    break;
                }

                _mesh_vertices[row * _cols + col].X = dx;
                _mesh_vertices[row * _cols + col].Y = dy;
            }
        }