private Extents3d findTile(double x, double y, EnumCorner corner, bool isX) { Point ptNext; if (isX) { x += getOffsetX(corner, 100); } else { y += getOffsetY(corner, 100); } ptNext = new Point(x, y, 0); var resTiles = TreeTiles.Nearest(ptNext, distTileMinInPanel); if (resTiles.Count == 0) { return(findTile(x, y, corner, isX)); } else { var resVal = resTiles.First(); return(resVal.Item2); } }
private double getOffsetY(EnumCorner corner, double offset) { switch (corner) { case EnumCorner.LeftTop: case EnumCorner.RightTop: return(-offset); case EnumCorner.LeftLower: case EnumCorner.RightLower: return(offset); default: return(0); } }
private double getCoordY(Extents3d extentsByTile, EnumCorner corner) { switch (corner) { case EnumCorner.LeftLower: case EnumCorner.RightLower: return(extentsByTile.MinPoint.Y); case EnumCorner.LeftTop: case EnumCorner.RightTop: return(extentsByTile.MaxPoint.Y); default: return(0); } }
private Point3d getCoordTileNoEnd(Point3d pt, EnumCorner corner) { double x = 0; Point pt1X = new Point(pt.X + getOffsetX(corner, endOffset), pt.Y, 0); var resTiles = TreeTiles.Nearest(pt1X, distTileMinInPanel); if (resTiles.Count == 0) { // Нет плитки - торец! // Найти первую не торцевую плитку var extTileX = findTile(pt.X + getOffsetX(corner, endOffset), pt.Y, corner, true); x = getCoordX(extTileX, corner); } else { // Есть плитки - не торец x = pt.X; } double y = 0; Point pt1Y = new Point(pt.X, pt.Y + getOffsetY(corner, endOffset), 0); resTiles = TreeTiles.Nearest(pt1Y, distTileMinInPanel); if (resTiles.Count == 0) { // Нет плитки - торец! // Найти первую не торцевую плитку var extTileY = findTile(pt.X, pt.Y + getOffsetY(corner, endOffset), corner, false); y = getCoordY(extTileY, corner); } else { // Есть плитки - не торец y = pt.Y; } return(new Point3d(x, y, 0)); }
private double getOffsetY(EnumCorner corner, double offset) { switch (corner) { case EnumCorner.LeftTop: case EnumCorner.RightTop: return -offset; case EnumCorner.LeftLower: case EnumCorner.RightLower: return offset; default: return 0; } }
private double getCoordY(Extents3d extentsByTile, EnumCorner corner) { switch (corner) { case EnumCorner.LeftLower: case EnumCorner.RightLower: return extentsByTile.MinPoint.Y; case EnumCorner.LeftTop: case EnumCorner.RightTop: return extentsByTile.MaxPoint.Y; default: return 0; } }
private Point3d getCoordTileNoEnd(Point3d pt, EnumCorner corner) { double x = 0; Point pt1X = new Point(pt.X + getOffsetX(corner, endOffset), pt.Y, 0); var resTiles = TreeTiles.Nearest(pt1X, distTileMinInPanel); if (resTiles.Count == 0) { // Нет плитки - торец! // Найти первую не торцевую плитку var extTileX = findTile(pt.X + getOffsetX(corner, endOffset), pt.Y, corner, true); x = getCoordX(extTileX, corner); } else { // Есть плитки - не торец x = pt.X; } double y = 0; Point pt1Y = new Point(pt.X, pt.Y + getOffsetY(corner, endOffset), 0); resTiles = TreeTiles.Nearest(pt1Y, distTileMinInPanel); if (resTiles.Count == 0) { // Нет плитки - торец! // Найти первую не торцевую плитку var extTileY = findTile(pt.X, pt.Y + getOffsetY(corner, endOffset), corner, false); y = getCoordY(extTileY, corner); } else { // Есть плитки - не торец y = pt.Y; } return new Point3d(x, y, 0); }
private Extents3d findTile(double x, double y, EnumCorner corner, bool isX) { Point ptNext; if (isX) { x += getOffsetX(corner, 100); } else { y += getOffsetY(corner, 100); } ptNext = new Point(x, y, 0); var resTiles = TreeTiles.Nearest(ptNext, distTileMinInPanel); if (resTiles.Count == 0) { return findTile(x, y, corner, isX); } else { var resVal = resTiles.First(); return resVal.Item2; } }