private List <RegionQuadtree <T> > getAllWhoShareEdge(QuadDirection direction, QuadType type) { QuadDirection[] dir; var op = QDO.OpSide(direction); if ((int)direction % 2 == 0) { dir = new QuadDirection[] { QDO.Quad(op, QDO.CSide(op)), QDO.Quad(op, QDO.CCSide(op)) }; } else { dir = new QuadDirection[] { QDO.OpSide(op) }; } if (type == QuadType.Grey) { throw new ArgumentException("Grey isn't allowed!"); } var share = new List <RegionQuadtree <T> >(); getAllWhoShareEdgeInternal(type, this, share, dir); return(share); }
public QuadTransformation(IImageProvider source, Size size, QuadDirection direction, EdgePoints edgePoints) : base(source) { Direction = direction; Size = size; EdgePoints = edgePoints; }
private static RegionQuadtree <T> soni(RegionQuadtree <T> p, QuadDirection q) { if (p != null && p.Type == QuadType.Grey) { return(p[q]); } return(p); }
public QuadNode this[QuadDirection direction] { get { switch (direction) { case QuadDirection.NW: return(_nodes[0]); case QuadDirection.NE: return(_nodes[1]); case QuadDirection.SW: return(_nodes[2]); case QuadDirection.SE: return(_nodes[3]); default: return(null); } } set { switch (direction) { case QuadDirection.NW: _nodes[0] = value; break; case QuadDirection.NE: _nodes[1] = value; break; case QuadDirection.SW: _nodes[2] = value; break; case QuadDirection.SE: _nodes[3] = value; break; } if (value != null) { value.Parent = this; } } }
private RegionQuadtree <T> this[QuadDirection d] { get { switch (d) { case QuadDirection.NorthWest: return(quads[0]); case QuadDirection.NorthEast: return(quads[1]); case QuadDirection.SouthEast: return(quads[2]); case QuadDirection.SouthWest: return(quads[3]); default: throw new ArgumentException("Not valid quad direction"); } } set { switch (d) { case QuadDirection.NorthWest: quads[0] = value; break; case QuadDirection.NorthEast: quads[1] = value; break; case QuadDirection.SouthEast: quads[2] = value; break; case QuadDirection.SouthWest: quads[3] = value; break; default: throw new ArgumentException("Not valid quad direction"); } } }
public static QuadDirection Quad(QuadDirection a, QuadDirection b) { QuadDirection max; QuadDirection min; if (a > b) { max = a; min = b; } else { max = b; min = a; } switch (min) { case QuadDirection.West: if (max == QuadDirection.North) { return(QuadDirection.NorthWest); } else { return(QuadDirection.SouthWest); } case QuadDirection.North: return(QuadDirection.NorthEast); case QuadDirection.East: return(QuadDirection.SouthEast); default: throw new ArgumentException(); } }
public static QuadDirection CCSide(QuadDirection a) { return(ccside[(int)a]); }
public static QuadDirection OpSide(QuadDirection a) { return(opside[(int)a]); }