public void SetEye(Vector3 eye) { ImageArray imageArray = (ImageArray)Image; for (int level = 0; level < imageArray.Depth; level++) { float levelScale = (float)(1 << (level + 1)); Vector2 offset = eye.Xy / levelScale; Index2D index = GetInitialIndex(imageArray[level], Image.Size.Width); index.Offset((int)offset.X, (int)offset.Y); Region2D bounds = imageArray[level].Bounds; if (bounds.Index != index) { imageArray[level].Bounds = new Region2D(index, bounds.Size); Dirty(level); } } }
public static Index2D[] GetCircumIndices(Index2D centerIndex) { var circumIndices = new Index2D[] { centerIndex.Offset(0,2), centerIndex.Offset(1,1), centerIndex.Offset(1,-1), centerIndex.Offset(0,-2), centerIndex.Offset(-1,-1), centerIndex.Offset(-1,1) }; return circumIndices; }