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; } } }
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; } }